sonarrradarrplexorganizrnginxdashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboard
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							633 lines
						
					
					
						
							18 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							633 lines
						
					
					
						
							18 KiB
						
					
					
				
								<?php
							 | 
						|
								/**
							 | 
						|
								 * This file is part of Lcobucci\JWT, a simple library to handle JWT and JWS
							 | 
						|
								 *
							 | 
						|
								 * @license http://opensource.org/licenses/BSD-3-Clause BSD-3-Clause
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								namespace Lcobucci\JWT;
							 | 
						|
								
							 | 
						|
								use Lcobucci\JWT\Claim\Factory as ClaimFactory;
							 | 
						|
								use Lcobucci\JWT\Parsing\Encoder;
							 | 
						|
								use Lcobucci\JWT\Signer\Key;
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * @author Luís Otávio Cobucci Oblonczyk <lcobucci@gmail.com>
							 | 
						|
								 * @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);
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |