radarrplexorganizrnginxsonarrdashboardhtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximuxlandingpagestartpagelanding
		
		
		
		
			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.
		
		
		
		
		
			
		
			
				
					
					
						
							270 lines
						
					
					
						
							6.9 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							270 lines
						
					
					
						
							6.9 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;
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * @author Luís Otávio Cobucci Oblonczyk <lcobucci@gmail.com>
							 | 
						|
								 * @since 2.0.0
							 | 
						|
								 */
							 | 
						|
								class ValidationDataTest extends \PHPUnit\Framework\TestCase
							 | 
						|
								{
							 | 
						|
								    /**
							 | 
						|
								     * @test
							 | 
						|
								     *
							 | 
						|
								     * @covers Lcobucci\JWT\ValidationData::__construct
							 | 
						|
								     * @covers Lcobucci\JWT\ValidationData::setCurrentTime
							 | 
						|
								     */
							 | 
						|
								    public function constructorShouldConfigureTheItems()
							 | 
						|
								    {
							 | 
						|
								        $expected = $this->createExpectedData();
							 | 
						|
								        $data = new ValidationData(1);
							 | 
						|
								
							 | 
						|
								        $this->assertAttributeSame($expected, 'items', $data);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @test
							 | 
						|
								     *
							 | 
						|
								     * @covers Lcobucci\JWT\ValidationData::__construct
							 | 
						|
								     * @covers Lcobucci\JWT\ValidationData::setCurrentTime
							 | 
						|
								     */
							 | 
						|
								    public function constructorWithLeewayShouldConfigureTheItems()
							 | 
						|
								    {
							 | 
						|
								        $expected = $this->createExpectedData(null, null, null, null, 111, 111, 89);
							 | 
						|
								        $data = new ValidationData(100, 11);
							 | 
						|
								
							 | 
						|
								        $this->assertAttributeSame($expected, 'items', $data);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @test
							 | 
						|
								     *
							 | 
						|
								     * @dataProvider claimValues
							 | 
						|
								     *
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::__construct
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::setCurrentTime
							 | 
						|
								     *
							 | 
						|
								     * @covers Lcobucci\JWT\ValidationData::setId
							 | 
						|
								     */
							 | 
						|
								    public function setIdShouldChangeTheId($id)
							 | 
						|
								    {
							 | 
						|
								        $expected = $this->createExpectedData($id);
							 | 
						|
								        $data = new ValidationData(1);
							 | 
						|
								        $data->setId($id);
							 | 
						|
								
							 | 
						|
								        $this->assertAttributeSame($expected, 'items', $data);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @test
							 | 
						|
								     *
							 | 
						|
								     * @dataProvider claimValues
							 | 
						|
								     *
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::__construct
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::setCurrentTime
							 | 
						|
								     *
							 | 
						|
								     * @covers Lcobucci\JWT\ValidationData::setIssuer
							 | 
						|
								     */
							 | 
						|
								    public function setIssuerShouldChangeTheIssuer($iss)
							 | 
						|
								    {
							 | 
						|
								        $expected = $this->createExpectedData(null, null, $iss);
							 | 
						|
								        $data = new ValidationData(1);
							 | 
						|
								        $data->setIssuer($iss);
							 | 
						|
								
							 | 
						|
								        $this->assertAttributeSame($expected, 'items', $data);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @test
							 | 
						|
								     *
							 | 
						|
								     * @dataProvider claimValues
							 | 
						|
								     *
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::__construct
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::setCurrentTime
							 | 
						|
								     *
							 | 
						|
								     * @covers Lcobucci\JWT\ValidationData::setAudience
							 | 
						|
								     */
							 | 
						|
								    public function setAudienceShouldChangeTheAudience($aud)
							 | 
						|
								    {
							 | 
						|
								        $expected = $this->createExpectedData(null, null, null, $aud);
							 | 
						|
								        $data = new ValidationData(1);
							 | 
						|
								        $data->setAudience($aud);
							 | 
						|
								
							 | 
						|
								        $this->assertAttributeSame($expected, 'items', $data);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @test
							 | 
						|
								     *
							 | 
						|
								     * @dataProvider claimValues
							 | 
						|
								     *
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::__construct
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::setCurrentTime
							 | 
						|
								     *
							 | 
						|
								     * @covers Lcobucci\JWT\ValidationData::setSubject
							 | 
						|
								     */
							 | 
						|
								    public function setSubjectShouldChangeTheSubject($sub)
							 | 
						|
								    {
							 | 
						|
								        $expected = $this->createExpectedData(null, $sub);
							 | 
						|
								        $data = new ValidationData(1);
							 | 
						|
								        $data->setSubject($sub);
							 | 
						|
								
							 | 
						|
								        $this->assertAttributeSame($expected, 'items', $data);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @test
							 | 
						|
								     *
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::__construct
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::setCurrentTime
							 | 
						|
								     *
							 | 
						|
								     * @covers Lcobucci\JWT\ValidationData::setCurrentTime
							 | 
						|
								     */
							 | 
						|
								    public function setCurrentTimeShouldChangeTheTimeBasedValues()
							 | 
						|
								    {
							 | 
						|
								        $expected = $this->createExpectedData(null, null, null, null, 2);
							 | 
						|
								        $data = new ValidationData(1);
							 | 
						|
								        $data->setCurrentTime(2);
							 | 
						|
								
							 | 
						|
								        $this->assertAttributeSame($expected, 'items', $data);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @test
							 | 
						|
								     *
							 | 
						|
								     * @uses   Lcobucci\JWT\ValidationData::__construct
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::setCurrentTime
							 | 
						|
								     *
							 | 
						|
								     * @covers Lcobucci\JWT\ValidationData::setCurrentTime
							 | 
						|
								     */
							 | 
						|
								    public function setCurrentTimeShouldChangeTheTimeBasedValuesUsingLeeway()
							 | 
						|
								    {
							 | 
						|
								        $expected = $this->createExpectedData(null, null, null, null, 30, 30, 10);
							 | 
						|
								        $data = new ValidationData(15, 10);
							 | 
						|
								        $data->setCurrentTime(20);
							 | 
						|
								
							 | 
						|
								        $this->assertAttributeSame($expected, 'items', $data);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @test
							 | 
						|
								     *
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::__construct
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::setCurrentTime
							 | 
						|
								     *
							 | 
						|
								     * @covers Lcobucci\JWT\ValidationData::has
							 | 
						|
								     */
							 | 
						|
								    public function hasShouldReturnTrueWhenItemIsNotEmpty()
							 | 
						|
								    {
							 | 
						|
								        $data = new ValidationData(1);
							 | 
						|
								
							 | 
						|
								        $this->assertTrue($data->has('iat'));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @test
							 | 
						|
								     *
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::__construct
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::setCurrentTime
							 | 
						|
								     *
							 | 
						|
								     * @covers Lcobucci\JWT\ValidationData::has
							 | 
						|
								     */
							 | 
						|
								    public function hasShouldReturnFalseWhenItemIsEmpty()
							 | 
						|
								    {
							 | 
						|
								        $data = new ValidationData(1);
							 | 
						|
								
							 | 
						|
								        $this->assertFalse($data->has('jti'));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @test
							 | 
						|
								     *
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::__construct
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::setCurrentTime
							 | 
						|
								     *
							 | 
						|
								     * @covers Lcobucci\JWT\ValidationData::has
							 | 
						|
								     */
							 | 
						|
								    public function hasShouldReturnFalseWhenItemIsNotDefined()
							 | 
						|
								    {
							 | 
						|
								        $data = new ValidationData(1);
							 | 
						|
								
							 | 
						|
								        $this->assertFalse($data->has('test'));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @test
							 | 
						|
								     *
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::__construct
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::setCurrentTime
							 | 
						|
								     *
							 | 
						|
								     * @covers Lcobucci\JWT\ValidationData::get
							 | 
						|
								     */
							 | 
						|
								    public function getShouldReturnTheItemValue()
							 | 
						|
								    {
							 | 
						|
								        $data = new ValidationData(1);
							 | 
						|
								
							 | 
						|
								        $this->assertEquals(1, $data->get('iat'));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @test
							 | 
						|
								     *
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::__construct
							 | 
						|
								     * @uses Lcobucci\JWT\ValidationData::setCurrentTime
							 | 
						|
								     *
							 | 
						|
								     * @covers Lcobucci\JWT\ValidationData::get
							 | 
						|
								     */
							 | 
						|
								    public function getShouldReturnNullWhenItemIsNotDefined()
							 | 
						|
								    {
							 | 
						|
								        $data = new ValidationData(1);
							 | 
						|
								
							 | 
						|
								        $this->assertNull($data->get('test'));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @return array
							 | 
						|
								     */
							 | 
						|
								    public function claimValues()
							 | 
						|
								    {
							 | 
						|
								        return [
							 | 
						|
								            [1],
							 | 
						|
								            ['test']
							 | 
						|
								        ];
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @param string|null $id
							 | 
						|
								     * @param string|null $sub
							 | 
						|
								     * @param string|null $iss
							 | 
						|
								     * @param string|null $aud
							 | 
						|
								     * @param int $iat
							 | 
						|
								     * @param int|null $nbf
							 | 
						|
								     * @param int|null $exp
							 | 
						|
								     *
							 | 
						|
								     * @return array
							 | 
						|
								     */
							 | 
						|
								    private function createExpectedData(
							 | 
						|
								        $id = null,
							 | 
						|
								        $sub = null,
							 | 
						|
								        $iss = null,
							 | 
						|
								        $aud = null,
							 | 
						|
								        $iat = 1,
							 | 
						|
								        $nbf = null,
							 | 
						|
								        $exp = null
							 | 
						|
								    ) {
							 | 
						|
								        return [
							 | 
						|
								            'jti' => $id !== null ? (string) $id : null,
							 | 
						|
								            'iss' => $iss !== null ? (string) $iss : null,
							 | 
						|
								            'aud' => $aud !== null ? (string) $aud : null,
							 | 
						|
								            'sub' => $sub !== null ? (string) $sub : null,
							 | 
						|
								            'iat' => $iat,
							 | 
						|
								            'nbf' => $nbf !== null ? $nbf: $iat,
							 | 
						|
								            'exp' => $exp !== null ? $exp: $iat
							 | 
						|
								        ];
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |