Skip to content

Commit 5d2e571

Browse files
fix tests
1 parent e45c21b commit 5d2e571

File tree

4 files changed

+242
-96
lines changed

4 files changed

+242
-96
lines changed

tests/Handlers/AbstractTokenHandlerTest.php

Lines changed: 70 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ public function setUp(): void
3737

3838
public function testSetBearerTokenValidator(): void
3939
{
40-
$request = new ServerRequest();
41-
$accessToken = 'abcdef';
40+
$request = (new ServerRequest())->withParsedBody([
41+
'token' => 'abcdef',
42+
]);
4243
$client = new ClientEntity();
4344
$client->setIdentifier('client1');
4445

@@ -52,24 +53,14 @@ public function testSetBearerTokenValidator(): void
5253
$handler = $this->getAbstractTokenHandler();
5354
$handler->setBearerTokenValidator($validator);
5455

55-
$result = (fn () => $this->validateAccessToken($request, $accessToken, $client))->call($handler);
56+
$result = (fn () => $this->validateToken($request, $client))->call($handler);
5657

5758
self::assertSame(['access_token', ['foo' => 'bar']], $result);
5859
}
5960

6061
public function testValidateToken(): void
6162
{
6263
$client = new ClientEntity();
63-
$request = new ServerRequest();
64-
65-
try {
66-
(fn () => $this->validateToken($request, $client))->call($this->getAbstractTokenHandlerWithToken());
67-
68-
self::fail('The expected exception was not thrown');
69-
} catch (OAuthServerException $e) {
70-
self::assertSame('invalid_request', $e->getErrorType());
71-
}
72-
7364
$request = (new ServerRequest())->withParsedBody(['token' => 'token1']);
7465

7566
self::assertSame(['access_token', ['foo' => 'bar']], (fn () => $this->validateToken($request, $client))->call(
@@ -99,9 +90,6 @@ public function testValidateToken(): void
9990

10091
$request = (new ServerRequest())->withParsedBody(['token' => 'token1', 'token_type_hint' => 'refresh_token']);
10192

102-
self::assertSame(['refresh_token', ['bar' => 'foo']], (fn () => $this->validateToken($request, $client))->call(
103-
$this->getAbstractTokenHandlerWithToken(accessToken: ['foo' => 'bar'], refreshToken: ['bar' => 'foo'])
104-
));
10593
self::assertSame(['access_token', ['foo' => 'bar']], (fn () => $this->validateToken($request, $client))->call(
10694
$this->getAbstractTokenHandlerWithToken(accessToken: ['foo' => 'bar'])
10795
));
@@ -122,19 +110,21 @@ public function testValidateAccessToken(): void
122110
$handler = $this->getAbstractTokenHandler();
123111
$handler->setAccessTokenRepository($accessTokenRepository);
124112

125-
$request = new ServerRequest();
126113
$expireTime = time() + 1000;
127114
$accessToken = $this->getJwtToken(fn (Builder $builder) =>
128115
$builder->permittedFor('client1')
129116
->relatedTo('user1')
130117
->identifiedBy('access1')
131118
->expiresAt((new DateTimeImmutable())->setTimestamp($expireTime))
132119
->withClaim('foo', 'bar'));
120+
$request = (new ServerRequest())->withParsedBody([
121+
'token' => $accessToken,
122+
]);
133123
$client = new ClientEntity();
134124
$client->setIdentifier('client1');
135125

136126
/** @var array{0:non-empty-string, 1:array<non-empty-string, mixed>} $result */
137-
$result = (fn () => $this->validateAccessToken($request, $accessToken, $client))->call($handler);
127+
$result = (fn () => $this->validateToken($request, $client))->call($handler);
138128
$result[1]['exp'] = $result[1]['exp']->getTimestamp();
139129

140130
self::assertSame(['access_token', [
@@ -158,19 +148,21 @@ public function testValidateAccessTokenIsRevoked(): void
158148
$handler = $this->getAbstractTokenHandler();
159149
$handler->setAccessTokenRepository($accessTokenRepository);
160150

161-
$request = new ServerRequest();
162151
$expireTime = time() + 1000;
163152
$accessToken = $this->getJwtToken(fn (Builder $builder) =>
164-
$builder->permittedFor('client1')
165-
->relatedTo('user1')
166-
->identifiedBy('access1')
167-
->expiresAt((new DateTimeImmutable())->setTimestamp($expireTime)));
153+
$builder->permittedFor('client1')
154+
->relatedTo('user1')
155+
->identifiedBy('access1')
156+
->expiresAt((new DateTimeImmutable())->setTimestamp($expireTime)));
157+
$request = (new ServerRequest())->withParsedBody([
158+
'token' => $accessToken,
159+
]);
168160
$client = new ClientEntity();
169161
$client->setIdentifier('client1');
170162

171-
$result = (fn () => $this->validateAccessToken($request, $accessToken, $client))->call($handler);
163+
$result = (fn () => $this->validateToken($request, $client))->call($handler);
172164

173-
self::assertNull($result);
165+
self::assertSame([null, null], $result);
174166
}
175167

176168
public function testValidateAccessTokenIsExpired(): void
@@ -181,19 +173,21 @@ public function testValidateAccessTokenIsExpired(): void
181173
$handler = $this->getAbstractTokenHandler();
182174
$handler->setAccessTokenRepository($accessTokenRepository);
183175

184-
$request = new ServerRequest();
185176
$expireTime = time() - 1000;
186177
$accessToken = $this->getJwtToken(fn (Builder $builder) =>
187-
$builder->permittedFor('client1')
188-
->relatedTo('user1')
189-
->identifiedBy('access1')
190-
->expiresAt((new DateTimeImmutable())->setTimestamp($expireTime)));
178+
$builder->permittedFor('client1')
179+
->relatedTo('user1')
180+
->identifiedBy('access1')
181+
->expiresAt((new DateTimeImmutable())->setTimestamp($expireTime)));
182+
$request = (new ServerRequest())->withParsedBody([
183+
'token' => $accessToken,
184+
]);
191185
$client = new ClientEntity();
192186
$client->setIdentifier('client1');
193187

194-
$result = (fn () => $this->validateAccessToken($request, $accessToken, $client))->call($handler);
188+
$result = (fn () => $this->validateToken($request, $client))->call($handler);
195189

196-
self::assertNull($result);
190+
self::assertSame([null, null], $result);
197191
}
198192

199193
public function testValidateAccessTokenWithMismatchClient(): void
@@ -204,19 +198,21 @@ public function testValidateAccessTokenWithMismatchClient(): void
204198
$handler = $this->getAbstractTokenHandler();
205199
$handler->setAccessTokenRepository($accessTokenRepository);
206200

207-
$request = new ServerRequest();
208201
$expireTime = time() + 1000;
209202
$accessToken = $this->getJwtToken(fn (Builder $builder) =>
210-
$builder->permittedFor('client2')
211-
->relatedTo('user1')
212-
->identifiedBy('access1')
213-
->expiresAt((new DateTimeImmutable())->setTimestamp($expireTime)));
203+
$builder->permittedFor('client2')
204+
->relatedTo('user1')
205+
->identifiedBy('access1')
206+
->expiresAt((new DateTimeImmutable())->setTimestamp($expireTime)));
207+
$request = (new ServerRequest())->withParsedBody([
208+
'token' => $accessToken,
209+
]);
214210
$client = new ClientEntity();
215211
$client->setIdentifier('client1');
216212

217-
$result = (fn () => $this->validateAccessToken($request, $accessToken, $client))->call($handler);
213+
$result = (fn () => $this->validateToken($request, $client))->call($handler);
218214

219-
self::assertNull($result);
215+
self::assertSame([null, null], $result);
220216
}
221217

222218
public function testValidateAccessTokenWithInvalidToken(): void
@@ -227,14 +223,15 @@ public function testValidateAccessTokenWithInvalidToken(): void
227223
$handler = $this->getAbstractTokenHandler();
228224
$handler->setAccessTokenRepository($accessTokenRepository);
229225

230-
$request = new ServerRequest();
231-
$accessToken = 'abcdef';
226+
$request = (new ServerRequest())->withParsedBody([
227+
'token' => 'abcdef',
228+
]);
232229
$client = new ClientEntity();
233230
$client->setIdentifier('client1');
234231

235-
$result = (fn () => $this->validateAccessToken($request, $accessToken, $client))->call($handler);
232+
$result = (fn () => $this->validateToken($request, $client))->call($handler);
236233

237-
self::assertNull($result);
234+
self::assertSame([null, null], $result);
238235
}
239236

240237
public function testValidateRefreshToken(): void
@@ -249,17 +246,19 @@ public function testValidateRefreshToken(): void
249246
$handler = $this->getAbstractTokenHandler();
250247
$handler->setRefreshTokenRepository($refreshTokenRepository);
251248

252-
$request = new ServerRequest();
253249
$refreshToken = $this->encrypt(json_encode([
254250
'refresh_token_id' => 'refresh1',
255251
'expire_time' => $expireTime = time() + 1000,
256252
'client_id' => 'client1',
257253
'foo' => 'bar',
258254
], flags: JSON_THROW_ON_ERROR));
255+
$request = (new ServerRequest())->withParsedBody([
256+
'token' => $refreshToken,
257+
]);
259258
$client = new ClientEntity();
260259
$client->setIdentifier('client1');
261260

262-
$result = (fn () => $this->validateRefreshToken($request, $refreshToken, $client))->call($handler);
261+
$result = (fn () => $this->validateToken($request, $client))->call($handler);
263262

264263
self::assertSame(['refresh_token', [
265264
'refresh_token_id' => 'refresh1',
@@ -281,18 +280,20 @@ public function testValidateRefreshTokenIsRevoked(): void
281280
$handler = $this->getAbstractTokenHandler();
282281
$handler->setRefreshTokenRepository($refreshTokenRepository);
283282

284-
$request = new ServerRequest();
285283
$refreshToken = $this->encrypt(json_encode([
286284
'refresh_token_id' => 'refresh1',
287285
'expire_time' => time() + 1000,
288286
'client_id' => 'client1',
289287
], flags: JSON_THROW_ON_ERROR));
288+
$request = (new ServerRequest())->withParsedBody([
289+
'token' => $refreshToken,
290+
]);
290291
$client = new ClientEntity();
291292
$client->setIdentifier('client1');
292293

293-
$result = (fn () => $this->validateRefreshToken($request, $refreshToken, $client))->call($handler);
294+
$result = (fn () => $this->validateToken($request, $client))->call($handler);
294295

295-
self::assertNull($result);
296+
self::assertSame([null, null], $result);
296297
}
297298

298299
public function testValidateRefreshTokenIsExpired(): void
@@ -303,18 +304,20 @@ public function testValidateRefreshTokenIsExpired(): void
303304
$handler = $this->getAbstractTokenHandler();
304305
$handler->setRefreshTokenRepository($refreshTokenRepository);
305306

306-
$request = new ServerRequest();
307307
$refreshToken = $this->encrypt(json_encode([
308308
'refresh_token_id' => 'refresh1',
309309
'expire_time' => time() - 1000,
310310
'client_id' => 'client1',
311311
], flags: JSON_THROW_ON_ERROR));
312+
$request = (new ServerRequest())->withParsedBody([
313+
'token' => $refreshToken,
314+
]);
312315
$client = new ClientEntity();
313316
$client->setIdentifier('client1');
314317

315-
$result = (fn () => $this->validateRefreshToken($request, $refreshToken, $client))->call($handler);
318+
$result = (fn () => $this->validateToken($request, $client))->call($handler);
316319

317-
self::assertNull($result);
320+
self::assertSame([null, null], $result);
318321
}
319322

320323
public function testValidateRefreshTokenWithMismatchClient(): void
@@ -325,18 +328,20 @@ public function testValidateRefreshTokenWithMismatchClient(): void
325328
$handler = $this->getAbstractTokenHandler();
326329
$handler->setRefreshTokenRepository($refreshTokenRepository);
327330

328-
$request = new ServerRequest();
329331
$refreshToken = $this->encrypt(json_encode([
330332
'refresh_token_id' => 'refresh1',
331333
'expire_time' => time() + 1000,
332334
'client_id' => 'client2',
333335
], flags: JSON_THROW_ON_ERROR));
336+
$request = (new ServerRequest())->withParsedBody([
337+
'token' => $refreshToken,
338+
]);
334339
$client = new ClientEntity();
335340
$client->setIdentifier('client1');
336341

337-
$result = (fn () => $this->validateRefreshToken($request, $refreshToken, $client))->call($handler);
342+
$result = (fn () => $this->validateToken($request, $client))->call($handler);
338343

339-
self::assertNull($result);
344+
self::assertSame([null, null], $result);
340345
}
341346

342347
public function testValidateRefreshTokenWithInvalidToken(): void
@@ -347,14 +352,15 @@ public function testValidateRefreshTokenWithInvalidToken(): void
347352
$handler = $this->getAbstractTokenHandler();
348353
$handler->setRefreshTokenRepository($refreshTokenRepository);
349354

350-
$request = new ServerRequest();
351-
$refreshToken = 'abcdef';
355+
$request = (new ServerRequest())->withParsedBody([
356+
'token' => 'abcdef',
357+
]);
352358
$client = new ClientEntity();
353359
$client->setIdentifier('client1');
354360

355-
$result = (fn () => $this->validateRefreshToken($request, $refreshToken, $client))->call($handler);
361+
$result = (fn () => $this->validateToken($request, $client))->call($handler);
356362

357-
self::assertNull($result);
363+
self::assertSame([null, null], $result);
358364
}
359365

360366
/**
@@ -379,14 +385,14 @@ private function getAbstractTokenHandler(): MockObject
379385
private function getAbstractTokenHandlerWithToken(?array $accessToken = null, ?array $refreshToken = null): MockObject
380386
{
381387
$handler = $this->getMockBuilder(AbstractTokenHandler::class)
382-
->onlyMethods(['respondToRequest', 'validateAccessToken', 'validateRefreshToken'])
388+
->onlyMethods(['respondToRequest', 'validateToken'])
383389
->getMock();
384390

385-
$handler->method('validateAccessToken')
386-
->willReturn($accessToken === null ? null : ['access_token', $accessToken]);
387-
388-
$handler->method('validateRefreshToken')
389-
->willReturn($refreshToken === null ? null : ['refresh_token', $refreshToken]);
391+
$handler->method('validateToken')->willReturn(match (true) {
392+
$accessToken !== null => ['access_token', $accessToken],
393+
$refreshToken !== null => ['refresh_token', $refreshToken],
394+
default => [null, null],
395+
});
390396

391397
return $handler;
392398
}

0 commit comments

Comments
 (0)