Merge "Drop cache interwiki"
[mediawiki.git] / tests / phpunit / includes / specials / SpecialUserLogoutTest.php
blob690f4ea7798a9209fd6981ec4e017451bcb50b76
1 <?php
3 use MediaWiki\Context\RequestContext;
4 use MediaWiki\Request\FauxRequest;
5 use MediaWiki\SpecialPage\SpecialPage;
6 use MediaWiki\Specials\SpecialUserLogout;
7 use MediaWiki\Tests\User\TempUser\TempUserTestTrait;
9 /**
10 * @covers \MediaWiki\Specials\SpecialUserLogout
11 * @group Database
13 class SpecialUserLogoutTest extends SpecialPageTestBase {
15 use TempUserTestTrait;
17 /**
18 * Returns a new instance of the special page under test.
20 * @return SpecialPage
22 protected function newSpecialPage() {
23 return new SpecialUserLogout( $this->getServiceContainer()->getTempUserConfig() );
26 public function testUserLogoutComplete() {
27 $oldName = __METHOD__;
28 $user = new TestUser( $oldName );
30 $session = RequestContext::getMain()->getRequest()->getSession();
31 $fauxRequest = new FauxRequest(
32 [ 'wpEditToken' => $session->getToken( 'logoutToken' ) ],
33 /* $wasPosted= */ true,
34 $session
37 $oldNameInHook = null;
38 $this->setTemporaryHook(
39 'UserLogoutComplete',
40 static function ( $user, $injected_html, $oldName ) use ( &$oldNameInHook ) {
41 $oldNameInHook = $oldName;
45 [ $html ] = $this->executeSpecialPage( '', $fauxRequest, 'qqx', $user->getUser(), true );
46 // Check that the page title and page content are as expected for a normal user logout
47 $this->assertStringContainsString( '(logouttext:', $html );
48 $this->assertStringContainsString( '(userlogout)', $html );
50 $this->assertEquals(
51 $oldName,
52 $oldNameInHook,
53 'old name in UserLogoutComplete hook was incorrect'
57 public function testExecuteForTemporaryAccount() {
58 $this->enableAutoCreateTempUser();
59 $user = $this->getServiceContainer()->getTempUserCreator()->create( null, new FauxRequest() )->getUser();
61 $session = RequestContext::getMain()->getRequest()->getSession();
62 $session->setUser( $user );
63 $fauxRequest = new FauxRequest( [ 'wpEditToken' => $session->getToken( 'logoutToken' ) ], true, $session );
65 [ $html ] = $this->executeSpecialPage( '', $fauxRequest, 'qqx', $user, true );
66 // Check that the page title and page content are as expected for the temporary account logout
67 $this->assertStringContainsString( '(logouttext-for-temporary-account:', $html );
68 $this->assertStringContainsString( '(templogout)', $html );
71 public function testViewForTemporaryAccountAfterApiLogout() {
72 $user = $this->getServiceContainer()->getUserFactory()->newAnonymous( '1.2.3.4' );
74 $fauxRequest = new FauxRequest( [ 'wasTempUser' => 1 ] );
76 [ $html ] = $this->executeSpecialPage( '', $fauxRequest, 'qqx', $user, true );
77 // Check that the page title and page content are as expected for the temporary account logout
78 $this->assertStringContainsString( '(logouttext-for-temporary-account:', $html );
79 $this->assertStringContainsString( '(templogout)', $html );
82 public function testViewForTemporaryAccount() {
83 $this->enableAutoCreateTempUser();
84 $user = $this->getServiceContainer()->getTempUserCreator()->create( null, new FauxRequest() )->getUser();
86 [ $html ] = $this->executeSpecialPage( '', null, 'qqx', $user, true );
87 // Check that the page title is as expected for a temporary account and that the submit button is present
88 $this->assertStringContainsString( '(templogout)', $html );
89 $this->assertStringContainsString( '(htmlform-submit)', $html );