class CookieSessionProviderTest extends MediaWikiTestCase {
private function getConfig() {
- global $wgCookieExpiration;
- return new \HashConfig( array(
+ return new \HashConfig( [
'CookiePrefix' => 'CookiePrefix',
'CookiePath' => 'CookiePath',
'CookieDomain' => 'CookieDomain',
'CookieSecure' => true,
'CookieHttpOnly' => true,
'SessionName' => false,
- 'ExtendedLoginCookies' => array( 'UserID', 'Token' ),
- 'ExtendedLoginCookieExpiration' => $wgCookieExpiration * 2,
- ) );
+ 'CookieExpiration' => 100,
+ 'ExtendedLoginCookies' => [ 'UserID', 'Token' ],
+ 'ExtendedLoginCookieExpiration' => 200,
+ ] );
}
public function testConstructor() {
}
try {
- new CookieSessionProvider( array( 'priority' => 'foo' ) );
+ new CookieSessionProvider( [ 'priority' => 'foo' ] );
$this->fail( 'Expected exception not thrown' );
} catch ( \InvalidArgumentException $ex ) {
$this->assertSame(
);
}
try {
- new CookieSessionProvider( array( 'priority' => SessionInfo::MIN_PRIORITY - 1 ) );
+ new CookieSessionProvider( [ 'priority' => SessionInfo::MIN_PRIORITY - 1 ] );
$this->fail( 'Expected exception not thrown' );
} catch ( \InvalidArgumentException $ex ) {
$this->assertSame(
);
}
try {
- new CookieSessionProvider( array( 'priority' => SessionInfo::MAX_PRIORITY + 1 ) );
+ new CookieSessionProvider( [ 'priority' => SessionInfo::MAX_PRIORITY + 1 ] );
$this->fail( 'Expected exception not thrown' );
} catch ( \InvalidArgumentException $ex ) {
$this->assertSame(
}
try {
- new CookieSessionProvider( array( 'priority' => 1, 'cookieOptions' => null ) );
+ new CookieSessionProvider( [ 'priority' => 1, 'cookieOptions' => null ] );
$this->fail( 'Expected exception not thrown' );
} catch ( \InvalidArgumentException $ex ) {
$this->assertSame(
$config = $this->getConfig();
$p = \TestingAccessWrapper::newFromObject(
- new CookieSessionProvider( array( 'priority' => 1 ) )
+ new CookieSessionProvider( [ 'priority' => 1 ] )
);
$p->setLogger( new \TestLogger() );
$p->setConfig( $config );
$this->assertEquals( 1, $p->priority );
- $this->assertEquals( array(
+ $this->assertEquals( [
'callUserSetCookiesHook' => false,
'sessionName' => 'CookiePrefix_session',
- ), $p->params );
- $this->assertEquals( array(
+ ], $p->params );
+ $this->assertEquals( [
'prefix' => 'CookiePrefix',
'path' => 'CookiePath',
'domain' => 'CookieDomain',
'secure' => true,
'httpOnly' => true,
- ), $p->cookieOptions );
+ ], $p->cookieOptions );
$config->set( 'SessionName', 'SessionName' );
$p = \TestingAccessWrapper::newFromObject(
- new CookieSessionProvider( array( 'priority' => 3 ) )
+ new CookieSessionProvider( [ 'priority' => 3 ] )
);
$p->setLogger( new \TestLogger() );
$p->setConfig( $config );
$this->assertEquals( 3, $p->priority );
- $this->assertEquals( array(
+ $this->assertEquals( [
'callUserSetCookiesHook' => false,
'sessionName' => 'SessionName',
- ), $p->params );
- $this->assertEquals( array(
+ ], $p->params );
+ $this->assertEquals( [
'prefix' => 'CookiePrefix',
'path' => 'CookiePath',
'domain' => 'CookieDomain',
'secure' => true,
'httpOnly' => true,
- ), $p->cookieOptions );
+ ], $p->cookieOptions );
- $p = \TestingAccessWrapper::newFromObject( new CookieSessionProvider( array(
+ $p = \TestingAccessWrapper::newFromObject( new CookieSessionProvider( [
'priority' => 10,
'callUserSetCookiesHook' => true,
- 'cookieOptions' => array(
+ 'cookieOptions' => [
'prefix' => 'XPrefix',
'path' => 'XPath',
'domain' => 'XDomain',
'secure' => 'XSecure',
'httpOnly' => 'XHttpOnly',
- ),
+ ],
'sessionName' => 'XSession',
- ) ) );
+ ] ) );
$p->setLogger( new \TestLogger() );
$p->setConfig( $config );
$this->assertEquals( 10, $p->priority );
- $this->assertEquals( array(
+ $this->assertEquals( [
'callUserSetCookiesHook' => true,
'sessionName' => 'XSession',
- ), $p->params );
- $this->assertEquals( array(
+ ], $p->params );
+ $this->assertEquals( [
'prefix' => 'XPrefix',
'path' => 'XPath',
'domain' => 'XDomain',
'secure' => 'XSecure',
'httpOnly' => 'XHttpOnly',
- ), $p->cookieOptions );
+ ], $p->cookieOptions );
}
public function testBasics() {
- $provider = new CookieSessionProvider( array( 'priority' => 10 ) );
+ $provider = new CookieSessionProvider( [ 'priority' => 10 ] );
- $this->assertTrue( $provider->persistsSessionID() );
+ $this->assertTrue( $provider->persistsSessionId() );
$this->assertTrue( $provider->canChangeUser() );
$msg = $provider->whyNoSession();
}
public function testProvideSessionInfo() {
- $params = array(
+ $params = [
'priority' => 20,
'sessionName' => 'session',
- 'cookieOptions' => array( 'prefix' => 'x' ),
- );
+ 'cookieOptions' => [ 'prefix' => 'x' ],
+ ];
$provider = new CookieSessionProvider( $params );
$logger = new \TestLogger( true );
$provider->setLogger( $logger );
$provider->setConfig( $this->getConfig() );
$provider->setManager( new SessionManager() );
- $user = User::newFromName( 'UTSysop' );
+ $user = static::getTestSysop()->getUser();
$id = $user->getId();
$name = $user->getName();
$token = $user->getToken( true );
$request = new \FauxRequest();
$info = $provider->provideSessionInfo( $request );
$this->assertNull( $info );
- $this->assertSame( array(), $logger->getBuffer() );
+ $this->assertSame( [], $logger->getBuffer() );
$logger->clearBuffer();
// Session key only
$request = new \FauxRequest();
- $request->setCookies( array(
+ $request->setCookies( [
'session' => $sessionId,
- ), '' );
+ ], '' );
$info = $provider->provideSessionInfo( $request );
$this->assertNotNull( $info );
$this->assertSame( $params['priority'], $info->getPriority() );
$this->assertSame( 0, $info->getUserInfo()->getId() );
$this->assertNull( $info->getUserInfo()->getName() );
$this->assertFalse( $info->forceHTTPS() );
- $this->assertSame( array(
- array(
+ $this->assertSame( [
+ [
LogLevel::DEBUG,
'Session "{session}" requested without UserID cookie',
- ),
- ), $logger->getBuffer() );
+ ],
+ ], $logger->getBuffer() );
$logger->clearBuffer();
// User, no session key
$request = new \FauxRequest();
- $request->setCookies( array(
+ $request->setCookies( [
'xUserID' => $id,
'xToken' => $token,
- ), '' );
+ ], '' );
$info = $provider->provideSessionInfo( $request );
$this->assertNotNull( $info );
$this->assertSame( $params['priority'], $info->getPriority() );
$this->assertSame( $id, $info->getUserInfo()->getId() );
$this->assertSame( $name, $info->getUserInfo()->getName() );
$this->assertFalse( $info->forceHTTPS() );
- $this->assertSame( array(), $logger->getBuffer() );
+ $this->assertSame( [], $logger->getBuffer() );
$logger->clearBuffer();
// User and session key
$request = new \FauxRequest();
- $request->setCookies( array(
+ $request->setCookies( [
'session' => $sessionId,
'xUserID' => $id,
'xToken' => $token,
- ), '' );
+ ], '' );
$info = $provider->provideSessionInfo( $request );
$this->assertNotNull( $info );
$this->assertSame( $params['priority'], $info->getPriority() );
$this->assertSame( $id, $info->getUserInfo()->getId() );
$this->assertSame( $name, $info->getUserInfo()->getName() );
$this->assertFalse( $info->forceHTTPS() );
- $this->assertSame( array(), $logger->getBuffer() );
+ $this->assertSame( [], $logger->getBuffer() );
$logger->clearBuffer();
// User with bad token
$request = new \FauxRequest();
- $request->setCookies( array(
+ $request->setCookies( [
'session' => $sessionId,
'xUserID' => $id,
'xToken' => 'BADTOKEN',
- ), '' );
+ ], '' );
$info = $provider->provideSessionInfo( $request );
$this->assertNull( $info );
- $this->assertSame( array(
- array(
+ $this->assertSame( [
+ [
LogLevel::WARNING,
'Session "{session}" requested with invalid Token cookie.'
- ),
- ), $logger->getBuffer() );
+ ],
+ ], $logger->getBuffer() );
$logger->clearBuffer();
// User id with no token
$request = new \FauxRequest();
- $request->setCookies( array(
+ $request->setCookies( [
'session' => $sessionId,
'xUserID' => $id,
- ), '' );
+ ], '' );
$info = $provider->provideSessionInfo( $request );
$this->assertNotNull( $info );
$this->assertSame( $params['priority'], $info->getPriority() );
$this->assertSame( $id, $info->getUserInfo()->getId() );
$this->assertSame( $name, $info->getUserInfo()->getName() );
$this->assertFalse( $info->forceHTTPS() );
- $this->assertSame( array(), $logger->getBuffer() );
+ $this->assertSame( [], $logger->getBuffer() );
$logger->clearBuffer();
$request = new \FauxRequest();
- $request->setCookies( array(
+ $request->setCookies( [
'xUserID' => $id,
- ), '' );
+ ], '' );
$info = $provider->provideSessionInfo( $request );
$this->assertNull( $info );
- $this->assertSame( array(), $logger->getBuffer() );
+ $this->assertSame( [], $logger->getBuffer() );
$logger->clearBuffer();
// User and session key, with forceHTTPS flag
$request = new \FauxRequest();
- $request->setCookies( array(
+ $request->setCookies( [
'session' => $sessionId,
'xUserID' => $id,
'xToken' => $token,
'forceHTTPS' => true,
- ), '' );
+ ], '' );
$info = $provider->provideSessionInfo( $request );
$this->assertNotNull( $info );
$this->assertSame( $params['priority'], $info->getPriority() );
$this->assertSame( $id, $info->getUserInfo()->getId() );
$this->assertSame( $name, $info->getUserInfo()->getName() );
$this->assertTrue( $info->forceHTTPS() );
- $this->assertSame( array(), $logger->getBuffer() );
+ $this->assertSame( [], $logger->getBuffer() );
$logger->clearBuffer();
// Invalid user id
$request = new \FauxRequest();
- $request->setCookies( array(
+ $request->setCookies( [
'session' => $sessionId,
'xUserID' => '-1',
- ), '' );
+ ], '' );
$info = $provider->provideSessionInfo( $request );
$this->assertNull( $info );
- $this->assertSame( array(), $logger->getBuffer() );
+ $this->assertSame( [], $logger->getBuffer() );
$logger->clearBuffer();
// User id with matching name
$request = new \FauxRequest();
- $request->setCookies( array(
+ $request->setCookies( [
'session' => $sessionId,
'xUserID' => $id,
'xUserName' => $name,
- ), '' );
+ ], '' );
$info = $provider->provideSessionInfo( $request );
$this->assertNotNull( $info );
$this->assertSame( $params['priority'], $info->getPriority() );
$this->assertSame( $id, $info->getUserInfo()->getId() );
$this->assertSame( $name, $info->getUserInfo()->getName() );
$this->assertFalse( $info->forceHTTPS() );
- $this->assertSame( array(), $logger->getBuffer() );
+ $this->assertSame( [], $logger->getBuffer() );
$logger->clearBuffer();
// User id with wrong name
$request = new \FauxRequest();
- $request->setCookies( array(
+ $request->setCookies( [
'session' => $sessionId,
'xUserID' => $id,
'xUserName' => 'Wrong',
- ), '' );
+ ], '' );
$info = $provider->provideSessionInfo( $request );
$this->assertNull( $info );
- $this->assertSame( array(
- array(
+ $this->assertSame( [
+ [
LogLevel::WARNING,
'Session "{session}" requested with mismatched UserID and UserName cookies.',
- ),
- ), $logger->getBuffer() );
+ ],
+ ], $logger->getBuffer() );
$logger->clearBuffer();
}
public function testGetVaryCookies() {
- $provider = new CookieSessionProvider( array(
+ $provider = new CookieSessionProvider( [
'priority' => 1,
'sessionName' => 'MySessionName',
- 'cookieOptions' => array( 'prefix' => 'MyCookiePrefix' ),
- ) );
- $this->assertArrayEquals( array(
+ 'cookieOptions' => [ 'prefix' => 'MyCookiePrefix' ],
+ ] );
+ $this->assertArrayEquals( [
'MyCookiePrefixToken',
'MyCookiePrefixLoggedOut',
'MySessionName',
'forceHTTPS',
- ), $provider->getVaryCookies() );
+ ], $provider->getVaryCookies() );
}
public function testSuggestLoginUsername() {
- $provider = new CookieSessionProvider( array(
+ $provider = new CookieSessionProvider( [
'priority' => 1,
'sessionName' => 'MySessionName',
- 'cookieOptions' => array( 'prefix' => 'x' ),
- ) );
+ 'cookieOptions' => [ 'prefix' => 'x' ],
+ ] );
$request = new \FauxRequest();
$this->assertEquals( null, $provider->suggestLoginUsername( $request ) );
- $request->setCookies( array(
+ $request->setCookies( [
'xUserName' => 'Example',
- ), '' );
+ ], '' );
$this->assertEquals( 'Example', $provider->suggestLoginUsername( $request ) );
}
public function testPersistSession() {
- $this->setMwGlobals( array( 'wgCookieExpiration' => 100 ) );
-
- $provider = new CookieSessionProvider( array(
+ $provider = new CookieSessionProvider( [
'priority' => 1,
'sessionName' => 'MySessionName',
'callUserSetCookiesHook' => false,
- 'cookieOptions' => array( 'prefix' => 'x' ),
- ) );
+ 'cookieOptions' => [ 'prefix' => 'x' ],
+ ] );
$config = $this->getConfig();
$provider->setLogger( new \TestLogger() );
$provider->setConfig( $config );
$sessionId = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
$store = new TestBagOStuff();
- $user = User::newFromName( 'UTSysop' );
+ $user = static::getTestSysop()->getUser();
$anon = new User;
$backend = new SessionBackend(
new SessionId( $sessionId ),
- new SessionInfo( SessionInfo::MIN_PRIORITY, array(
+ new SessionInfo( SessionInfo::MIN_PRIORITY, [
'provider' => $provider,
'id' => $sessionId,
'persisted' => true,
'idIsSafe' => true,
- ) ),
+ ] ),
$store,
new \Psr\Log\NullLogger(),
10
);
\TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false;
- $mock = $this->getMock( 'stdClass', array( 'onUserSetCookies' ) );
+ $mock = $this->getMock( 'stdClass', [ 'onUserSetCookies' ] );
$mock->expects( $this->never() )->method( 'onUserSetCookies' );
- $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'UserSetCookies' => array( $mock ) ) );
+ $this->mergeMwGlobalArrayValue( 'wgHooks', [ 'UserSetCookies' => [ $mock ] ] );
// Anonymous user
$backend->setUser( $anon );
$this->assertSame( null, $request->response()->getCookie( 'xUserName' ) );
$this->assertSame( '', $request->response()->getCookie( 'xToken' ) );
$this->assertSame( '', $request->response()->getCookie( 'forceHTTPS' ) );
- $this->assertSame( array(), $backend->getData() );
+ $this->assertSame( [], $backend->getData() );
// Logged-in user, no remember
$backend->setUser( $user );
$this->assertSame( $user->getName(), $request->response()->getCookie( 'xUserName' ) );
$this->assertSame( '', $request->response()->getCookie( 'xToken' ) );
$this->assertSame( '', $request->response()->getCookie( 'forceHTTPS' ) );
- $this->assertSame( array(), $backend->getData() );
+ $this->assertSame( [], $backend->getData() );
// Logged-in user, remember
$backend->setUser( $user );
$this->assertSame( $user->getName(), $request->response()->getCookie( 'xUserName' ) );
$this->assertSame( $user->getToken(), $request->response()->getCookie( 'xToken' ) );
$this->assertSame( 'true', $request->response()->getCookie( 'forceHTTPS' ) );
- $this->assertSame( array(), $backend->getData() );
+ $this->assertSame( [], $backend->getData() );
}
/**
* @param bool $remember
*/
public function testCookieData( $secure, $remember ) {
- $this->setMwGlobals( array(
- 'wgCookieExpiration' => 100,
+ $this->setMwGlobals( [
'wgSecureLogin' => false,
- ) );
+ ] );
- $provider = new CookieSessionProvider( array(
+ $provider = new CookieSessionProvider( [
'priority' => 1,
'sessionName' => 'MySessionName',
'callUserSetCookiesHook' => false,
- 'cookieOptions' => array( 'prefix' => 'x' ),
- ) );
+ 'cookieOptions' => [ 'prefix' => 'x' ],
+ ] );
$config = $this->getConfig();
$config->set( 'CookieSecure', $secure );
$provider->setLogger( new \TestLogger() );
$provider->setManager( SessionManager::singleton() );
$sessionId = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
- $user = User::newFromName( 'UTSysop' );
+ $user = static::getTestSysop()->getUser();
$this->assertFalse( $user->requiresHTTPS(), 'sanity check' );
$backend = new SessionBackend(
new SessionId( $sessionId ),
- new SessionInfo( SessionInfo::MIN_PRIORITY, array(
+ new SessionInfo( SessionInfo::MIN_PRIORITY, [
'provider' => $provider,
'id' => $sessionId,
'persisted' => true,
'idIsSafe' => true,
- ) ),
+ ] ),
new TestBagOStuff(),
new \Psr\Log\NullLogger(),
10
$time = time();
$provider->persistSession( $backend, $request );
- $defaults = array(
+ $defaults = [
'expire' => (int)100,
'path' => $config->get( 'CookiePath' ),
'domain' => $config->get( 'CookieDomain' ),
'secure' => $secure,
'httpOnly' => $config->get( 'CookieHttpOnly' ),
'raw' => false,
- );
+ ];
$extendedExpiry = $config->get( 'ExtendedLoginCookieExpiration' );
$extendedExpiry = (int)( $extendedExpiry === null ? 0 : $extendedExpiry );
- $this->assertEquals( array( 'UserID', 'Token' ), $config->get( 'ExtendedLoginCookies' ),
+ $this->assertEquals( [ 'UserID', 'Token' ], $config->get( 'ExtendedLoginCookies' ),
'sanity check' );
- $expect = array(
- 'MySessionName' => array(
+ $expect = [
+ 'MySessionName' => [
'value' => (string)$sessionId,
'expire' => 0,
- ) + $defaults,
- 'xUserID' => array(
+ ] + $defaults,
+ 'xUserID' => [
'value' => (string)$user->getId(),
'expire' => $extendedExpiry,
- ) + $defaults,
- 'xUserName' => array(
+ ] + $defaults,
+ 'xUserName' => [
'value' => $user->getName(),
- ) + $defaults,
- 'xToken' => array(
+ ] + $defaults,
+ 'xToken' => [
'value' => $remember ? $user->getToken() : '',
'expire' => $remember ? $extendedExpiry : -31536000,
- ) + $defaults,
- 'forceHTTPS' => array(
+ ] + $defaults,
+ 'forceHTTPS' => [
'value' => $secure ? 'true' : '',
'secure' => false,
'expire' => $secure ? $remember ? $defaults['expire'] : 0 : -31536000,
- ) + $defaults,
- );
+ ] + $defaults,
+ ];
foreach ( $expect as $key => $value ) {
$actual = $request->response()->getCookieData( $key );
if ( $actual && $actual['expire'] > 0 ) {
}
public static function provideCookieData() {
- return array(
- array( false, false ),
- array( false, true ),
- array( true, false ),
- array( true, true ),
- );
+ return [
+ [ false, false ],
+ [ false, true ],
+ [ true, false ],
+ [ true, true ],
+ ];
}
protected function getSentRequest() {
- $sentResponse = $this->getMock( 'FauxResponse', array( 'headersSent', 'setCookie', 'header' ) );
+ $sentResponse = $this->getMock( 'FauxResponse', [ 'headersSent', 'setCookie', 'header' ] );
$sentResponse->expects( $this->any() )->method( 'headersSent' )
->will( $this->returnValue( true ) );
$sentResponse->expects( $this->never() )->method( 'setCookie' );
$sentResponse->expects( $this->never() )->method( 'header' );
- $sentRequest = $this->getMock( 'FauxRequest', array( 'response' ) );
+ $sentRequest = $this->getMock( 'FauxRequest', [ 'response' ] );
$sentRequest->expects( $this->any() )->method( 'response' )
->will( $this->returnValue( $sentResponse ) );
return $sentRequest;
}
public function testPersistSessionWithHook() {
- $provider = new CookieSessionProvider( array(
+ $provider = new CookieSessionProvider( [
'priority' => 1,
'sessionName' => 'MySessionName',
'callUserSetCookiesHook' => true,
- 'cookieOptions' => array( 'prefix' => 'x' ),
- ) );
+ 'cookieOptions' => [ 'prefix' => 'x' ],
+ ] );
$provider->setLogger( new \Psr\Log\NullLogger() );
$provider->setConfig( $this->getConfig() );
$provider->setManager( SessionManager::singleton() );
$sessionId = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
$store = new TestBagOStuff();
- $user = User::newFromName( 'UTSysop' );
+ $user = static::getTestSysop()->getUser();
$anon = new User;
$backend = new SessionBackend(
new SessionId( $sessionId ),
- new SessionInfo( SessionInfo::MIN_PRIORITY, array(
+ new SessionInfo( SessionInfo::MIN_PRIORITY, [
'provider' => $provider,
'id' => $sessionId,
'persisted' => true,
'idIsSafe' => true,
- ) ),
+ ] ),
$store,
new \Psr\Log\NullLogger(),
10
\TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false;
// Anonymous user
- $mock = $this->getMock( 'stdClass', array( 'onUserSetCookies' ) );
+ $mock = $this->getMock( 'stdClass', [ 'onUserSetCookies' ] );
$mock->expects( $this->never() )->method( 'onUserSetCookies' );
- $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'UserSetCookies' => array( $mock ) ) );
+ $this->mergeMwGlobalArrayValue( 'wgHooks', [ 'UserSetCookies' => [ $mock ] ] );
$backend->setUser( $anon );
$backend->setRememberUser( true );
$backend->setForceHTTPS( false );
$this->assertSame( null, $request->response()->getCookie( 'xUserName' ) );
$this->assertSame( '', $request->response()->getCookie( 'xToken' ) );
$this->assertSame( '', $request->response()->getCookie( 'forceHTTPS' ) );
- $this->assertSame( array(), $backend->getData() );
+ $this->assertSame( [], $backend->getData() );
$provider->persistSession( $backend, $this->getSentRequest() );
// Logged-in user, no remember
- $mock = $this->getMock( __CLASS__, array( 'onUserSetCookies' ) );
+ $mock = $this->getMock( __CLASS__, [ 'onUserSetCookies' ] );
$mock->expects( $this->once() )->method( 'onUserSetCookies' )
->will( $this->returnCallback( function ( $u, &$sessionData, &$cookies ) use ( $user ) {
$this->assertSame( $user, $u );
- $this->assertEquals( array(
+ $this->assertEquals( [
'wsUserID' => $user->getId(),
'wsUserName' => $user->getName(),
'wsToken' => $user->getToken(),
- ), $sessionData );
- $this->assertEquals( array(
+ ], $sessionData );
+ $this->assertEquals( [
'UserID' => $user->getId(),
'UserName' => $user->getName(),
'Token' => false,
- ), $cookies );
+ ], $cookies );
$sessionData['foo'] = 'foo!';
$cookies['bar'] = 'bar!';
return true;
} ) );
- $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'UserSetCookies' => array( $mock ) ) );
+ $this->mergeMwGlobalArrayValue( 'wgHooks', [ 'UserSetCookies' => [ $mock ] ] );
$backend->setUser( $user );
$backend->setRememberUser( false );
$backend->setForceHTTPS( false );
$this->assertSame( '', $request->response()->getCookie( 'forceHTTPS' ) );
$this->assertSame( 'bar!', $request->response()->getCookie( 'xbar' ) );
$this->assertSame( (string)$loggedOut, $request->response()->getCookie( 'xLoggedOut' ) );
- $this->assertEquals( array(
+ $this->assertEquals( [
'wsUserID' => $user->getId(),
'wsUserName' => $user->getName(),
'wsToken' => $user->getToken(),
'foo' => 'foo!',
- ), $backend->getData() );
+ ], $backend->getData() );
$provider->persistSession( $backend, $this->getSentRequest() );
// Logged-in user, remember
- $mock = $this->getMock( __CLASS__, array( 'onUserSetCookies' ) );
+ $mock = $this->getMock( __CLASS__, [ 'onUserSetCookies' ] );
$mock->expects( $this->once() )->method( 'onUserSetCookies' )
->will( $this->returnCallback( function ( $u, &$sessionData, &$cookies ) use ( $user ) {
$this->assertSame( $user, $u );
- $this->assertEquals( array(
+ $this->assertEquals( [
'wsUserID' => $user->getId(),
'wsUserName' => $user->getName(),
'wsToken' => $user->getToken(),
- ), $sessionData );
- $this->assertEquals( array(
+ ], $sessionData );
+ $this->assertEquals( [
'UserID' => $user->getId(),
'UserName' => $user->getName(),
'Token' => $user->getToken(),
- ), $cookies );
+ ], $cookies );
$sessionData['foo'] = 'foo 2!';
$cookies['bar'] = 'bar 2!';
return true;
} ) );
- $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'UserSetCookies' => array( $mock ) ) );
+ $this->mergeMwGlobalArrayValue( 'wgHooks', [ 'UserSetCookies' => [ $mock ] ] );
$backend->setUser( $user );
$backend->setRememberUser( true );
$backend->setForceHTTPS( true );
$this->assertSame( 'true', $request->response()->getCookie( 'forceHTTPS' ) );
$this->assertSame( 'bar 2!', $request->response()->getCookie( 'xbar' ) );
$this->assertSame( null, $request->response()->getCookie( 'xLoggedOut' ) );
- $this->assertEquals( array(
+ $this->assertEquals( [
'wsUserID' => $user->getId(),
'wsUserName' => $user->getName(),
'wsToken' => $user->getToken(),
'foo' => 'foo 2!',
- ), $backend->getData() );
+ ], $backend->getData() );
$provider->persistSession( $backend, $this->getSentRequest() );
}
public function testUnpersistSession() {
- $provider = new CookieSessionProvider( array(
+ $provider = new CookieSessionProvider( [
'priority' => 1,
'sessionName' => 'MySessionName',
- 'cookieOptions' => array( 'prefix' => 'x' ),
- ) );
+ 'cookieOptions' => [ 'prefix' => 'x' ],
+ ] );
$provider->setLogger( new \Psr\Log\NullLogger() );
$provider->setConfig( $this->getConfig() );
$provider->setManager( SessionManager::singleton() );
}
public function testSetLoggedOutCookie() {
- $provider = \TestingAccessWrapper::newFromObject( new CookieSessionProvider( array(
+ $provider = \TestingAccessWrapper::newFromObject( new CookieSessionProvider( [
'priority' => 1,
'sessionName' => 'MySessionName',
- 'cookieOptions' => array( 'prefix' => 'x' ),
- ) ) );
+ 'cookieOptions' => [ 'prefix' => 'x' ],
+ ] ) );
$provider->setLogger( new \Psr\Log\NullLogger() );
$provider->setConfig( $this->getConfig() );
$provider->setManager( SessionManager::singleton() );
// Don't reset if it's already set
$request = new \FauxRequest();
- $request->setCookies( array(
+ $request->setCookies( [
'xLoggedOut' => $t1,
- ), '' );
+ ], '' );
$provider->setLoggedOutCookie( $t1, $request );
$this->assertSame( null, $request->response()->getCookie( 'xLoggedOut' ) );
}
public function onUserSetCookies( $user, &$sessionData, &$cookies ) {
}
+ public function testGetCookie() {
+ $provider = new CookieSessionProvider( [
+ 'priority' => 1,
+ 'sessionName' => 'MySessionName',
+ 'cookieOptions' => [ 'prefix' => 'x' ],
+ ] );
+ $provider->setLogger( new \Psr\Log\NullLogger() );
+ $provider->setConfig( $this->getConfig() );
+ $provider->setManager( SessionManager::singleton() );
+ $provider = \TestingAccessWrapper::newFromObject( $provider );
+
+ $request = new \FauxRequest();
+ $request->setCookies( [
+ 'xFoo' => 'foo!',
+ 'xBar' => 'deleted',
+ ], '' );
+ $this->assertSame( 'foo!', $provider->getCookie( $request, 'Foo', 'x' ) );
+ $this->assertNull( $provider->getCookie( $request, 'Bar', 'x' ) );
+ $this->assertNull( $provider->getCookie( $request, 'Baz', 'x' ) );
+ }
+
+ public function testGetRememberUserDuration() {
+ $config = $this->getConfig();
+ $provider = new CookieSessionProvider( [ 'priority' => 10 ] );
+ $provider->setLogger( new \Psr\Log\NullLogger() );
+ $provider->setConfig( $config );
+ $provider->setManager( SessionManager::singleton() );
+
+ $this->assertSame( 200, $provider->getRememberUserDuration() );
+
+ $config->set( 'ExtendedLoginCookieExpiration', null );
+
+ $this->assertSame( 100, $provider->getRememberUserDuration() );
+
+ $config->set( 'ExtendedLoginCookieExpiration', 0 );
+
+ $this->assertSame( null, $provider->getRememberUserDuration() );
+ }
+
+ public function testGetLoginCookieExpiration() {
+ $config = $this->getConfig();
+ $provider = \TestingAccessWrapper::newFromObject( new CookieSessionProvider( [
+ 'priority' => 10
+ ] ) );
+ $provider->setLogger( new \Psr\Log\NullLogger() );
+ $provider->setConfig( $config );
+ $provider->setManager( SessionManager::singleton() );
+
+ $this->assertSame( 200, $provider->getLoginCookieExpiration( 'Token' ) );
+ $this->assertSame( 100, $provider->getLoginCookieExpiration( 'User' ) );
+
+ $config->set( 'ExtendedLoginCookieExpiration', null );
+
+ $this->assertSame( 100, $provider->getLoginCookieExpiration( 'Token' ) );
+ $this->assertSame( 100, $provider->getLoginCookieExpiration( 'User' ) );
+ }
}