Merge "Revert "selenium: add new message banner test to user spec""
[lhc/web/wiklou.git] / tests / phpunit / includes / api / ApiLoginTest.php
index bcd884e..ed4d683 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @group API
  * @group Database
@@ -17,16 +19,17 @@ class ApiLoginTest extends ApiTestCase {
                        'wsTokenSecrets' => [ 'login' => 'foobar' ],
                ];
                $data = $this->doApiRequest( [ 'action' => 'login',
-                       'lgname' => '', 'lgpassword' => self::$users['sysop']->password,
+                       'lgname' => '', 'lgpassword' => self::$users['sysop']->getPassword(),
                        'lgtoken' => (string)( new MediaWiki\Session\Token( 'foobar', '' ) )
                ], $session );
-               $this->assertEquals( 'NoName', $data[0]['login']['result'] );
+               $this->assertEquals( 'Failed', $data[0]['login']['result'] );
        }
 
        public function testApiLoginBadPass() {
                global $wgServer;
 
                $user = self::$users['sysop'];
+               $userName = $user->getUser()->getName();
                $user->getUser()->logout();
 
                if ( !isset( $wgServer ) ) {
@@ -34,7 +37,7 @@ class ApiLoginTest extends ApiTestCase {
                }
                $ret = $this->doApiRequest( [
                        "action" => "login",
-                       "lgname" => $user->username,
+                       "lgname" => $userName,
                        "lgpassword" => "bad",
                ] );
 
@@ -50,7 +53,7 @@ class ApiLoginTest extends ApiTestCase {
                        [
                                "action" => "login",
                                "lgtoken" => $token,
-                               "lgname" => $user->username,
+                               "lgname" => $userName,
                                "lgpassword" => "badnowayinhell",
                        ],
                        $ret[2]
@@ -61,7 +64,7 @@ class ApiLoginTest extends ApiTestCase {
                $this->assertNotInternalType( "bool", $result );
                $a = $result["login"]["result"];
 
-               $this->assertEquals( "WrongPass", $a );
+               $this->assertEquals( 'Failed', $a );
        }
 
        public function testApiLoginGoodPass() {
@@ -72,12 +75,14 @@ class ApiLoginTest extends ApiTestCase {
                }
 
                $user = self::$users['sysop'];
+               $userName = $user->getUser()->getName();
+               $password = $user->getPassword();
                $user->getUser()->logout();
 
                $ret = $this->doApiRequest( [
                                "action" => "login",
-                               "lgname" => $user->username,
-                               "lgpassword" => $user->password,
+                               "lgname" => $userName,
+                               "lgpassword" => $password,
                        ]
                );
 
@@ -93,8 +98,8 @@ class ApiLoginTest extends ApiTestCase {
                        [
                                "action" => "login",
                                "lgtoken" => $token,
-                               "lgname" => $user->username,
-                               "lgpassword" => $user->password,
+                               "lgname" => $userName,
+                               "lgpassword" => $password,
                        ],
                        $ret[2]
                );
@@ -120,12 +125,14 @@ class ApiLoginTest extends ApiTestCase {
                        $this->markTestIncomplete( 'This test needs $wgServer to be set in LocalSettings.php' );
                }
                $user = self::$users['sysop'];
+               $userName = $user->getUser()->getName();
+               $password = $user->getPassword();
 
                $req = MWHttpRequest::factory( self::$apiUrl . "?action=login&format=xml",
                        [ "method" => "POST",
                                "postData" => [
-                                       "lgname" => $user->username,
-                                       "lgpassword" => $user->password
+                                       "lgname" => $userName,
+                                       "lgpassword" => $password
                                ]
                        ],
                        __METHOD__
@@ -135,7 +142,7 @@ class ApiLoginTest extends ApiTestCase {
                libxml_use_internal_errors( true );
                $sxe = simplexml_load_string( $req->getContent() );
                $this->assertNotInternalType( "bool", $sxe );
-               $this->assertThat( $sxe, $this->isInstanceOf( "SimpleXMLElement" ) );
+               $this->assertThat( $sxe, $this->isInstanceOf( SimpleXMLElement::class ) );
                $this->assertNotInternalType( "null", $sxe->login[0] );
 
                $a = $sxe->login[0]->attributes()->result[0];
@@ -144,8 +151,8 @@ class ApiLoginTest extends ApiTestCase {
 
                $req->setData( [
                        "lgtoken" => $token,
-                       "lgname" => $user->username,
-                       "lgpassword" => $user->password ] );
+                       "lgname" => $userName,
+                       "lgpassword" => $password ] );
                $req->execute();
 
                $cj = $req->getCookieJar();
@@ -160,11 +167,14 @@ class ApiLoginTest extends ApiTestCase {
        }
 
        public function testRunLogin() {
-               $sysopUser = self::$users['sysop'];
+               $user = self::$users['sysop'];
+               $userName = $user->getUser()->getName();
+               $password = $user->getPassword();
+
                $data = $this->doApiRequest( [
                        'action' => 'login',
-                       'lgname' => $sysopUser->username,
-                       'lgpassword' => $sysopUser->password ] );
+                       'lgname' => $userName,
+                       'lgpassword' => $password ] );
 
                $this->assertArrayHasKey( "login", $data[0] );
                $this->assertArrayHasKey( "result", $data[0]['login'] );
@@ -174,13 +184,12 @@ class ApiLoginTest extends ApiTestCase {
                $data = $this->doApiRequest( [
                        'action' => 'login',
                        "lgtoken" => $token,
-                       "lgname" => $sysopUser->username,
-                       "lgpassword" => $sysopUser->password ], $data[2] );
+                       "lgname" => $userName,
+                       "lgpassword" => $password ], $data[2] );
 
                $this->assertArrayHasKey( "login", $data[0] );
                $this->assertArrayHasKey( "result", $data[0]['login'] );
                $this->assertEquals( "Success", $data[0]['login']['result'] );
-               $this->assertArrayHasKey( 'lgtoken', $data[0]['login'] );
        }
 
        public function testBotPassword() {
@@ -223,11 +232,11 @@ class ApiLoginTest extends ApiTestCase {
                $centralId = CentralIdLookup::factory()->centralIdFromLocalUser( $user->getUser() );
                $this->assertNotEquals( 0, $centralId, 'sanity check' );
 
+               $password = 'ngfhmjm64hv0854493hsj5nncjud2clk';
                $passwordFactory = new PasswordFactory();
                $passwordFactory->init( RequestContext::getMain()->getConfig() );
                // A is unsalted MD5 (thus fast) ... we don't care about security here, this is test only
-               $passwordFactory->setDefaultType( 'A' );
-               $pwhash = $passwordFactory->newFromPlaintext( 'foobaz' );
+               $passwordHash = $passwordFactory->newFromPlaintext( $password );
 
                $dbw = wfGetDB( DB_MASTER );
                $dbw->insert(
@@ -235,7 +244,7 @@ class ApiLoginTest extends ApiTestCase {
                        [
                                'bp_user' => $centralId,
                                'bp_app_id' => 'foo',
-                               'bp_password' => $pwhash->toString(),
+                               'bp_password' => $passwordHash->toString(),
                                'bp_token' => '',
                                'bp_restrictions' => MWRestrictions::newDefault()->toJson(),
                                'bp_grants' => '["test"]',
@@ -243,12 +252,12 @@ class ApiLoginTest extends ApiTestCase {
                        __METHOD__
                );
 
-               $lgName = $user->username . BotPassword::getSeparator() . 'foo';
+               $lgName = $user->getUser()->getName() . BotPassword::getSeparator() . 'foo';
 
                $ret = $this->doApiRequest( [
                        'action' => 'login',
                        'lgname' => $lgName,
-                       'lgpassword' => 'foobaz',
+                       'lgpassword' => $password,
                ] );
 
                $result = $ret[0];
@@ -263,7 +272,7 @@ class ApiLoginTest extends ApiTestCase {
                        'action' => 'login',
                        'lgtoken' => $token,
                        'lgname' => $lgName,
-                       'lgpassword' => 'foobaz',
+                       'lgpassword' => $password,
                ], $ret[2] );
 
                $result = $ret[0];