3 class ApiConcurrencyTest
extends ApiTestCase
{
5 * @var Array of test users
9 // Prepare test environment
14 self
::$users['one'] = new ApiTestUser(
17 'api_test_userA@example.com',
21 self
::$users['two'] = new ApiTestUser(
24 'api_test_userB@example.com',
29 public function tearDown() {
33 function testLogin() {
35 $sessionArray = array();
37 foreach ( self
::$users as $key => $user ) {
41 'lgname' => $user->username
,
42 'lgpassword' => $user->password
44 list( $result, , $session ) = $this->doApiRequest( $params );
45 $this->assertArrayHasKey( "login", $result );
46 $this->assertArrayHasKey( "result", $result['login'] );
47 $this->assertEquals( "NeedToken", $result['login']['result'] );
48 $token = $result['login']['token'];
53 'lgname' => $user->username
,
54 'lgpassword' => $user->password
56 list( $result, , $session ) = $this->doApiRequest( $params, $session );
57 $this->assertArrayHasKey( "login", $result );
58 $this->assertArrayHasKey( "result", $result['login'] );
59 $this->assertEquals( "Success", $result['login']['result'] );
60 $this->assertArrayHasKey( 'lgtoken', $result['login'] );
62 $this->assertNotEmpty( $session, 'API Login must return a session' );
64 $sessionArray[$key] = $session;
75 function testCheckOut( $sessionArray ) {
79 $wgUser = self
::$users['one']->user
;
81 list( $result, , $session ) = $this->doApiRequestWithToken( array(
82 'action' => 'concurrency',
83 'ccaction' => 'checkout',
85 'resourcetype' => 'responding-to-moodbar-feedback'), $sessionArray['one'], self
::$users['one']->user
);
87 $this->assertEquals( "success", $result['concurrency']['result'] );
89 $wgUser = self
::$users['two']->user
;
91 list( $result, , $session ) = $this->doApiRequestWithToken( array(
92 'action' => 'concurrency',
93 'ccaction' => 'checkout',
95 'resourcetype' => 'responding-to-moodbar-feedback'), $sessionArray['two'], self
::$users['two']->user
);
97 $this->assertEquals( "failure", $result['concurrency']['result'] );
99 list( $result, , $session ) = $this->doApiRequestWithToken( array(
100 'action' => 'concurrency',
101 'ccaction' => 'checkout',
103 'resourcetype' => 'responding-to-moodbar-feedback'), $sessionArray['two'], self
::$users['two']->user
);
105 $this->assertEquals( "success", $result['concurrency']['result'] );
113 function testCheckIn( $sessionArray ) {
117 $wgUser = self
::$users['one']->user
;
119 list( $result, , $session ) = $this->doApiRequestWithToken( array(
120 'action' => 'concurrency',
121 'ccaction' => 'checkin',
123 'resourcetype' => 'responding-to-moodbar-feedback'), $sessionArray['one'], self
::$users['one']->user
);
125 $this->assertEquals( "success", $result['concurrency']['result'] );
127 list( $result, , $session ) = $this->doApiRequestWithToken( array(
128 'action' => 'concurrency',
129 'ccaction' => 'checkin',
131 'resourcetype' => 'responding-to-moodbar-feedback'), $sessionArray['one'], self
::$users['one']->user
);
133 $this->assertEquals( "failure", $result['concurrency']['result'] );
135 $wgUser = self
::$users['two']->user
;
137 list( $result, , $session ) = $this->doApiRequestWithToken( array(
138 'action' => 'concurrency',
139 'ccaction' => 'checkin',
141 'resourcetype' => 'responding-to-moodbar-feedback'), $sessionArray['two'], self
::$users['two']->user
);
143 $this->assertEquals( "success", $result['concurrency']['result'] );
150 function testInvalidCcacton( $sessionArray ) {
155 $wgUser = self
::$users['one']->user
;
157 list( $result, , $session ) = $this->doApiRequestWithToken( array(
158 'action' => 'concurrency',
159 'ccaction' => 'checkinX',
161 'resourcetype' => 'responding-to-moodbar-feedback'), $sessionArray['one'], self
::$users['one']->user
);
162 } catch ( UsageException
$e ) {
164 $this->assertEquals("Unrecognized value for parameter 'ccaction': checkinX",
167 $this->assertTrue( $exception, "Got exception" );