芝麻web文件管理V1.00
编辑当前文件:/home/qrafawbu/joolsmen.com/vendor/lcobucci/jwt/test/unit/BuilderTest.php
* @since 0.1.0 */ class BuilderTest extends \PHPUnit\Framework\TestCase { /** * @var Encoder|\PHPUnit_Framework_MockObject_MockObject */ protected $encoder; /** * @var ClaimFactory|\PHPUnit_Framework_MockObject_MockObject */ protected $claimFactory; /** * @var Claim|\PHPUnit_Framework_MockObject_MockObject */ protected $defaultClaim; /** * {@inheritdoc} */ protected function setUp() { $this->encoder = $this->createMock(Encoder::class); $this->claimFactory = $this->createMock(ClaimFactory::class); $this->defaultClaim = $this->createMock(Claim::class); $this->claimFactory->expects($this->any()) ->method('create') ->willReturn($this->defaultClaim); } /** * @return Builder */ private function createBuilder() { return new Builder($this->encoder, $this->claimFactory); } /** * @test * * @covers Lcobucci\JWT\Builder::__construct */ public function constructMustInitializeTheAttributes() { $builder = $this->createBuilder(); $this->assertAttributeEquals(['alg' => 'none', 'typ' => 'JWT'], 'headers', $builder); $this->assertAttributeEquals([], 'claims', $builder); $this->assertAttributeSame($this->encoder, 'encoder', $builder); $this->assertAttributeSame($this->claimFactory, 'claimFactory', $builder); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::permittedFor * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function permittedForMustChangeTheAudClaim() { $builder = $this->createBuilder(); $builder->permittedFor('test'); $this->assertAttributeEquals(['alg' => 'none', 'typ' => 'JWT'], 'headers', $builder); $this->assertAttributeEquals(['aud' => $this->defaultClaim], 'claims', $builder); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::permittedFor * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function permittedForCanReplicateItemOnHeader() { $builder = $this->createBuilder(); $builder->permittedFor('test', true); $this->assertAttributeEquals(['aud' => $this->defaultClaim], 'claims', $builder); $this->assertAttributeEquals( ['alg' => 'none', 'typ' => 'JWT', 'aud' => $this->defaultClaim], 'headers', $builder ); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::permittedFor * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function permittedForMustKeepAFluentInterface() { $builder = $this->createBuilder(); $this->assertSame($builder, $builder->permittedFor('test')); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::expiresAt * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function expiresAtMustChangeTheExpClaim() { $builder = $this->createBuilder(); $builder->expiresAt('2'); $this->assertAttributeEquals(['alg' => 'none', 'typ' => 'JWT'], 'headers', $builder); $this->assertAttributeEquals(['exp' => $this->defaultClaim], 'claims', $builder); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::expiresAt * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function expiresAtCanReplicateItemOnHeader() { $builder = $this->createBuilder(); $builder->expiresAt('2', true); $this->assertAttributeEquals(['exp' => $this->defaultClaim], 'claims', $builder); $this->assertAttributeEquals( ['alg' => 'none', 'typ' => 'JWT', 'exp' => $this->defaultClaim], 'headers', $builder ); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::expiresAt * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function expiresAtMustKeepAFluentInterface() { $builder = $this->createBuilder(); $this->assertSame($builder, $builder->expiresAt('2')); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::identifiedBy * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function identifiedByMustChangeTheJtiClaim() { $builder = $this->createBuilder(); $builder->identifiedBy('2'); $this->assertAttributeEquals(['alg' => 'none', 'typ' => 'JWT'], 'headers', $builder); $this->assertAttributeEquals(['jti' => $this->defaultClaim], 'claims', $builder); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::identifiedBy * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function identifiedByCanReplicateItemOnHeader() { $builder = $this->createBuilder(); $builder->identifiedBy('2', true); $this->assertAttributeEquals(['jti' => $this->defaultClaim], 'claims', $builder); $this->assertAttributeEquals( ['alg' => 'none', 'typ' => 'JWT', 'jti' => $this->defaultClaim], 'headers', $builder ); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::identifiedBy * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function identifiedByMustKeepAFluentInterface() { $builder = $this->createBuilder(); $this->assertSame($builder, $builder->identifiedBy('2')); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::issuedAt * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function issuedAtMustChangeTheIatClaim() { $builder = $this->createBuilder(); $builder->issuedAt('2'); $this->assertAttributeEquals(['alg' => 'none', 'typ' => 'JWT'], 'headers', $builder); $this->assertAttributeEquals(['iat' => $this->defaultClaim], 'claims', $builder); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::issuedAt * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function issuedAtCanReplicateItemOnHeader() { $builder = $this->createBuilder(); $builder->issuedAt('2', true); $this->assertAttributeEquals(['iat' => $this->defaultClaim], 'claims', $builder); $this->assertAttributeEquals( ['alg' => 'none', 'typ' => 'JWT', 'iat' => $this->defaultClaim], 'headers', $builder ); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::issuedAt * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function issuedAtMustKeepAFluentInterface() { $builder = $this->createBuilder(); $this->assertSame($builder, $builder->issuedAt('2')); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::issuedBy * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function issuedByMustChangeTheIssClaim() { $builder = $this->createBuilder(); $builder->issuedBy('2'); $this->assertAttributeEquals(['alg' => 'none', 'typ' => 'JWT'], 'headers', $builder); $this->assertAttributeEquals(['iss' => $this->defaultClaim], 'claims', $builder); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::issuedBy * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function issuedByCanReplicateItemOnHeader() { $builder = $this->createBuilder(); $builder->issuedBy('2', true); $this->assertAttributeEquals(['iss' => $this->defaultClaim], 'claims', $builder); $this->assertAttributeEquals( ['alg' => 'none', 'typ' => 'JWT', 'iss' => $this->defaultClaim], 'headers', $builder ); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::issuedBy * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function issuedByMustKeepAFluentInterface() { $builder = $this->createBuilder(); $this->assertSame($builder, $builder->issuedBy('2')); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::canOnlyBeUsedAfter * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function canOnlyBeUsedAfterMustChangeTheNbfClaim() { $builder = $this->createBuilder(); $builder->canOnlyBeUsedAfter('2'); $this->assertAttributeEquals(['alg' => 'none', 'typ' => 'JWT'], 'headers', $builder); $this->assertAttributeEquals(['nbf' => $this->defaultClaim], 'claims', $builder); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::canOnlyBeUsedAfter * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function canOnlyBeUsedAfterCanReplicateItemOnHeader() { $builder = $this->createBuilder(); $builder->canOnlyBeUsedAfter('2', true); $this->assertAttributeEquals(['nbf' => $this->defaultClaim], 'claims', $builder); $this->assertAttributeEquals( ['alg' => 'none', 'typ' => 'JWT', 'nbf' => $this->defaultClaim], 'headers', $builder ); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::canOnlyBeUsedAfter * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function canOnlyBeUsedAfterMustKeepAFluentInterface() { $builder = $this->createBuilder(); $this->assertSame($builder, $builder->canOnlyBeUsedAfter('2')); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::relatedTo * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function relatedToMustChangeTheSubClaim() { $builder = $this->createBuilder(); $builder->relatedTo('2'); $this->assertAttributeEquals(['alg' => 'none', 'typ' => 'JWT'], 'headers', $builder); $this->assertAttributeEquals(['sub' => $this->defaultClaim], 'claims', $builder); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::relatedTo * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function relatedToCanReplicateItemOnHeader() { $builder = $this->createBuilder(); $builder->relatedTo('2', true); $this->assertAttributeEquals(['sub' => $this->defaultClaim], 'claims', $builder); $this->assertAttributeEquals( ['alg' => 'none', 'typ' => 'JWT', 'sub' => $this->defaultClaim], 'headers', $builder ); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * * @covers Lcobucci\JWT\Builder::relatedTo * @covers Lcobucci\JWT\Builder::setRegisteredClaim */ public function relatedToMustKeepAFluentInterface() { $builder = $this->createBuilder(); $this->assertSame($builder, $builder->relatedTo('2')); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * * @covers Lcobucci\JWT\Builder::withClaim */ public function withClaimMustConfigureTheGivenClaim() { $builder = $this->createBuilder(); $builder->withClaim('userId', 2); $this->assertAttributeEquals(['userId' => $this->defaultClaim], 'claims', $builder); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * * @covers Lcobucci\JWT\Builder::withClaim */ public function withClaimMustKeepAFluentInterface() { $builder = $this->createBuilder(); $this->assertSame($builder, $builder->withClaim('userId', 2)); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * * @covers Lcobucci\JWT\Builder::withHeader */ public function withHeaderMustConfigureTheGivenClaim() { $builder = $this->createBuilder(); $builder->withHeader('userId', 2); $this->assertAttributeEquals( ['alg' => 'none', 'typ' => 'JWT', 'userId' => $this->defaultClaim], 'headers', $builder ); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * * @covers Lcobucci\JWT\Builder::withHeader */ public function withHeaderMustKeepAFluentInterface() { $builder = $this->createBuilder(); $this->assertSame($builder, $builder->withHeader('userId', 2)); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::getToken * @uses Lcobucci\JWT\Token * * @covers Lcobucci\JWT\Builder::sign */ public function signMustConfigureSignerAndKey() { $signer = $this->createMock(Signer::class); $builder = $this->createBuilder(); $builder->sign($signer, 'test'); $this->assertAttributeSame($signer, 'signer', $builder); $this->assertAttributeEquals(new Key('test'), 'key', $builder); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::getToken * @uses Lcobucci\JWT\Token * * @covers Lcobucci\JWT\Builder::sign */ public function signMustKeepAFluentInterface() { $signer = $this->createMock(Signer::class); $builder = $this->createBuilder(); $this->assertSame($builder, $builder->sign($signer, 'test')); return $builder; } /** * @test * * @depends signMustKeepAFluentInterface * * @covers Lcobucci\JWT\Builder::unsign */ public function unsignMustRemoveTheSignerAndKey(Builder $builder) { $builder->unsign(); $this->assertAttributeSame(null, 'signer', $builder); $this->assertAttributeSame(null, 'key', $builder); } /** * @test * * @depends signMustKeepAFluentInterface * * @covers Lcobucci\JWT\Builder::unsign */ public function unsignMustKeepAFluentInterface(Builder $builder) { $this->assertSame($builder, $builder->unsign()); } /** * @test * * @uses Lcobucci\JWT\Builder::__construct * @uses Lcobucci\JWT\Builder::withClaim * @uses Lcobucci\JWT\Token * * @covers Lcobucci\JWT\Builder::getToken */ public function getTokenMustReturnANewTokenWithCurrentConfiguration() { $signer = $this->createMock(Signer::class); $signature = $this->createMock(Signature::class); $signer->method('sign')->willReturn($signature); $this->encoder->expects($this->exactly(2)) ->method('jsonEncode') ->withConsecutive([['typ'=> 'JWT', 'alg' => 'none']], [['test' => $this->defaultClaim]]) ->willReturnOnConsecutiveCalls('1', '2'); $this->encoder->expects($this->exactly(3)) ->method('base64UrlEncode') ->withConsecutive(['1'], ['2'], [$signature]) ->willReturnOnConsecutiveCalls('1', '2', '3'); $builder = $this->createBuilder()->withClaim('test', 123); $token = $builder->getToken($signer, new Key('testing')); $this->assertAttributeEquals(['1', '2', '3'], 'payload', $token); $this->assertAttributeEquals($token->getHeaders(), 'headers', $builder); $this->assertAttributeEquals($token->getClaims(), 'claims', $builder); $this->assertAttributeSame($signature, 'signature', $token); } }