271 lines
6.9 KiB
PHP
271 lines
6.9 KiB
PHP
|
<?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
|
||
|
];
|
||
|
}
|
||
|
}
|