2016-02-01 20:44:03 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace MediaWiki\Session;
|
|
|
|
|
|
|
|
|
|
use MediaWikiTestCase;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @group Session
|
|
|
|
|
* @group Database
|
|
|
|
|
* @covers MediaWiki\Session\SessionInfo
|
|
|
|
|
*/
|
|
|
|
|
class SessionInfoTest extends MediaWikiTestCase {
|
|
|
|
|
|
|
|
|
|
public function testBasics() {
|
|
|
|
|
$anonInfo = UserInfo::newAnonymous();
|
|
|
|
|
$userInfo = UserInfo::newFromName( 'UTSysop', true );
|
|
|
|
|
$unverifiedUserInfo = UserInfo::newFromName( 'UTSysop', false );
|
|
|
|
|
|
|
|
|
|
try {
|
2016-02-17 09:09:32 +00:00
|
|
|
new SessionInfo( SessionInfo::MIN_PRIORITY - 1, [] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->fail( 'Expected exception not thrown', 'priority < min' );
|
|
|
|
|
} catch ( \InvalidArgumentException $ex ) {
|
|
|
|
|
$this->assertSame( 'Invalid priority', $ex->getMessage(), 'priority < min' );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
2016-02-17 09:09:32 +00:00
|
|
|
new SessionInfo( SessionInfo::MAX_PRIORITY + 1, [] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->fail( 'Expected exception not thrown', 'priority > max' );
|
|
|
|
|
} catch ( \InvalidArgumentException $ex ) {
|
|
|
|
|
$this->assertSame( 'Invalid priority', $ex->getMessage(), 'priority > max' );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
2016-02-17 09:09:32 +00:00
|
|
|
new SessionInfo( SessionInfo::MIN_PRIORITY, [ 'id' => 'ABC?' ] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->fail( 'Expected exception not thrown', 'bad session ID' );
|
|
|
|
|
} catch ( \InvalidArgumentException $ex ) {
|
|
|
|
|
$this->assertSame( 'Invalid session ID', $ex->getMessage(), 'bad session ID' );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
2016-02-17 09:09:32 +00:00
|
|
|
new SessionInfo( SessionInfo::MIN_PRIORITY, [ 'userInfo' => new \stdClass ] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->fail( 'Expected exception not thrown', 'bad userInfo' );
|
|
|
|
|
} catch ( \InvalidArgumentException $ex ) {
|
|
|
|
|
$this->assertSame( 'Invalid userInfo', $ex->getMessage(), 'bad userInfo' );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
2016-02-17 09:09:32 +00:00
|
|
|
new SessionInfo( SessionInfo::MIN_PRIORITY, [] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->fail( 'Expected exception not thrown', 'no provider, no id' );
|
|
|
|
|
} catch ( \InvalidArgumentException $ex ) {
|
|
|
|
|
$this->assertSame( 'Must supply an ID when no provider is given', $ex->getMessage(),
|
|
|
|
|
'no provider, no id' );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
2016-02-17 09:09:32 +00:00
|
|
|
new SessionInfo( SessionInfo::MIN_PRIORITY, [ 'copyFrom' => new \stdClass ] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->fail( 'Expected exception not thrown', 'bad copyFrom' );
|
|
|
|
|
} catch ( \InvalidArgumentException $ex ) {
|
|
|
|
|
$this->assertSame( 'Invalid copyFrom', $ex->getMessage(),
|
|
|
|
|
'bad copyFrom' );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$manager = new SessionManager();
|
|
|
|
|
$provider = $this->getMockBuilder( 'MediaWiki\\Session\\SessionProvider' )
|
2016-02-17 09:09:32 +00:00
|
|
|
->setMethods( [ 'persistsSessionId', 'canChangeUser', '__toString' ] )
|
2016-02-01 20:44:03 +00:00
|
|
|
->getMockForAbstractClass();
|
|
|
|
|
$provider->setManager( $manager );
|
|
|
|
|
$provider->expects( $this->any() )->method( 'persistsSessionId' )
|
|
|
|
|
->will( $this->returnValue( true ) );
|
|
|
|
|
$provider->expects( $this->any() )->method( 'canChangeUser' )
|
|
|
|
|
->will( $this->returnValue( true ) );
|
|
|
|
|
$provider->expects( $this->any() )->method( '__toString' )
|
|
|
|
|
->will( $this->returnValue( 'Mock' ) );
|
|
|
|
|
|
|
|
|
|
$provider2 = $this->getMockBuilder( 'MediaWiki\\Session\\SessionProvider' )
|
2016-02-17 09:09:32 +00:00
|
|
|
->setMethods( [ 'persistsSessionId', 'canChangeUser', '__toString' ] )
|
2016-02-01 20:44:03 +00:00
|
|
|
->getMockForAbstractClass();
|
|
|
|
|
$provider2->setManager( $manager );
|
|
|
|
|
$provider2->expects( $this->any() )->method( 'persistsSessionId' )
|
|
|
|
|
->will( $this->returnValue( true ) );
|
|
|
|
|
$provider2->expects( $this->any() )->method( 'canChangeUser' )
|
|
|
|
|
->will( $this->returnValue( true ) );
|
|
|
|
|
$provider2->expects( $this->any() )->method( '__toString' )
|
|
|
|
|
->will( $this->returnValue( 'Mock2' ) );
|
|
|
|
|
|
|
|
|
|
try {
|
2016-02-17 09:09:32 +00:00
|
|
|
new SessionInfo( SessionInfo::MIN_PRIORITY, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'provider' => $provider,
|
|
|
|
|
'userInfo' => $anonInfo,
|
|
|
|
|
'metadata' => 'foo',
|
2016-02-17 09:09:32 +00:00
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->fail( 'Expected exception not thrown', 'bad metadata' );
|
|
|
|
|
} catch ( \InvalidArgumentException $ex ) {
|
|
|
|
|
$this->assertSame( 'Invalid metadata', $ex->getMessage(), 'bad metadata' );
|
|
|
|
|
}
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'provider' => $provider,
|
|
|
|
|
'userInfo' => $anonInfo
|
2016-02-17 09:09:32 +00:00
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertSame( $provider, $info->getProvider() );
|
|
|
|
|
$this->assertNotNull( $info->getId() );
|
|
|
|
|
$this->assertSame( SessionInfo::MIN_PRIORITY + 5, $info->getPriority() );
|
|
|
|
|
$this->assertSame( $anonInfo, $info->getUserInfo() );
|
|
|
|
|
$this->assertTrue( $info->isIdSafe() );
|
|
|
|
|
$this->assertFalse( $info->wasPersisted() );
|
|
|
|
|
$this->assertFalse( $info->wasRemembered() );
|
|
|
|
|
$this->assertFalse( $info->forceHTTPS() );
|
|
|
|
|
$this->assertNull( $info->getProviderMetadata() );
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'provider' => $provider,
|
|
|
|
|
'userInfo' => $unverifiedUserInfo,
|
2016-02-17 09:09:32 +00:00
|
|
|
'metadata' => [ 'Foo' ],
|
|
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertSame( $provider, $info->getProvider() );
|
|
|
|
|
$this->assertNotNull( $info->getId() );
|
|
|
|
|
$this->assertSame( SessionInfo::MIN_PRIORITY + 5, $info->getPriority() );
|
|
|
|
|
$this->assertSame( $unverifiedUserInfo, $info->getUserInfo() );
|
|
|
|
|
$this->assertTrue( $info->isIdSafe() );
|
|
|
|
|
$this->assertFalse( $info->wasPersisted() );
|
|
|
|
|
$this->assertFalse( $info->wasRemembered() );
|
|
|
|
|
$this->assertFalse( $info->forceHTTPS() );
|
2016-02-17 09:09:32 +00:00
|
|
|
$this->assertSame( [ 'Foo' ], $info->getProviderMetadata() );
|
2016-02-01 20:44:03 +00:00
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'provider' => $provider,
|
|
|
|
|
'userInfo' => $userInfo
|
2016-02-17 09:09:32 +00:00
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertSame( $provider, $info->getProvider() );
|
|
|
|
|
$this->assertNotNull( $info->getId() );
|
|
|
|
|
$this->assertSame( SessionInfo::MIN_PRIORITY + 5, $info->getPriority() );
|
|
|
|
|
$this->assertSame( $userInfo, $info->getUserInfo() );
|
|
|
|
|
$this->assertTrue( $info->isIdSafe() );
|
|
|
|
|
$this->assertFalse( $info->wasPersisted() );
|
|
|
|
|
$this->assertTrue( $info->wasRemembered() );
|
|
|
|
|
$this->assertFalse( $info->forceHTTPS() );
|
|
|
|
|
$this->assertNull( $info->getProviderMetadata() );
|
|
|
|
|
|
|
|
|
|
$id = $manager->generateSessionId();
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'provider' => $provider,
|
|
|
|
|
'id' => $id,
|
|
|
|
|
'persisted' => true,
|
|
|
|
|
'userInfo' => $anonInfo
|
2016-02-17 09:09:32 +00:00
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertSame( $provider, $info->getProvider() );
|
|
|
|
|
$this->assertSame( $id, $info->getId() );
|
|
|
|
|
$this->assertSame( SessionInfo::MIN_PRIORITY + 5, $info->getPriority() );
|
|
|
|
|
$this->assertSame( $anonInfo, $info->getUserInfo() );
|
|
|
|
|
$this->assertFalse( $info->isIdSafe() );
|
|
|
|
|
$this->assertTrue( $info->wasPersisted() );
|
|
|
|
|
$this->assertFalse( $info->wasRemembered() );
|
|
|
|
|
$this->assertFalse( $info->forceHTTPS() );
|
|
|
|
|
$this->assertNull( $info->getProviderMetadata() );
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'provider' => $provider,
|
|
|
|
|
'id' => $id,
|
|
|
|
|
'userInfo' => $userInfo
|
2016-02-17 09:09:32 +00:00
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertSame( $provider, $info->getProvider() );
|
|
|
|
|
$this->assertSame( $id, $info->getId() );
|
|
|
|
|
$this->assertSame( SessionInfo::MIN_PRIORITY + 5, $info->getPriority() );
|
|
|
|
|
$this->assertSame( $userInfo, $info->getUserInfo() );
|
|
|
|
|
$this->assertFalse( $info->isIdSafe() );
|
|
|
|
|
$this->assertFalse( $info->wasPersisted() );
|
|
|
|
|
$this->assertTrue( $info->wasRemembered() );
|
|
|
|
|
$this->assertFalse( $info->forceHTTPS() );
|
|
|
|
|
$this->assertNull( $info->getProviderMetadata() );
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'id' => $id,
|
|
|
|
|
'persisted' => true,
|
|
|
|
|
'userInfo' => $userInfo,
|
2016-02-17 09:09:32 +00:00
|
|
|
'metadata' => [ 'Foo' ],
|
|
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertSame( $id, $info->getId() );
|
|
|
|
|
$this->assertSame( SessionInfo::MIN_PRIORITY + 5, $info->getPriority() );
|
|
|
|
|
$this->assertSame( $userInfo, $info->getUserInfo() );
|
|
|
|
|
$this->assertFalse( $info->isIdSafe() );
|
|
|
|
|
$this->assertTrue( $info->wasPersisted() );
|
|
|
|
|
$this->assertFalse( $info->wasRemembered() );
|
|
|
|
|
$this->assertFalse( $info->forceHTTPS() );
|
|
|
|
|
$this->assertNull( $info->getProviderMetadata() );
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'id' => $id,
|
|
|
|
|
'remembered' => true,
|
|
|
|
|
'userInfo' => $userInfo,
|
2016-02-17 09:09:32 +00:00
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertFalse( $info->wasRemembered(), 'no provider' );
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'provider' => $provider,
|
|
|
|
|
'id' => $id,
|
|
|
|
|
'remembered' => true,
|
2016-02-17 09:09:32 +00:00
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertFalse( $info->wasRemembered(), 'no user' );
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'provider' => $provider,
|
|
|
|
|
'id' => $id,
|
|
|
|
|
'remembered' => true,
|
|
|
|
|
'userInfo' => $anonInfo,
|
2016-02-17 09:09:32 +00:00
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertFalse( $info->wasRemembered(), 'anonymous user' );
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'provider' => $provider,
|
|
|
|
|
'id' => $id,
|
|
|
|
|
'remembered' => true,
|
|
|
|
|
'userInfo' => $unverifiedUserInfo,
|
2016-02-17 09:09:32 +00:00
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertFalse( $info->wasRemembered(), 'unverified user' );
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'provider' => $provider,
|
|
|
|
|
'id' => $id,
|
|
|
|
|
'remembered' => false,
|
|
|
|
|
'userInfo' => $userInfo,
|
2016-02-17 09:09:32 +00:00
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertFalse( $info->wasRemembered(), 'specific override' );
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'id' => $id,
|
|
|
|
|
'idIsSafe' => true,
|
2016-02-17 09:09:32 +00:00
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertSame( $id, $info->getId() );
|
|
|
|
|
$this->assertSame( SessionInfo::MIN_PRIORITY + 5, $info->getPriority() );
|
|
|
|
|
$this->assertTrue( $info->isIdSafe() );
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'id' => $id,
|
|
|
|
|
'forceHTTPS' => 1,
|
2016-02-17 09:09:32 +00:00
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertTrue( $info->forceHTTPS() );
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$fromInfo = new SessionInfo( SessionInfo::MIN_PRIORITY, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'id' => $id . 'A',
|
|
|
|
|
'provider' => $provider,
|
|
|
|
|
'userInfo' => $userInfo,
|
|
|
|
|
'idIsSafe' => true,
|
|
|
|
|
'persisted' => true,
|
|
|
|
|
'remembered' => true,
|
|
|
|
|
'forceHTTPS' => true,
|
2016-02-17 09:09:32 +00:00
|
|
|
'metadata' => [ 'foo!' ],
|
|
|
|
|
] );
|
|
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY + 4, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'copyFrom' => $fromInfo,
|
2016-02-17 09:09:32 +00:00
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertSame( $id . 'A', $info->getId() );
|
|
|
|
|
$this->assertSame( SessionInfo::MIN_PRIORITY + 4, $info->getPriority() );
|
|
|
|
|
$this->assertSame( $provider, $info->getProvider() );
|
|
|
|
|
$this->assertSame( $userInfo, $info->getUserInfo() );
|
|
|
|
|
$this->assertTrue( $info->isIdSafe() );
|
|
|
|
|
$this->assertTrue( $info->wasPersisted() );
|
|
|
|
|
$this->assertTrue( $info->wasRemembered() );
|
|
|
|
|
$this->assertTrue( $info->forceHTTPS() );
|
2016-02-17 09:09:32 +00:00
|
|
|
$this->assertSame( [ 'foo!' ], $info->getProviderMetadata() );
|
2016-02-01 20:44:03 +00:00
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY + 4, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'id' => $id . 'X',
|
|
|
|
|
'provider' => $provider2,
|
|
|
|
|
'userInfo' => $unverifiedUserInfo,
|
|
|
|
|
'idIsSafe' => false,
|
|
|
|
|
'persisted' => false,
|
|
|
|
|
'remembered' => false,
|
|
|
|
|
'forceHTTPS' => false,
|
|
|
|
|
'metadata' => null,
|
|
|
|
|
'copyFrom' => $fromInfo,
|
2016-02-17 09:09:32 +00:00
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertSame( $id . 'X', $info->getId() );
|
|
|
|
|
$this->assertSame( SessionInfo::MIN_PRIORITY + 4, $info->getPriority() );
|
|
|
|
|
$this->assertSame( $provider2, $info->getProvider() );
|
|
|
|
|
$this->assertSame( $unverifiedUserInfo, $info->getUserInfo() );
|
|
|
|
|
$this->assertFalse( $info->isIdSafe() );
|
|
|
|
|
$this->assertFalse( $info->wasPersisted() );
|
|
|
|
|
$this->assertFalse( $info->wasRemembered() );
|
|
|
|
|
$this->assertFalse( $info->forceHTTPS() );
|
|
|
|
|
$this->assertNull( $info->getProviderMetadata() );
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'id' => $id,
|
2016-02-17 09:09:32 +00:00
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertSame(
|
|
|
|
|
'[' . SessionInfo::MIN_PRIORITY . "]null<null>$id",
|
|
|
|
|
(string)$info,
|
|
|
|
|
'toString'
|
|
|
|
|
);
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'provider' => $provider,
|
|
|
|
|
'id' => $id,
|
|
|
|
|
'persisted' => true,
|
|
|
|
|
'userInfo' => $userInfo
|
2016-02-17 09:09:32 +00:00
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertSame(
|
|
|
|
|
'[' . SessionInfo::MIN_PRIORITY . "]Mock<+:{$userInfo->getId()}:UTSysop>$id",
|
|
|
|
|
(string)$info,
|
|
|
|
|
'toString'
|
|
|
|
|
);
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$info = new SessionInfo( SessionInfo::MIN_PRIORITY, [
|
2016-02-01 20:44:03 +00:00
|
|
|
'provider' => $provider,
|
|
|
|
|
'id' => $id,
|
|
|
|
|
'persisted' => true,
|
|
|
|
|
'userInfo' => $unverifiedUserInfo
|
2016-02-17 09:09:32 +00:00
|
|
|
] );
|
2016-02-01 20:44:03 +00:00
|
|
|
$this->assertSame(
|
|
|
|
|
'[' . SessionInfo::MIN_PRIORITY . "]Mock<-:{$userInfo->getId()}:UTSysop>$id",
|
|
|
|
|
(string)$info,
|
|
|
|
|
'toString'
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testCompare() {
|
|
|
|
|
$id = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
|
2016-02-17 09:09:32 +00:00
|
|
|
$info1 = new SessionInfo( SessionInfo::MIN_PRIORITY + 1, [ 'id' => $id ] );
|
|
|
|
|
$info2 = new SessionInfo( SessionInfo::MIN_PRIORITY + 2, [ 'id' => $id ] );
|
2016-02-01 20:44:03 +00:00
|
|
|
|
|
|
|
|
$this->assertTrue( SessionInfo::compare( $info1, $info2 ) < 0, '<' );
|
|
|
|
|
$this->assertTrue( SessionInfo::compare( $info2, $info1 ) > 0, '>' );
|
|
|
|
|
$this->assertTrue( SessionInfo::compare( $info1, $info1 ) === 0, '==' );
|
|
|
|
|
}
|
|
|
|
|
}
|