Skip to content

Commit 6f7fa26

Browse files
committed
Update tests
- Rename fixtures to Fixtures (PSR-4 compliance) - Add tests for custom TTL configuration - Simplify bootstrap.php
1 parent b3118b1 commit 6f7fa26

File tree

11 files changed

+170
-8
lines changed

11 files changed

+170
-8
lines changed

tests/Cases/DI/OAuth2ServerExtensionTest.php

Lines changed: 167 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66
use Contributte\Tester\Environment;
77
use Contributte\Tester\Toolkit;
88
use League\OAuth2\Server\AuthorizationServer;
9+
use League\OAuth2\Server\Grant\AuthCodeGrant;
10+
use League\OAuth2\Server\Grant\ClientCredentialsGrant;
11+
use League\OAuth2\Server\Grant\ImplicitGrant;
12+
use League\OAuth2\Server\Grant\PasswordGrant;
13+
use League\OAuth2\Server\Grant\RefreshTokenGrant;
914
use League\OAuth2\Server\ResourceServer;
1015
use Nette\DI\Compiler;
1116
use Nette\DI\Container;
@@ -15,6 +20,7 @@
1520

1621
require_once __DIR__ . '/../../bootstrap.php';
1722

23+
// Test basic configuration without grants
1824
Toolkit::test(function (): void {
1925
$loader = new ContainerLoader(Environment::getTmpDir(), true);
2026
$class = $loader->load(function (Compiler $compiler): void {
@@ -23,11 +29,11 @@
2329
oauth2.server:
2430
encryptionKey: "fake"
2531
privateKey:
26-
path: "../../fixtures/keys/private.key"
32+
path: "../../Fixtures/keys/private.key"
2733
passPhrase: "foo"
2834
permissionCheck: false
2935
publicKey:
30-
path: "../../fixtures/keys/public.key"
36+
path: "../../Fixtures/keys/public.key"
3137
permissionCheck: false
3238
3339
services:
@@ -47,6 +53,7 @@
4753
Assert::count(1, $container->findByType(ResourceServer::class));
4854
});
4955

56+
// Test encryption key as Statement
5057
Toolkit::test(function (): void {
5158
$loader = new ContainerLoader(Environment::getTmpDir(), true);
5259
$class = $loader->load(function (Compiler $compiler): void {
@@ -55,11 +62,11 @@
5562
oauth2.server:
5663
encryptionKey: Defuse\Crypto\Key::loadFromAsciiSafeString("fake")
5764
privateKey:
58-
path: "../../fixtures/keys/private.key"
65+
path: "../../Fixtures/keys/private.key"
5966
passPhrase: "foo"
6067
permissionCheck: false
6168
publicKey:
62-
path: "../../fixtures/keys/public.key"
69+
path: "../../Fixtures/keys/public.key"
6370
permissionCheck: false
6471
6572
services:
@@ -78,3 +85,159 @@
7885
Assert::count(1, $container->findByType(AuthorizationServer::class));
7986
Assert::count(1, $container->findByType(ResourceServer::class));
8087
});
88+
89+
// Test grants with default TTL
90+
Toolkit::test(function (): void {
91+
$loader = new ContainerLoader(Environment::getTmpDir(), true);
92+
$class = $loader->load(function (Compiler $compiler): void {
93+
$compiler->addExtension('oauth2.server', new OAuth2ServerExtension());
94+
$compiler->loadConfig(FileMock::create('
95+
oauth2.server:
96+
encryptionKey: "fake"
97+
privateKey:
98+
path: "../../Fixtures/keys/private.key"
99+
passPhrase: "foo"
100+
permissionCheck: false
101+
publicKey:
102+
path: "../../Fixtures/keys/public.key"
103+
permissionCheck: false
104+
grants:
105+
clientCredentials: []
106+
password: []
107+
refreshToken: []
108+
109+
services:
110+
- Tests\Fixtures\Repositories\ClientRepository
111+
- Tests\Fixtures\Repositories\AccessTokenRepository
112+
- Tests\Fixtures\Repositories\ScopeRepository
113+
- Tests\Fixtures\Repositories\AuthCodeRepository
114+
- Tests\Fixtures\Repositories\RefreshTokenRepository
115+
- Tests\Fixtures\Repositories\UserRepository
116+
', 'neon'));
117+
}, [getmypid(), 3]);
118+
119+
/** @var Container $container */
120+
$container = new $class();
121+
122+
Assert::count(1, $container->findByType(AuthorizationServer::class));
123+
Assert::count(1, $container->findByType(ClientCredentialsGrant::class));
124+
Assert::count(1, $container->findByType(PasswordGrant::class));
125+
Assert::count(1, $container->findByType(RefreshTokenGrant::class));
126+
});
127+
128+
// Test grants with custom TTL (issue #14)
129+
Toolkit::test(function (): void {
130+
$loader = new ContainerLoader(Environment::getTmpDir(), true);
131+
$class = $loader->load(function (Compiler $compiler): void {
132+
$compiler->addExtension('oauth2.server', new OAuth2ServerExtension());
133+
$compiler->loadConfig(FileMock::create('
134+
oauth2.server:
135+
encryptionKey: "fake"
136+
privateKey:
137+
path: "../../Fixtures/keys/private.key"
138+
passPhrase: "foo"
139+
permissionCheck: false
140+
publicKey:
141+
path: "../../Fixtures/keys/public.key"
142+
permissionCheck: false
143+
grants:
144+
clientCredentials:
145+
ttl: PT30M
146+
password:
147+
ttl: PT1H
148+
refreshToken:
149+
ttl: P7D
150+
151+
services:
152+
- Tests\Fixtures\Repositories\ClientRepository
153+
- Tests\Fixtures\Repositories\AccessTokenRepository
154+
- Tests\Fixtures\Repositories\ScopeRepository
155+
- Tests\Fixtures\Repositories\AuthCodeRepository
156+
- Tests\Fixtures\Repositories\RefreshTokenRepository
157+
- Tests\Fixtures\Repositories\UserRepository
158+
', 'neon'));
159+
}, [getmypid(), 4]);
160+
161+
/** @var Container $container */
162+
$container = new $class();
163+
164+
Assert::count(1, $container->findByType(AuthorizationServer::class));
165+
Assert::count(1, $container->findByType(ClientCredentialsGrant::class));
166+
Assert::count(1, $container->findByType(PasswordGrant::class));
167+
Assert::count(1, $container->findByType(RefreshTokenGrant::class));
168+
});
169+
170+
// Test authCode grant with all options
171+
Toolkit::test(function (): void {
172+
$loader = new ContainerLoader(Environment::getTmpDir(), true);
173+
$class = $loader->load(function (Compiler $compiler): void {
174+
$compiler->addExtension('oauth2.server', new OAuth2ServerExtension());
175+
$compiler->loadConfig(FileMock::create('
176+
oauth2.server:
177+
encryptionKey: "fake"
178+
privateKey:
179+
path: "../../Fixtures/keys/private.key"
180+
passPhrase: "foo"
181+
permissionCheck: false
182+
publicKey:
183+
path: "../../Fixtures/keys/public.key"
184+
permissionCheck: false
185+
grants:
186+
authCode:
187+
ttl: PT1H
188+
authCodeTTL: PT5M
189+
codeExchangeProof: true
190+
191+
services:
192+
- Tests\Fixtures\Repositories\ClientRepository
193+
- Tests\Fixtures\Repositories\AccessTokenRepository
194+
- Tests\Fixtures\Repositories\ScopeRepository
195+
- Tests\Fixtures\Repositories\AuthCodeRepository
196+
- Tests\Fixtures\Repositories\RefreshTokenRepository
197+
- Tests\Fixtures\Repositories\UserRepository
198+
', 'neon'));
199+
}, [getmypid(), 5]);
200+
201+
/** @var Container $container */
202+
$container = new $class();
203+
204+
Assert::count(1, $container->findByType(AuthorizationServer::class));
205+
Assert::count(1, $container->findByType(AuthCodeGrant::class));
206+
});
207+
208+
// Test implicit grant with accessTokenTTL
209+
Toolkit::test(function (): void {
210+
$loader = new ContainerLoader(Environment::getTmpDir(), true);
211+
$class = $loader->load(function (Compiler $compiler): void {
212+
$compiler->addExtension('oauth2.server', new OAuth2ServerExtension());
213+
$compiler->loadConfig(FileMock::create('
214+
oauth2.server:
215+
encryptionKey: "fake"
216+
privateKey:
217+
path: "../../Fixtures/keys/private.key"
218+
passPhrase: "foo"
219+
permissionCheck: false
220+
publicKey:
221+
path: "../../Fixtures/keys/public.key"
222+
permissionCheck: false
223+
grants:
224+
implicit:
225+
ttl: PT2H
226+
accessTokenTTL: PT15M
227+
228+
services:
229+
- Tests\Fixtures\Repositories\ClientRepository
230+
- Tests\Fixtures\Repositories\AccessTokenRepository
231+
- Tests\Fixtures\Repositories\ScopeRepository
232+
- Tests\Fixtures\Repositories\AuthCodeRepository
233+
- Tests\Fixtures\Repositories\RefreshTokenRepository
234+
- Tests\Fixtures\Repositories\UserRepository
235+
', 'neon'));
236+
}, [getmypid(), 6]);
237+
238+
/** @var Container $container */
239+
$container = new $class();
240+
241+
Assert::count(1, $container->findByType(AuthorizationServer::class));
242+
Assert::count(1, $container->findByType(ImplicitGrant::class));
243+
});

tests/Cases/E2E/AuthorizationServerTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,14 @@
3333
oauth2.server:
3434
encryptionKey: "Fc+FESy6/yfOlXMBW65BXoSZsfWJkP5jCV9w0fyFfw4="
3535
privateKey:
36-
path: "%s/../../fixtures/keys/private.key"
36+
path: "%s/../../Fixtures/keys/private.key"
3737
passPhrase: foo
3838
permissionCheck: false
3939
publicKey:
40-
path: "%s/../../fixtures/keys/public.key"
40+
path: "%s/../../Fixtures/keys/public.key"
4141
permissionCheck: false
4242
grants:
43-
refreshToken: true
43+
refreshToken: []
4444
4545
services:
4646
- Tests\Fixtures\Repositories\ClientRepository
File renamed without changes.
File renamed without changes.
File renamed without changes.

tests/fixtures/Repositories/RefreshTokenRepository.php renamed to tests/Fixtures/Repositories/RefreshTokenRepository.php

File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)