Skip to content

Commit c090d53

Browse files
committed
feat(api tester): add test on filtered tokens
1 parent 43ba548 commit c090d53

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

tests/Preparator/ExamplesPreparatorTest.php

+104
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,18 @@
44

55
namespace APITester\Tests\Preparator;
66

7+
use APITester\Config\Filters;
78
use APITester\Definition\Api;
89
use APITester\Definition\Body;
10+
use APITester\Definition\Collection\Scopes;
911
use APITester\Definition\Example\BodyExample;
1012
use APITester\Definition\Example\OperationExample;
1113
use APITester\Definition\Example\ResponseExample;
1214
use APITester\Definition\Operation;
1315
use APITester\Definition\Parameter;
1416
use APITester\Definition\Response as DefinitionResponse;
17+
use APITester\Definition\Security\HttpSecurity;
18+
use APITester\Definition\Token;
1519
use APITester\Preparator\Config\ExamplesPreparatorConfig;
1620
use APITester\Preparator\ExamplesPreparator;
1721
use APITester\Test\TestCase;
@@ -43,6 +47,7 @@ public function testPrepare(Api $api, array $expected): void
4347
{
4448
$preparator = new ExamplesPreparator();
4549

50+
$this->addTokens($preparator);
4651
$preparator->configure([]);
4752
Assert::objectsEqual(
4853
$expected,
@@ -376,5 +381,104 @@ public function getExpectedTestSuites(): iterable
376381
),
377382
],
378383
];
384+
385+
yield 'with filtered tokens' => [
386+
Api::create()->addOperation(
387+
Operation::create('filtered_token_test', '/tokens')
388+
->addSecurity(
389+
HttpSecurity::create(
390+
'bearer_test',
391+
'bearer',
392+
scopes: Scopes::fromNames(['scope5'])
393+
)
394+
)
395+
->addResponse(DefinitionResponse::create(200))
396+
->addExample(
397+
OperationExample::create('200.default')
398+
->setResponse(new ResponseExample())
399+
)
400+
),
401+
[
402+
new TestCase(
403+
ExamplesPreparator::getName() . ' - filtered_token_test - 200.default',
404+
OperationExample::create('filtered_token_test')
405+
->setPath('/tokens')
406+
->setHeaders([
407+
'Authorization'=> ['Bearer 3333'],
408+
])
409+
->setResponse(ResponseExample::create('200')),
410+
),
411+
],
412+
];
413+
414+
yield 'without filtered tokens but multiple options' => [
415+
Api::create()->addOperation(
416+
Operation::create('unfiltered_token_test', '/tokens')
417+
->addSecurity(
418+
HttpSecurity::create(
419+
'bearer_test',
420+
'bearer',
421+
scopes: Scopes::fromNames(['scope5'])
422+
)
423+
)
424+
->addResponse(DefinitionResponse::create(200))
425+
->addExample(
426+
OperationExample::create('200.default')
427+
->setResponse(new ResponseExample())
428+
)
429+
),
430+
[
431+
new TestCase(
432+
ExamplesPreparator::getName() . ' - unfiltered_token_test - 200.default',
433+
OperationExample::create('unfiltered_token_test')
434+
->setPath('/tokens')
435+
->setHeaders([
436+
'Authorization'=> ['Bearer 1111'],
437+
])
438+
->setResponse(ResponseExample::create('200')),
439+
),
440+
],
441+
];
442+
}
443+
444+
private function addTokens(ExamplesPreparator $preparator): void
445+
{
446+
$preparator->addToken(
447+
new Token(
448+
'token1',
449+
'oauth2_implicit',
450+
'1111',
451+
[
452+
'scope1',
453+
'scope2',
454+
'scope5',
455+
],
456+
)
457+
)
458+
->addToken(
459+
new Token(
460+
'token2',
461+
'oauth2_implicit',
462+
'2222',
463+
[
464+
'scope3',
465+
'scope4',
466+
],
467+
)
468+
)
469+
->addToken(
470+
new Token(
471+
'token3',
472+
'oauth2_implicit',
473+
'3333',
474+
[
475+
'scope5',
476+
],
477+
filters: new Filters(include: [[
478+
'id' => 'filtered_token_test',
479+
]])
480+
)
481+
)
482+
;
379483
}
380484
}

0 commit comments

Comments
 (0)