1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
<?php
declare(strict_types=1);
namespace Lcobucci\JWT\Tests\Benchmark;
use Lcobucci\Clock\SystemClock;
use Lcobucci\JWT\Builder;
use Lcobucci\JWT\JwtFacade;
use Lcobucci\JWT\Signer;
use Lcobucci\JWT\Signer\Key;
use Lcobucci\JWT\Validation\Constraint;
use PhpBench\Attributes as Bench;
#[Bench\BeforeMethods('initialize')]
final class ParseTokenBench extends AlgorithmsBench
{
private Signer $algorithm;
private Key $key;
/** @var non-empty-string */
private string $jwt;
/** @param array{algorithm: string} $params */
public function initialize(array $params): void
{
$this->algorithm = $this->resolveAlgorithm($params['algorithm']);
$this->key = $this->resolveVerificationKey($params['algorithm']);
$this->jwt = (new JwtFacade())->issue(
$this->algorithm,
$this->resolveSigningKey($params['algorithm']),
static fn (Builder $builder): Builder => $builder
->identifiedBy('token-1')
->issuedBy('lcobucci.jwt.benchmarks')
->relatedTo('user-1')
->permittedFor('lcobucci.jwt'),
)->toString();
}
protected function runBenchmark(): void
{
(new JwtFacade())->parse(
$this->jwt,
new Constraint\SignedWith($this->algorithm, $this->key),
new Constraint\StrictValidAt(SystemClock::fromSystemTimezone()),
new Constraint\IssuedBy('lcobucci.jwt.benchmarks'),
new Constraint\RelatedTo('user-1'),
new Constraint\PermittedFor('lcobucci.jwt'),
new Constraint\IdentifiedBy('token-1'),
);
}
}
|