sonarrradarrplexorganizrnginxdashboardlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximux
		
		
		
		
			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.
		
		
		
		
		
			
		
			
				
					
					
						
							244 lines
						
					
					
						
							7.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							244 lines
						
					
					
						
							7.1 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\Decoder; | |
| use RuntimeException; | |
| 
 | |
| /** | |
|  * @author Luís Otávio Cobucci Oblonczyk <lcobucci@gmail.com> | |
|  * @since 0.1.0 | |
|  */ | |
| class ParserTest extends \PHPUnit\Framework\TestCase | |
| { | |
|     /** | |
|      * @var Decoder|\PHPUnit_Framework_MockObject_MockObject | |
|      */ | |
|     protected $decoder; | |
| 
 | |
|     /** | |
|      * @var ClaimFactory|\PHPUnit_Framework_MockObject_MockObject | |
|      */ | |
|     protected $claimFactory; | |
| 
 | |
|     /** | |
|      * @var Claim|\PHPUnit_Framework_MockObject_MockObject | |
|      */ | |
|     protected $defaultClaim; | |
| 
 | |
|     /** | |
|      * {@inheritdoc} | |
|      */ | |
|     protected function setUp() | |
|     { | |
|         $this->decoder = $this->createMock(Decoder::class); | |
|         $this->claimFactory = $this->createMock(ClaimFactory::class, [], [], '', false); | |
|         $this->defaultClaim = $this->createMock(Claim::class); | |
| 
 | |
|         $this->claimFactory->expects($this->any()) | |
|                            ->method('create') | |
|                            ->willReturn($this->defaultClaim); | |
|     } | |
| 
 | |
|     /** | |
|      * @return Parser | |
|      */ | |
|     private function createParser() | |
|     { | |
|         return new Parser($this->decoder, $this->claimFactory); | |
|     } | |
| 
 | |
|     /** | |
|      * @test | |
|      * | |
|      * @covers Lcobucci\JWT\Parser::__construct | |
|      */ | |
|     public function constructMustConfigureTheAttributes() | |
|     { | |
|         $parser = $this->createParser(); | |
| 
 | |
|         $this->assertAttributeSame($this->decoder, 'decoder', $parser); | |
|         $this->assertAttributeSame($this->claimFactory, 'claimFactory', $parser); | |
|     } | |
| 
 | |
|     /** | |
|      * @test | |
|      * | |
|      * @uses Lcobucci\JWT\Parser::__construct | |
|      * | |
|      * @covers Lcobucci\JWT\Parser::parse | |
|      * @covers Lcobucci\JWT\Parser::splitJwt | |
|      * | |
|      * @expectedException InvalidArgumentException | |
|      */ | |
|     public function parseMustRaiseExceptionWhenJWSIsNotAString() | |
|     { | |
|         $parser = $this->createParser(); | |
|         $parser->parse(['asdasd']); | |
|     } | |
| 
 | |
|     /** | |
|      * @test | |
|      * | |
|      * @uses Lcobucci\JWT\Parser::__construct | |
|      * | |
|      * @covers Lcobucci\JWT\Parser::parse | |
|      * @covers Lcobucci\JWT\Parser::splitJwt | |
|      * | |
|      * @expectedException InvalidArgumentException | |
|      */ | |
|     public function parseMustRaiseExceptionWhenJWSDontHaveThreeParts() | |
|     { | |
|         $parser = $this->createParser(); | |
|         $parser->parse(''); | |
|     } | |
| 
 | |
|     /** | |
|      * @test | |
|      * | |
|      * @uses Lcobucci\JWT\Parser::__construct | |
|      * | |
|      * @covers Lcobucci\JWT\Parser::parse | |
|      * @covers Lcobucci\JWT\Parser::splitJwt | |
|      * @covers Lcobucci\JWT\Parser::parseHeader | |
|      * | |
|      * @expectedException RuntimeException | |
|      */ | |
|     public function parseMustRaiseExceptionWhenHeaderCannotBeDecoded() | |
|     { | |
|         $this->decoder->expects($this->any()) | |
|                       ->method('jsonDecode') | |
|                       ->willThrowException(new RuntimeException()); | |
| 
 | |
|         $parser = $this->createParser(); | |
|         $parser->parse('asdfad.asdfasdf.'); | |
|     } | |
| 
 | |
|     /** | |
|      * @test | |
|      * | |
|      * @uses Lcobucci\JWT\Parser::__construct | |
|      * | |
|      * @covers Lcobucci\JWT\Parser::parse | |
|      * @covers Lcobucci\JWT\Parser::splitJwt | |
|      * @covers Lcobucci\JWT\Parser::parseHeader | |
|      * | |
|      * @expectedException InvalidArgumentException | |
|      */ | |
|     public function parseMustRaiseExceptionWhenHeaderIsFromAnEncryptedToken() | |
|     { | |
|         $this->decoder->expects($this->any()) | |
|                       ->method('jsonDecode') | |
|                       ->willReturn(['enc' => 'AAA']); | |
| 
 | |
|         $parser = $this->createParser(); | |
|         $parser->parse('a.a.'); | |
|     } | |
| 
 | |
|     /** | |
|      * @test | |
|      * | |
|      * @uses Lcobucci\JWT\Parser::__construct | |
|      * @uses Lcobucci\JWT\Token::__construct | |
|      * | |
|      * @covers Lcobucci\JWT\Parser::parse | |
|      * @covers Lcobucci\JWT\Parser::splitJwt | |
|      * @covers Lcobucci\JWT\Parser::parseHeader | |
|      * @covers Lcobucci\JWT\Parser::parseClaims | |
|      * @covers Lcobucci\JWT\Parser::parseSignature | |
|      * | |
|      */ | |
|     public function parseMustReturnANonSignedTokenWhenSignatureIsNotInformed() | |
|     { | |
|         $this->decoder->expects($this->at(1)) | |
|                       ->method('jsonDecode') | |
|                       ->willReturn(['typ' => 'JWT', 'alg' => 'none']); | |
| 
 | |
|         $this->decoder->expects($this->at(3)) | |
|                       ->method('jsonDecode') | |
|                       ->willReturn(['aud' => 'test']); | |
| 
 | |
|         $parser = $this->createParser(); | |
|         $token = $parser->parse('a.a.'); | |
| 
 | |
|         $this->assertAttributeEquals(['typ' => 'JWT', 'alg' => 'none'], 'headers', $token); | |
|         $this->assertAttributeEquals(['aud' => $this->defaultClaim], 'claims', $token); | |
|         $this->assertAttributeEquals(null, 'signature', $token); | |
|     } | |
| 
 | |
|     /** | |
|      * @test | |
|      * | |
|      * @uses Lcobucci\JWT\Parser::__construct | |
|      * @uses Lcobucci\JWT\Token::__construct | |
|      * | |
|      * @covers Lcobucci\JWT\Parser::parse | |
|      * @covers Lcobucci\JWT\Parser::splitJwt | |
|      * @covers Lcobucci\JWT\Parser::parseHeader | |
|      * @covers Lcobucci\JWT\Parser::parseClaims | |
|      * @covers Lcobucci\JWT\Parser::parseSignature | |
|      */ | |
|     public function parseShouldReplicateClaimValueOnHeaderWhenNeeded() | |
|     { | |
|         $this->decoder->expects($this->at(1)) | |
|                       ->method('jsonDecode') | |
|                       ->willReturn(['typ' => 'JWT', 'alg' => 'none', 'aud' => 'test']); | |
| 
 | |
|         $this->decoder->expects($this->at(3)) | |
|                       ->method('jsonDecode') | |
|                       ->willReturn(['aud' => 'test']); | |
| 
 | |
|         $parser = $this->createParser(); | |
|         $token = $parser->parse('a.a.'); | |
| 
 | |
|         $this->assertAttributeEquals( | |
|             ['typ' => 'JWT', 'alg' => 'none', 'aud' => $this->defaultClaim], | |
|             'headers', | |
|             $token | |
|         ); | |
| 
 | |
|         $this->assertAttributeEquals(['aud' => $this->defaultClaim], 'claims', $token); | |
|         $this->assertAttributeEquals(null, 'signature', $token); | |
|     } | |
| 
 | |
|     /** | |
|      * @test | |
|      * | |
|      * @uses Lcobucci\JWT\Parser::__construct | |
|      * @uses Lcobucci\JWT\Token::__construct | |
|      * @uses Lcobucci\JWT\Signature::__construct | |
|      * | |
|      * @covers Lcobucci\JWT\Parser::parse | |
|      * @covers Lcobucci\JWT\Parser::splitJwt | |
|      * @covers Lcobucci\JWT\Parser::parseHeader | |
|      * @covers Lcobucci\JWT\Parser::parseClaims | |
|      * @covers Lcobucci\JWT\Parser::parseSignature | |
|      */ | |
|     public function parseMustReturnASignedTokenWhenSignatureIsInformed() | |
|     { | |
|         $this->decoder->expects($this->at(1)) | |
|                       ->method('jsonDecode') | |
|                       ->willReturn(['typ' => 'JWT', 'alg' => 'HS256']); | |
| 
 | |
|         $this->decoder->expects($this->at(3)) | |
|                       ->method('jsonDecode') | |
|                       ->willReturn(['aud' => 'test']); | |
| 
 | |
|         $this->decoder->expects($this->at(4)) | |
|                       ->method('base64UrlDecode') | |
|                       ->willReturn('aaa'); | |
| 
 | |
|         $parser = $this->createParser(); | |
|         $token = $parser->parse('a.a.a'); | |
| 
 | |
|         $this->assertAttributeEquals(['typ' => 'JWT', 'alg' => 'HS256'], 'headers', $token); | |
|         $this->assertAttributeEquals(['aud' => $this->defaultClaim], 'claims', $token); | |
|         $this->assertAttributeEquals(new Signature('aaa'), 'signature', $token); | |
|     } | |
| }
 | |
| 
 |