Merge "Add redirect=no only to redirects on redirect pages"
[lhc/web/wiklou.git] / tests / phpunit / includes / session / BotPasswordSessionProviderTest.php
index b40a05c..d76d9df 100644 (file)
@@ -62,7 +62,7 @@ class BotPasswordSessionProviderTest extends MediaWikiTestCase {
                ] );
        }
 
-       public function addDBData() {
+       public function addDBDataOnce() {
                $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
@@ -154,7 +154,7 @@ class BotPasswordSessionProviderTest extends MediaWikiTestCase {
        public function testBasics() {
                $provider = $this->getProvider();
 
-               $this->assertTrue( $provider->persistsSessionID() );
+               $this->assertTrue( $provider->persistsSessionId() );
                $this->assertFalse( $provider->canChangeUser() );
 
                $this->assertNull( $provider->newSessionInfo() );
@@ -281,4 +281,58 @@ class BotPasswordSessionProviderTest extends MediaWikiTestCase {
                $this->assertSame( [], $logger->getBuffer() );
                $this->assertEquals( $dataMD + [ 'rights' => [ 'read' ] ], $metadata );
        }
+
+       public function testGetAllowedUserRights() {
+               $logger = new \TestLogger( true );
+               $provider = $this->getProvider();
+               $provider->setLogger( $logger );
+
+               $backend = TestUtils::getDummySessionBackend();
+               $backendPriv = \TestingAccessWrapper::newFromObject( $backend );
+
+               try {
+                       $provider->getAllowedUserRights( $backend );
+                       $this->fail( 'Expected exception not thrown' );
+               } catch ( \InvalidArgumentException $ex ) {
+                       $this->assertSame( 'Backend\'s provider isn\'t $this', $ex->getMessage() );
+               }
+
+               $backendPriv->provider = $provider;
+               $backendPriv->providerMetadata = [ 'rights' => [ 'foo', 'bar', 'baz' ] ];
+               $this->assertSame( [ 'foo', 'bar', 'baz' ], $provider->getAllowedUserRights( $backend ) );
+               $this->assertSame( [], $logger->getBuffer() );
+
+               $backendPriv->providerMetadata = [ 'foo' => 'bar' ];
+               $this->assertSame( [], $provider->getAllowedUserRights( $backend ) );
+               $this->assertSame( [
+                       [
+                               LogLevel::DEBUG,
+                               'MediaWiki\\Session\\BotPasswordSessionProvider::getAllowedUserRights: ' .
+                                       'No provider metadata, returning no rights allowed'
+                       ]
+               ], $logger->getBuffer() );
+               $logger->clearBuffer();
+
+               $backendPriv->providerMetadata = [ 'rights' => 'bar' ];
+               $this->assertSame( [], $provider->getAllowedUserRights( $backend ) );
+               $this->assertSame( [
+                       [
+                               LogLevel::DEBUG,
+                               'MediaWiki\\Session\\BotPasswordSessionProvider::getAllowedUserRights: ' .
+                                       'No provider metadata, returning no rights allowed'
+                       ]
+               ], $logger->getBuffer() );
+               $logger->clearBuffer();
+
+               $backendPriv->providerMetadata = null;
+               $this->assertSame( [], $provider->getAllowedUserRights( $backend ) );
+               $this->assertSame( [
+                       [
+                               LogLevel::DEBUG,
+                               'MediaWiki\\Session\\BotPasswordSessionProvider::getAllowedUserRights: ' .
+                                       'No provider metadata, returning no rights allowed'
+                       ]
+               ], $logger->getBuffer() );
+               $logger->clearBuffer();
+       }
 }