'CookieHttpOnly' => true,
'SessionName' => false,
'CookieExpiration' => 100,
- 'ExtendedLoginCookies' => [ 'UserID', 'Token' ],
'ExtendedLoginCookieExpiration' => 200,
] );
}
$this->assertTrue( $provider->persistsSessionId() );
$this->assertTrue( $provider->canChangeUser() );
+ $extendedCookies = [ 'UserID', 'UserName', 'Token' ];
+
+ $this->assertEquals(
+ $extendedCookies,
+ \TestingAccessWrapper::newFromObject( $provider )->getExtendedLoginCookies(),
+ 'List of extended cookies (subclasses can add values, but we\'re calling the core one here)'
+ );
+
$msg = $provider->whyNoSession();
$this->assertInstanceOf( 'Message', $msg );
$this->assertSame( 'sessionprovider-nocookies', $msg->getKey() );
);
\TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false;
- $mock = $this->getMock( 'stdClass', [ 'onUserSetCookies' ] );
+ $mock = $this->getMockBuilder( 'stdClass' )
+ ->setMethods( [ 'onUserSetCookies' ] )
+ ->getMock();
$mock->expects( $this->never() )->method( 'onUserSetCookies' );
$this->mergeMwGlobalArrayValue( 'wgHooks', [ 'UserSetCookies' => [ $mock ] ] );
'httpOnly' => $config->get( 'CookieHttpOnly' ),
'raw' => false,
];
+
+ $normalExpiry = $config->get( 'CookieExpiration' );
$extendedExpiry = $config->get( 'ExtendedLoginCookieExpiration' );
$extendedExpiry = (int)( $extendedExpiry === null ? 0 : $extendedExpiry );
- $this->assertEquals( [ 'UserID', 'Token' ], $config->get( 'ExtendedLoginCookies' ),
- 'sanity check' );
$expect = [
'MySessionName' => [
'value' => (string)$sessionId,
] + $defaults,
'xUserID' => [
'value' => (string)$user->getId(),
- 'expire' => $extendedExpiry,
+ 'expire' => $remember ? $extendedExpiry : $normalExpiry,
] + $defaults,
'xUserName' => [
'value' => $user->getName(),
+ 'expire' => $remember ? $extendedExpiry : $normalExpiry
] + $defaults,
'xToken' => [
'value' => $remember ? $user->getToken() : '',
}
protected function getSentRequest() {
- $sentResponse = $this->getMock( 'FauxResponse', [ 'headersSent', 'setCookie', 'header' ] );
+ $sentResponse = $this->getMockBuilder( 'FauxResponse' )
+ ->setMethods( [ 'headersSent', 'setCookie', 'header' ] )->getMock();
$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', [ 'response' ] );
+ $sentRequest = $this->getMockBuilder( 'FauxRequest' )
+ ->setMethods( [ 'response' ] )->getMock();
$sentRequest->expects( $this->any() )->method( 'response' )
->will( $this->returnValue( $sentResponse ) );
return $sentRequest;
\TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false;
// Anonymous user
- $mock = $this->getMock( 'stdClass', [ 'onUserSetCookies' ] );
+ $mock = $this->getMockBuilder( 'stdClass' )
+ ->setMethods( [ 'onUserSetCookies' ] )->getMock();
$mock->expects( $this->never() )->method( 'onUserSetCookies' );
$this->mergeMwGlobalArrayValue( 'wgHooks', [ 'UserSetCookies' => [ $mock ] ] );
$backend->setUser( $anon );
$provider->persistSession( $backend, $this->getSentRequest() );
// Logged-in user, no remember
- $mock = $this->getMock( __CLASS__, [ 'onUserSetCookies' ] );
+ $mock = $this->getMockBuilder( __CLASS__ )
+ ->setMethods( [ 'onUserSetCookies' ] )->getMock();
$mock->expects( $this->once() )->method( 'onUserSetCookies' )
->will( $this->returnCallback( function ( $u, &$sessionData, &$cookies ) use ( $user ) {
$this->assertSame( $user, $u );
$provider->persistSession( $backend, $this->getSentRequest() );
// Logged-in user, remember
- $mock = $this->getMock( __CLASS__, [ 'onUserSetCookies' ] );
+ $mock = $this->getMockBuilder( __CLASS__ )
+ ->setMethods( [ 'onUserSetCookies' ] )->getMock();
$mock->expects( $this->once() )->method( 'onUserSetCookies' )
->will( $this->returnCallback( function ( $u, &$sessionData, &$cookies ) use ( $user ) {
$this->assertSame( $user, $u );
$provider->setConfig( $config );
$provider->setManager( SessionManager::singleton() );
- $this->assertSame( 200, $provider->getLoginCookieExpiration( 'Token' ) );
- $this->assertSame( 100, $provider->getLoginCookieExpiration( 'User' ) );
+ // First cookie is an extended cookie, remember me true
+ $this->assertSame( 200, $provider->getLoginCookieExpiration( 'Token', true ) );
+ $this->assertSame( 100, $provider->getLoginCookieExpiration( 'User', true ) );
+
+ // First cookie is an extended cookie, remember me false
+ $this->assertSame( 100, $provider->getLoginCookieExpiration( 'UserID', false ) );
+ $this->assertSame( 100, $provider->getLoginCookieExpiration( 'User', false ) );
$config->set( 'ExtendedLoginCookieExpiration', null );
- $this->assertSame( 100, $provider->getLoginCookieExpiration( 'Token' ) );
- $this->assertSame( 100, $provider->getLoginCookieExpiration( 'User' ) );
+ $this->assertSame( 100, $provider->getLoginCookieExpiration( 'Token', true ) );
+ $this->assertSame( 100, $provider->getLoginCookieExpiration( 'User', true ) );
+
+ $this->assertSame( 100, $provider->getLoginCookieExpiration( 'Token', false ) );
+ $this->assertSame( 100, $provider->getLoginCookieExpiration( 'User', false ) );
}
}