X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fapi%2FApiLogoutTest.php;h=8254fdba7d94536135610d8d8e63dd15492863ce;hb=8e3bcb67f486defd13e0e6885e7641acd7620dc0;hp=fcdb745aaa355d29c54301f75a1853940e157824;hpb=9045e4b17ffc1023564008053554312b706888af;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/api/ApiLogoutTest.php b/tests/phpunit/includes/api/ApiLogoutTest.php index fcdb745aaa..8254fdba7d 100644 --- a/tests/phpunit/includes/api/ApiLogoutTest.php +++ b/tests/phpunit/includes/api/ApiLogoutTest.php @@ -8,33 +8,53 @@ * @covers ApiLogout */ class ApiLogoutTest extends ApiTestCase { - public function setUp() { + + protected function setUp() { + global $wgRequest, $wgUser; + parent::setUp(); + + // Link the user to the Session properly so User::doLogout() doesn't complain. + $wgRequest->getSession()->setUser( $wgUser ); + $wgUser = User::newFromSession( $wgRequest ); + $this->apiContext->setUser( $wgUser ); } public function testUserLogoutBadToken() { + global $wgUser; + + $this->setExpectedApiException( 'apierror-badtoken' ); + try { $token = 'invalid token'; - $retLogout = $this->doUserLogout( $token ); - } - catch ( ApiUsageException $e ) { - $exceptionMsg = $e->getMessage(); + $this->doUserLogout( $token ); + } finally { + $this->assertTrue( $wgUser->isLoggedIn(), 'not logged out' ); } - - $this->assertSame( "Invalid CSRF token.", $exceptionMsg ); } public function testUserLogout() { - // TODO: there has to be a cleaner way to make User::doLogout happy global $wgUser; - $wgUser = User::newFromId( '127.0.0.1' ); + $this->assertTrue( $wgUser->isLoggedIn(), 'sanity check' ); $token = $this->getUserCsrfTokenFromApi(); - $retLogout = $this->doUserLogout( $token ); + $this->doUserLogout( $token ); + $this->assertFalse( $wgUser->isLoggedIn() ); + } + + public function testUserLogoutWithWebToken() { + global $wgUser, $wgRequest; + + $this->assertTrue( $wgUser->isLoggedIn(), 'sanity check' ); + + // Logic copied from SkinTemplate. + $token = $wgUser->getEditToken( 'logoutToken', $wgRequest ); + + $this->doUserLogout( $token ); $this->assertFalse( $wgUser->isLoggedIn() ); } - public function getUserCsrfTokenFromApi() { + private function getUserCsrfTokenFromApi() { $retToken = $this->doApiRequest( [ 'action' => 'query', 'meta' => 'tokens', @@ -46,7 +66,7 @@ class ApiLogoutTest extends ApiTestCase { return $retToken[0]['query']['tokens']['csrftoken']; } - public function doUserLogout( $logoutToken ) { + private function doUserLogout( $logoutToken ) { return $this->doApiRequest( [ 'action' => 'logout', 'token' => $logoutToken