3 namespace MediaWiki\Session
;
6 use Wikimedia\TestingAccessWrapper
;
10 * @covers MediaWiki\Session\Token
12 class TokenTest
extends MediaWikiTestCase
{
14 public function testBasics() {
15 $token = $this->getMockBuilder( Token
::class )
16 ->setMethods( [ 'toStringAtTimestamp' ] )
17 ->setConstructorArgs( [ 'sekret', 'salty', true ] )
19 $token->expects( $this->any() )->method( 'toStringAtTimestamp' )
20 ->will( $this->returnValue( 'faketoken+\\' ) );
22 $this->assertSame( 'faketoken+\\', $token->toString() );
23 $this->assertSame( 'faketoken+\\', (string)$token );
24 $this->assertTrue( $token->wasNew() );
26 $token = new Token( 'sekret', 'salty', false );
27 $this->assertFalse( $token->wasNew() );
30 public function testToStringAtTimestamp() {
31 $token = TestingAccessWrapper
::newFromObject( new Token( 'sekret', 'salty', false ) );
34 'd9ade0c7d4349e9df9094e61c33a5a0d5644fde2+\\',
35 $token->toStringAtTimestamp( 1447362018 )
38 'ee2f7a2488dea9176c224cfb400d43be5644fdea+\\',
39 $token->toStringAtTimestamp( 1447362026 )
43 public function testGetTimestamp() {
45 1447362018, Token
::getTimestamp( 'd9ade0c7d4349e9df9094e61c33a5a0d5644fde2+\\' )
48 1447362026, Token
::getTimestamp( 'ee2f7a2488dea9176c224cfb400d43be5644fdea+\\' )
50 $this->assertNull( Token
::getTimestamp( 'ee2f7a2488dea9176c224cfb400d43be5644fdea-\\' ) );
51 $this->assertNull( Token
::getTimestamp( 'ee2f7a2488dea9176c224cfb400d43be+\\' ) );
53 $this->assertNull( Token
::getTimestamp( 'ee2f7a2488dea9x76c224cfb400d43be5644fdea+\\' ) );
56 public function testMatch() {
57 $token = TestingAccessWrapper
::newFromObject( new Token( 'sekret', 'salty', false ) );
59 $test = $token->toStringAtTimestamp( time() - 10 );
60 $this->assertTrue( $token->match( $test ) );
61 $this->assertTrue( $token->match( $test, 12 ) );
62 $this->assertFalse( $token->match( $test, 8 ) );
64 $this->assertFalse( $token->match( 'ee2f7a2488dea9176c224cfb400d43be5644fdea-\\' ) );