From e6eb2c9646309c13cb75be3102cad993e3cae2a3 Mon Sep 17 00:00:00 2001 From: Christoph Reiter <reiter.christoph@gmail.com> Date: Thu, 31 Mar 2022 15:50:59 +0200 Subject: [PATCH] Port the tests away from jwt-easy It's abadoned and upstream recommends using the core libraries instead: https://github.com/web-token/jwt-framework/issues/335 --- .../Authenticator/LocalTokenValidatorTest.php | 45 ++++++++++++------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/tests/Authenticator/LocalTokenValidatorTest.php b/tests/Authenticator/LocalTokenValidatorTest.php index 4b899da..980e462 100644 --- a/tests/Authenticator/LocalTokenValidatorTest.php +++ b/tests/Authenticator/LocalTokenValidatorTest.php @@ -10,9 +10,11 @@ use Dbp\Relay\AuthBundle\OIDC\OIDProvider; use GuzzleHttp\Handler\MockHandler; use GuzzleHttp\HandlerStack; use GuzzleHttp\Psr7\Response; +use Jose\Component\Core\AlgorithmManager; use Jose\Component\Core\JWK; -use Jose\Easy\Build; -use Jose\Easy\JWSBuilder; +use Jose\Component\Signature\Algorithm\RS256; +use Jose\Component\Signature\JWSBuilder; +use Jose\Component\Signature\Serializer\CompactSerializer; use PHPUnit\Framework\TestCase; class LocalTokenValidatorTest extends TestCase @@ -63,24 +65,35 @@ class LocalTokenValidatorTest extends TestCase ]; } - private function getJWT(array $options = []) + private function getJWT(array $options = []): string { $jwk = $this->getJWK(); $time = $options['time'] ?? time(); - $builder = Build::jws() - ->exp($time + 3600) - ->iat($time) - ->nbf($time) - ->jti('0123456789') - ->alg('RS256') - ->iss($options['issuer'] ?? $this->oid->getProviderConfig()->getIssuer()) - ->aud('audience1') - ->aud('audience2') - ->sub('subject'); - assert($builder instanceof JWSBuilder); - - return $builder->sign($jwk); + + $payload = json_encode([ + 'exp' => $time + 3600, + 'iat' => $time, + 'nbf' => $time, + 'jti' => '0123456789', + 'iss' => $options['issuer'] ?? $this->oid->getProviderConfig()->getIssuer(), + 'aud' => ['audience1', 'audience2'], + 'sub' => 'subject', + ]); + + $algorithmManager = new AlgorithmManager([ + new RS256(), + ]); + $serializer = new CompactSerializer(); + $jwsBuilder = new JWSBuilder($algorithmManager); + + $jws = $jwsBuilder + ->create() + ->withPayload($payload) + ->addSignature($jwk, ['alg' => 'RS256']) + ->build(); + + return $serializer->serialize($jws, 0); } private function mockResponses(array $responses) -- GitLab