123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- <?php
- /*
- * This file is part of jwt-auth.
- *
- * (c) Sean Tymon <tymon148@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Tymon\JWTAuth\Test;
- use Carbon\Carbon;
- use Tymon\JWTAuth\Validators\PayloadValidator;
- class PayloadValidatorTest extends \PHPUnit_Framework_TestCase
- {
- public function setUp()
- {
- Carbon::setTestNow(Carbon::createFromTimeStampUTC(123));
- $this->validator = new PayloadValidator();
- }
- /** @test */
- public function it_should_return_true_when_providing_a_valid_payload()
- {
- $payload = [
- 'iss' => 'http://example.com',
- 'iat' => 100,
- 'nbf' => 100,
- 'exp' => 100 + 3600,
- 'sub' => 1,
- 'jti' => 'foo',
- ];
- $this->assertTrue($this->validator->isValid($payload));
- }
- /** @test */
- public function it_should_throw_an_exception_when_providing_an_expired_payload()
- {
- $this->setExpectedException('Tymon\JWTAuth\Exceptions\TokenExpiredException');
- $payload = [
- 'iss' => 'http://example.com',
- 'iat' => 20,
- 'nbf' => 20,
- 'exp' => 120,
- 'sub' => 1,
- 'jti' => 'foo',
- ];
- $this->validator->check($payload);
- }
- /** @test */
- public function it_should_throw_an_exception_when_providing_an_invalid_nbf_claim()
- {
- $this->setExpectedException('Tymon\JWTAuth\Exceptions\TokenInvalidException');
- $payload = [
- 'iss' => 'http://example.com',
- 'iat' => 100,
- 'nbf' => 150,
- 'exp' => 150 + 3600,
- 'sub' => 1,
- 'jti' => 'foo',
- ];
- $this->validator->check($payload);
- }
- /** @test */
- public function it_should_throw_an_exception_when_providing_an_invalid_iat_claim()
- {
- $this->setExpectedException('Tymon\JWTAuth\Exceptions\TokenInvalidException');
- $payload = [
- 'iss' => 'http://example.com',
- 'iat' => 150,
- 'nbf' => 100,
- 'exp' => 150 + 3600,
- 'sub' => 1,
- 'jti' => 'foo',
- ];
- $this->validator->check($payload);
- }
- /** @test */
- public function it_should_throw_an_exception_when_providing_an_invalid_payload()
- {
- $this->setExpectedException('Tymon\JWTAuth\Exceptions\TokenInvalidException');
- $payload = [
- 'iss' => 'http://example.com',
- 'sub' => 1,
- ];
- $this->validator->check($payload);
- }
- /** @test */
- public function it_should_throw_an_exception_when_providing_an_invalid_expiry()
- {
- $this->setExpectedException('Tymon\JWTAuth\Exceptions\TokenInvalidException');
- $payload = [
- 'iss' => 'http://example.com',
- 'iat' => 100,
- 'exp' => 'foo',
- 'sub' => 1,
- 'jti' => 'foo',
- ];
- $this->validator->check($payload);
- }
- /** @test **/
- public function it_should_throw_an_exception_when_required_claims_are_missing()
- {
- $this->setExpectedException('Tymon\JWTAuth\Exceptions\TokenInvalidException');
- $payload = [
- 'iss' => 'http://example.com',
- 'foo' => 'bar',
- // these are inserted to check for regression to a previous bug
- // where the check would only compare keys of autoindexed name arrays
- // (There are enough to account for all of the required claims' indices)
- 'autoindexed',
- 'autoindexed',
- 'autoindexed',
- 'autoindexed',
- 'autoindexed',
- 'autoindexed',
- 'autoindexed',
- ];
- $this->validator->check($payload);
- }
- }
|