Skip to content

Commit a9bf17e

Browse files
authored
Merge pull request #94 from basz/master
implement psr15
2 parents ca25d4b + 732d681 commit a9bf17e

10 files changed

+53
-53
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## dev-master
44

5+
* Implement PSR15
6+
57
## v0.8.0-beta2
68

79
* When an token can't be found the returned error response by the resource server middleware is now in a similar format to other errors. This might BC if your client depends on the error key in the message.

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
"zendframework/zend-diactoros": "^1.1",
2727
"psr/container": "^1.0",
2828
"ramsey/uuid": "^3.1",
29-
"roave/security-advisories": "dev-master"
29+
"roave/security-advisories": "dev-master",
30+
"http-interop/http-middleware": "^0.4.1"
3031
},
3132
"require-dev": {
3233
"friendsofphp/php-cs-fixer": "^2.1",

src/Middleware/AuthorizationRequestMiddleware.php

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,16 @@
2121

2222
namespace ZfrOAuth2\Server\Middleware;
2323

24+
use Interop\Http\ServerMiddleware\DelegateInterface;
25+
use Interop\Http\ServerMiddleware\MiddlewareInterface;
2426
use Psr\Http\Message\ResponseInterface;
2527
use Psr\Http\Message\ServerRequestInterface;
2628
use ZfrOAuth2\Server\AuthorizationServerInterface;
2729

2830
/**
2931
* Authorization request middleware endpoint of the authorization server
3032
*/
31-
class AuthorizationRequestMiddleware
33+
class AuthorizationRequestMiddleware implements MiddlewareInterface
3234
{
3335
/**
3436
* @var AuthorizationServerInterface
@@ -48,11 +50,8 @@ public function __construct(
4850
$this->ownerRequestAttribute = $ownerRequestAttribute;
4951
}
5052

51-
public function __invoke(
52-
ServerRequestInterface $request,
53-
ResponseInterface $response,
54-
callable $next
55-
): ResponseInterface {
53+
public function process(ServerRequestInterface $request, DelegateInterface $delegate): ResponseInterface
54+
{
5655
$owner = $request->getAttribute($this->ownerRequestAttribute);
5756

5857
return $this->authorizationServer->handleAuthorizationRequest($request, $owner);

src/Middleware/ResourceServerMiddleware.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121

2222
namespace ZfrOAuth2\Server\Middleware;
2323

24+
use Interop\Http\ServerMiddleware\DelegateInterface;
25+
use Interop\Http\ServerMiddleware\MiddlewareInterface;
2426
use Psr\Http\Message\ResponseInterface;
2527
use Psr\Http\Message\ServerRequestInterface;
2628
use Zend\Diactoros\Response\JsonResponse;
@@ -36,7 +38,7 @@
3638
* If the token is valid, it will store it as part of the request under the attribute "oauth_token", so that it can
3739
* be used later one by a permission system, for instance
3840
*/
39-
class ResourceServerMiddleware
41+
class ResourceServerMiddleware implements MiddlewareInterface
4042
{
4143
/**
4244
* @var ResourceServerInterface
@@ -57,11 +59,8 @@ public function __construct(ResourceServerInterface $resourceServer, string $tok
5759
$this->tokenRequestAttribute = $tokenRequestAttribute;
5860
}
5961

60-
public function __invoke(
61-
ServerRequestInterface $request,
62-
ResponseInterface $response,
63-
callable $next
64-
): ResponseInterface {
62+
public function process(ServerRequestInterface $request, DelegateInterface $delegate): ResponseInterface
63+
{
6564
try {
6665
$token = $this->resourceServer->getAccessToken($request);
6766
} catch (InvalidAccessTokenException $exception) {
@@ -72,6 +71,6 @@ public function __invoke(
7271
}
7372

7473
// Otherwise, if we actually have a token and set it as part of the request attribute for next step
75-
return $next($request->withAttribute($this->tokenRequestAttribute, $token), $response);
74+
return $delegate->process($request->withAttribute($this->tokenRequestAttribute, $token));
7675
}
7776
}

src/Middleware/RevocationRequestMiddleware.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
declare(strict_types = 1);
3+
declare(strict_types=1);
44

55
/*
66
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
@@ -21,14 +21,16 @@
2121

2222
namespace ZfrOAuth2\Server\Middleware;
2323

24+
use Interop\Http\ServerMiddleware\DelegateInterface;
25+
use Interop\Http\ServerMiddleware\MiddlewareInterface;
2426
use Psr\Http\Message\ResponseInterface;
2527
use Psr\Http\Message\ServerRequestInterface;
2628
use ZfrOAuth2\Server\AuthorizationServerInterface;
2729

2830
/**
2931
* Token revocation request middleware endpoint of the authorization server
3032
*/
31-
class RevocationRequestMiddleware
33+
class RevocationRequestMiddleware implements MiddlewareInterface
3234
{
3335
/**
3436
* @var AuthorizationServerInterface
@@ -40,11 +42,8 @@ public function __construct(AuthorizationServerInterface $authorizationServer)
4042
$this->authorizationServer = $authorizationServer;
4143
}
4244

43-
public function __invoke(
44-
ServerRequestInterface $request,
45-
ResponseInterface $response,
46-
callable $next
47-
): ResponseInterface {
45+
public function process(ServerRequestInterface $request, DelegateInterface $delegate): ResponseInterface
46+
{
4847
return $this->authorizationServer->handleRevocationRequest($request);
4948
}
5049
}

src/Middleware/TokenRequestMiddleware.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
declare(strict_types = 1);
3+
declare(strict_types=1);
44

55
/*
66
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
@@ -21,14 +21,16 @@
2121

2222
namespace ZfrOAuth2\Server\Middleware;
2323

24+
use Interop\Http\ServerMiddleware\DelegateInterface;
25+
use Interop\Http\ServerMiddleware\MiddlewareInterface;
2426
use Psr\Http\Message\ResponseInterface;
2527
use Psr\Http\Message\ServerRequestInterface;
2628
use ZfrOAuth2\Server\AuthorizationServerInterface;
2729

2830
/**
2931
* Token request request middleware endpoint of the authorization server
3032
*/
31-
class TokenRequestMiddleware
33+
class TokenRequestMiddleware implements MiddlewareInterface
3234
{
3335
/**
3436
* @var AuthorizationServerInterface
@@ -40,11 +42,8 @@ public function __construct(AuthorizationServerInterface $authorizationServer)
4042
$this->authorizationServer = $authorizationServer;
4143
}
4244

43-
public function __invoke(
44-
ServerRequestInterface $request,
45-
ResponseInterface $response,
46-
callable $next
47-
): ResponseInterface {
45+
public function process(ServerRequestInterface $request, DelegateInterface $delegate): ResponseInterface
46+
{
4847
return $this->authorizationServer->handleTokenRequest($request);
4948
}
5049
}

tests/src/Middleware/AuthorizationRequestMiddlewareTest.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@
2020

2121
namespace ZfrOAuth2Test\Server\Middleware;
2222

23+
use Interop\Http\ServerMiddleware\DelegateInterface;
2324
use PHPUnit\Framework\TestCase;
2425
use Psr\Http\Message\ResponseInterface;
2526
use Psr\Http\Message\ServerRequestInterface as RequestInterface;
2627
use ZfrOAuth2\Server\AuthorizationServerInterface;
2728
use ZfrOAuth2\Server\Middleware\AuthorizationRequestMiddleware;
28-
use ZfrOAuth2\Server\Options\ServerOptions;
2929

3030
/**
3131
* @author Michaël Gallego <mic.gallego@gmail.com>
@@ -37,18 +37,16 @@ class AuthorizationRequestMiddlewareTest extends TestCase
3737
public function testWillHandleAuthorizationRequest()
3838
{
3939
$authorizationServer = $this->createMock(AuthorizationServerInterface::class);
40-
$serverOptions = ServerOptions::fromArray();
4140
$middleware = new AuthorizationRequestMiddleware($authorizationServer, 'owner');
4241

4342
$request = $this->createMock(RequestInterface::class);
44-
$response = $this->createMock(ResponseInterface::class);
43+
$delegate = $this->createMock(DelegateInterface::class);
4544

4645
$authorizationServer->expects($this->once())
4746
->method('handleAuthorizationRequest')
4847
->with($request)
4948
->willReturn($this->createMock(ResponseInterface::class));
5049

51-
$middleware($request, $response, function () {
52-
});
50+
$middleware->process($request, $delegate);
5351
}
5452
}

tests/src/Middleware/ResourceServerMiddlewareTest.php

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
namespace ZfrOAuth2Test\Server\Middleware;
2222

23+
use Interop\Http\ServerMiddleware\DelegateInterface;
2324
use PHPUnit\Framework\TestCase;
2425
use Psr\Http\Message\ResponseInterface;
2526
use Psr\Http\Message\ServerRequestInterface as RequestInterface;
@@ -43,6 +44,12 @@ public function testWillGetAccessTokenWithAccessTokenAsResult()
4344
$accessToken = $this->createMock(AccessToken::class);
4445
$request = $this->createMock(RequestInterface::class);
4546
$response = $this->createMock(ResponseInterface::class);
47+
$delegate = $this->createMock(DelegateInterface::class);
48+
49+
$delegate->expects($this->once())
50+
->method('process')
51+
->with($request)
52+
->willReturn($response);
4653

4754
$resourceServer->expects($this->once())
4855
->method('getAccessToken')
@@ -57,9 +64,7 @@ public function testWillGetAccessTokenWithAccessTokenAsResult()
5764
)
5865
->willReturn($request);
5966

60-
$middleware($request, $response, function ($request, $response) {
61-
return $response;
62-
});
67+
$middleware->process($request, $delegate);
6368
}
6469

6570
public function testWillGetAccessTokenWithNullAsResult()
@@ -69,6 +74,12 @@ public function testWillGetAccessTokenWithNullAsResult()
6974
$accessToken = null;
7075
$request = $this->createMock(RequestInterface::class);
7176
$response = $this->createMock(ResponseInterface::class);
77+
$delegate = $this->createMock(DelegateInterface::class);
78+
79+
$delegate->expects($this->once())
80+
->method('process')
81+
->with($request)
82+
->willReturn($response);
7283

7384
$resourceServer->expects($this->once())
7485
->method('getAccessToken')
@@ -83,26 +94,22 @@ public function testWillGetAccessTokenWithNullAsResult()
8394
)
8495
->willReturn($request);
8596

86-
$middleware($request, $response, function ($request, $response) {
87-
return $response;
88-
});
97+
$result = $middleware->process($request, $delegate);
8998
}
9099

91100
public function testWillCallGetAccessTokenWithException()
92101
{
93102
$resourceServer = $this->createMock(ResourceServer::class);
94103
$middleware = new ResourceServerMiddleware($resourceServer, 'oauth_token');
95104
$request = $this->createMock(RequestInterface::class);
96-
$response = $this->createMock(ResponseInterface::class);
105+
$delegate = $this->createMock(DelegateInterface::class);
97106

98107
$resourceServer->expects($this->once())
99108
->method('getAccessToken')
100109
->with($request)
101110
->willThrowException(InvalidAccessTokenException::invalidToken('error message'));
102111

103-
$result = $middleware($request, $response, function ($request, $response) {
104-
return $response;
105-
});
112+
$result = $middleware->process($request, $delegate);
106113

107114
$this->assertInstanceOf(JsonResponse::class, $result);
108115

tests/src/Middleware/RevocationRequestMiddlewareTest.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
namespace ZfrOAuth2Test\Server\Middleware;
2222

23+
use Interop\Http\ServerMiddleware\DelegateInterface;
2324
use PHPUnit\Framework\TestCase;
2425
use Psr\Http\Message\ResponseInterface;
2526
use Psr\Http\Message\ServerRequestInterface as RequestInterface;
@@ -52,16 +53,13 @@ public function setUp()
5253
public function testCanHandleRevocationRequest()
5354
{
5455
$request = $this->createMock(RequestInterface::class);
55-
$response = $this->createMock(ResponseInterface::class);
56-
$next = function () {
57-
};
56+
$delegate = $this->createMock(DelegateInterface::class);
5857

5958
$this->authorizationServer->expects($this->once())
6059
->method('handleRevocationRequest')
6160
->with($request)
6261
->willReturn($this->createMock(ResponseInterface::class));
6362

64-
$middleware = $this->middleware;
65-
$middleware ($request, $response, $next);
63+
$this->middleware->process($request, $delegate);
6664
}
6765
}

tests/src/Middleware/TokenRequestMiddlewareTest.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
namespace ZfrOAuth2Test\Server\Middleware;
2222

23+
use Interop\Http\ServerMiddleware\DelegateInterface;
2324
use PHPUnit\Framework\TestCase;
2425
use Psr\Http\Message\ResponseInterface;
2526
use Psr\Http\Message\ServerRequestInterface as RequestInterface;
@@ -52,16 +53,13 @@ public function setUp()
5253
public function testCanHandleTokenRequest()
5354
{
5455
$request = $this->createMock(RequestInterface::class);
55-
$response = $this->createMock(ResponseInterface::class);
56-
$next = function () {
57-
};
56+
$delegate = $this->createMock(DelegateInterface::class);
5857

5958
$this->authorizationServer->expects($this->once())
6059
->method('handleTokenRequest')
6160
->with($request)
6261
->willReturn($this->createMock(ResponseInterface::class));
6362

64-
$middleware = $this->middleware;
65-
$middleware ($request, $response, $next);
63+
$this->middleware->process($request, $delegate);
6664
}
6765
}

0 commit comments

Comments
 (0)