Skip to content
Snippets Groups Projects
Commit e6eb2c96 authored by Reiter, Christoph's avatar Reiter, Christoph :snake:
Browse files

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
parent c81e281e
No related branches found
No related tags found
No related merge requests found
...@@ -10,9 +10,11 @@ use Dbp\Relay\AuthBundle\OIDC\OIDProvider; ...@@ -10,9 +10,11 @@ use Dbp\Relay\AuthBundle\OIDC\OIDProvider;
use GuzzleHttp\Handler\MockHandler; use GuzzleHttp\Handler\MockHandler;
use GuzzleHttp\HandlerStack; use GuzzleHttp\HandlerStack;
use GuzzleHttp\Psr7\Response; use GuzzleHttp\Psr7\Response;
use Jose\Component\Core\AlgorithmManager;
use Jose\Component\Core\JWK; use Jose\Component\Core\JWK;
use Jose\Easy\Build; use Jose\Component\Signature\Algorithm\RS256;
use Jose\Easy\JWSBuilder; use Jose\Component\Signature\JWSBuilder;
use Jose\Component\Signature\Serializer\CompactSerializer;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
class LocalTokenValidatorTest extends TestCase class LocalTokenValidatorTest extends TestCase
...@@ -63,24 +65,35 @@ 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(); $jwk = $this->getJWK();
$time = $options['time'] ?? time(); $time = $options['time'] ?? time();
$builder = Build::jws()
->exp($time + 3600) $payload = json_encode([
->iat($time) 'exp' => $time + 3600,
->nbf($time) 'iat' => $time,
->jti('0123456789') 'nbf' => $time,
->alg('RS256') 'jti' => '0123456789',
->iss($options['issuer'] ?? $this->oid->getProviderConfig()->getIssuer()) 'iss' => $options['issuer'] ?? $this->oid->getProviderConfig()->getIssuer(),
->aud('audience1') 'aud' => ['audience1', 'audience2'],
->aud('audience2') 'sub' => 'subject',
->sub('subject'); ]);
assert($builder instanceof JWSBuilder);
$algorithmManager = new AlgorithmManager([
return $builder->sign($jwk); 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) private function mockResponses(array $responses)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment