60 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 */
 | 
						|
namespace Magento\JwtFrameworkAdapter\Model;
 | 
						|
 | 
						|
class JwsManagerTest extends \PHPUnit\Framework\TestCase
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @var \Magento\Framework\ObjectManagerInterface
 | 
						|
     */
 | 
						|
    private $objectManager;
 | 
						|
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
 | 
						|
 | 
						|
        parent::setUp();
 | 
						|
    }
 | 
						|
 | 
						|
    public function testCreatingJwsWithAlgorithmSetInHeadersDirectly(): void
 | 
						|
    {
 | 
						|
        $secret = "ZXF1YXRpb24tS2VudHVja3ktY29udGludWVkLWRpZmZlcmVuY2U=";
 | 
						|
        $payload = json_encode([
 | 
						|
            'MyCustomClaim' => 'some value', // not important at all
 | 
						|
            'nbf' => time(),
 | 
						|
            'exp' => time() + 600,
 | 
						|
            'iat' => time()
 | 
						|
        ]);
 | 
						|
        $header = [
 | 
						|
            'alg' => 'HS256',
 | 
						|
            'typ' => 'JWT'
 | 
						|
        ];
 | 
						|
 | 
						|
        /** @var \Magento\Framework\Jwt\JwkFactory $jwkFactory */
 | 
						|
        $jwkFactory = $this->objectManager->create(\Magento\Framework\Jwt\JwkFactory::class);
 | 
						|
        $jwk = $jwkFactory->createFromData(['kty' => 'oct', 'k' => $secret]);
 | 
						|
 | 
						|
        /** @var \Magento\JwtFrameworkAdapter\Model\JwsFactory $jwsFactory */
 | 
						|
        $jwsFactory = $this->objectManager->create(\Magento\JwtFrameworkAdapter\Model\JwsFactory::class);
 | 
						|
        $jws = $jwsFactory->create($header, $payload, null);
 | 
						|
 | 
						|
        /** @var \Magento\Framework\Jwt\Jws\JwsSignatureSettingsInterface $encryptionSettings */
 | 
						|
        $encryptionSettings = $this->objectManager->create(
 | 
						|
            \Magento\Framework\Jwt\Jws\JwsSignatureJwks::class,
 | 
						|
            [
 | 
						|
                'jwk' => $jwk
 | 
						|
            ]
 | 
						|
        );
 | 
						|
 | 
						|
        /** @var \Magento\JwtFrameworkAdapter\Model\JwsManager $jwsManager */
 | 
						|
        $jwsManager = $this->objectManager->create(\Magento\JwtFrameworkAdapter\Model\JwsManager::class);
 | 
						|
 | 
						|
        $token = $jwsManager->build($jws, $encryptionSettings);
 | 
						|
 | 
						|
        $this->assertIsString($token);
 | 
						|
    }
 | 
						|
}
 |