16 $logger = new \TestLogger();
17 $config = new \HashConfig();
19 $provider = $this->getMockForAbstractClass( SessionProvider::class );
20 $priv = \TestingAccessWrapper::newFromObject( $provider );
22 $provider->setConfig( $config );
23 $this->assertSame( $config, $priv->config );
24 $provider->setLogger( $logger );
25 $this->assertSame( $logger, $priv->logger );
26 $provider->setManager( $manager );
27 $this->assertSame( $manager, $priv->manager );
28 $this->assertSame( $manager, $provider->getManager() );
30 $provider->invalidateSessionsForUser(
new \
User );
32 $this->assertSame( [], $provider->getVaryHeaders() );
33 $this->assertSame( [], $provider->getVaryCookies() );
34 $this->assertSame(
null, $provider->suggestLoginUsername(
new \
FauxRequest ) );
36 $this->assertSame( get_class( $provider ), (
string)$provider );
38 $this->assertNull( $provider->getRememberUserDuration() );
40 $this->assertNull( $provider->whyNoSession() );
43 'id' =>
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
44 'provider' => $provider,
46 $metadata = [
'foo' ];
47 $this->assertTrue( $provider->refreshSessionInfo( $info,
new \
FauxRequest, $metadata ) );
48 $this->assertSame( [
'foo' ], $metadata );
60 $provider = $this->getMockBuilder( SessionProvider::class )
61 ->setMethods( [
'canChangeUser',
'persistsSessionId' ] )
62 ->getMockForAbstractClass();
63 $provider->expects( $this->any() )->method(
'persistsSessionId' )
64 ->will( $this->returnValue( $persistId ) );
65 $provider->expects( $this->any() )->method(
'canChangeUser' )
66 ->will( $this->returnValue( $persistUser ) );
67 $provider->setManager( $manager );
70 $info = $provider->newSessionInfo();
71 $this->assertNotNull( $info );
72 $this->assertFalse( $info->wasPersisted() );
73 $this->assertTrue( $info->isIdSafe() );
75 $id =
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
76 $info = $provider->newSessionInfo( $id );
77 $this->assertNotNull( $info );
78 $this->assertSame( $id, $info->getId() );
79 $this->assertFalse( $info->wasPersisted() );
80 $this->assertTrue( $info->isIdSafe() );
82 $this->assertNull( $provider->newSessionInfo() );
119 $provider = $this->getMockBuilder( SessionProvider::class )
120 ->setMethods( [
'canChangeUser',
'persistsSessionId' ] )
121 ->getMockForAbstractClass();
122 $provider->expects( $this->any() )->method(
'canChangeUser' )
123 ->will( $this->returnValue(
true ) );
124 $provider->preventSessionsForUser(
'Foo' );
126 $provider = $this->getMockBuilder( SessionProvider::class )
127 ->setMethods( [
'canChangeUser',
'persistsSessionId' ] )
128 ->getMockForAbstractClass();
129 $provider->expects( $this->any() )->method(
'canChangeUser' )
130 ->will( $this->returnValue(
false ) );
132 $provider->preventSessionsForUser(
'Foo' );
133 $this->fail(
'Expected exception not thrown' );
134 }
catch ( \BadMethodCallException $ex ) {
136 'MediaWiki\\Session\\SessionProvider::preventSessionsForUser must be implmented ' .
137 'when canChangeUser() is false',
145 $config = new \HashConfig( [
146 'SecretKey' =>
'Shhh!',
149 $provider = $this->getMockForAbstractClass( SessionProvider::class,
150 [],
'MockSessionProvider' );
151 $provider->setConfig( $config );
152 $priv = \TestingAccessWrapper::newFromObject( $provider );
154 $this->assertSame(
'eoq8cb1mg7j30ui5qolafps4hg29k5bb', $priv->hashToSessionId(
'foobar' ) );
155 $this->assertSame(
'4do8j7tfld1g8tte9jqp3csfgmulaun9',
156 $priv->hashToSessionId(
'foobar',
'secret' ) );
159 $priv->hashToSessionId( [] );
160 $this->fail(
'Expected exception not thrown' );
161 }
catch ( \InvalidArgumentException $ex ) {
163 '$data must be a string, array was passed',
168 $priv->hashToSessionId(
'',
false );
169 $this->fail(
'Expected exception not thrown' );
170 }
catch ( \InvalidArgumentException $ex ) {
172 '$key must be a string or null, boolean was passed',
189 $provider = $this->getMockForAbstractClass( SessionProvider::class );
193 $provider->getAllowedUserRights( $backend );
194 $this->fail(
'Expected exception not thrown' );
195 }
catch ( \InvalidArgumentException $ex ) {
197 'Backend\'s provider isn\'t $this',
202 \TestingAccessWrapper::newFromObject( $backend )->provider = $provider;
203 $this->assertNull( $provider->getAllowedUserRights( $backend ) );