Skip to content

Commit

Permalink
Merge pull request #8 from php-middleware/psr-15
Browse files Browse the repository at this point in the history
Psr 15
  • Loading branch information
snapshotpl authored May 11, 2017
2 parents 2d8ae34 + cd8da31 commit 2f59dca
Show file tree
Hide file tree
Showing 13 changed files with 99 additions and 75 deletions.
23 changes: 13 additions & 10 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
language: php

matrix:
fast_finish: true
include:
- php: 5.5
- php: 5.6
- php: 7
- php: hhvm
php:
- 5.6
- 7.0
- 7.1

install:
- travis_retry composer install --no-interaction --ignore-platform-reqs --prefer-source
- composer info -i
env:
- DEPS=lowest
- DEPS=latest

before_script:
- phpenv config-rm xdebug.ini
- composer self-update
- if [[ $DEPS == 'lowest' ]]; then composer update --prefer-stable --no-interaction --prefer-lowest ; fi
- if [[ $DEPS == 'latest' ]]; then composer update --prefer-stable --no-interaction ; fi

script:
- ./vendor/bin/phpunit
8 changes: 5 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@
"request-id"
],
"require": {
"php": "^5.5 || ^7.0",
"psr/http-message": "^1.0"
"php": "^5.6 || ^7.0",
"psr/http-message": "^1.0",
"php-middleware/double-pass-compatibility": "^1.0",
"http-interop/http-middleware": "^0.4.1"
},
"require-dev": {
"phpunit/phpunit": "^4.8.6",
"phpunit/phpunit": "^5.6 || ^6.1.3",
"ramsey/uuid": "^3.0",
"zendframework/zend-diactoros": "^1.1.3"
},
Expand Down
7 changes: 1 addition & 6 deletions phpunit.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,11 @@

<phpunit bootstrap="./vendor/autoload.php" colors="true">
<testsuites>
<testsuite name="PhpMiddleware\\LogHttpMessages Tests">
<testsuite>
<directory>./test</directory>
</testsuite>
</testsuites>

<logging>
<log type="coverage-clover" target="tmp/phpunit-coverage-clover.xml"/>
<log type="coverage-html" target="tmp/" />
</logging>

<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./src</directory>
Expand Down
50 changes: 37 additions & 13 deletions src/RequestIdMiddleware.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,18 @@

namespace PhpMiddleware\RequestId;

use Interop\Http\ServerMiddleware\DelegateInterface;
use Interop\Http\ServerMiddleware\MiddlewareInterface;
use PhpMiddleware\DoublePassCompatibilityTrait;
use PhpMiddleware\RequestId\Exception\NotGenerated;
use PhpMiddleware\RequestId\RequestIdProviderFactoryInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;

final class RequestIdMiddleware implements RequestIdProviderInterface
final class RequestIdMiddleware implements RequestIdProviderInterface, MiddlewareInterface
{
use DoublePassCompatibilityTrait;

const DEFAULT_RESPONSE_HEADER = 'X-Request-Id';
const ATTRIBUTE_NAME = 'request-id';

Expand Down Expand Up @@ -40,26 +45,45 @@ public function __construct(
}

/**
* @param ServerRequestInterface $request
* @param ResponseInterface $response
* @param callable $next
*
* @return ResponseInterface
*/
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
public function process(ServerRequestInterface $request, DelegateInterface $delegate)
{
$requestIdProvider = $this->requestIdProviderFactory->create($request);
$requestWithAttribute = $this->attachRequestIdToAttribute($request);

$response = $delegate->process($requestWithAttribute);

if ($this->canAttachToResponse()) {
return $this->attachRequestIdToResponse($response);
}
return $response;
}

/**
* @return ResponseInterface
*/
private function attachRequestIdToAttribute(ServerRequestInterface $request)
{
$requestIdProvider = $this->requestIdProviderFactory->create($request);
$this->requestId = $requestIdProvider->getRequestId();

$requestWithAttribute = $request->withAttribute(self::ATTRIBUTE_NAME, $this->requestId);
return $request->withAttribute(self::ATTRIBUTE_NAME, $this->requestId);
}

$nextResponse = $next($requestWithAttribute, $response);
/**
* @return ResponseInterface
*/
private function attachRequestIdToResponse(ResponseInterface $response)
{
return $response->withHeader($this->responseHeader, $this->requestId);
}

if (is_string($this->responseHeader)) {
return $nextResponse->withHeader($this->responseHeader, $this->requestId);
}
return $nextResponse;
/**
* @return bool
*/
private function canAttachToResponse()
{
return is_string($this->responseHeader) && !empty($this->responseHeader);
}

/**
Expand Down
6 changes: 3 additions & 3 deletions test/Generator/Md5GeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@

use PhpMiddleware\RequestId\Generator\GeneratorInterface;
use PhpMiddleware\RequestId\Generator\Md5Generator;
use PHPUnit_Framework_TestCase;
use PHPUnit\Framework\TestCase;

class Md5GeneratorTest extends PHPUnit_Framework_TestCase
class Md5GeneratorTest extends TestCase
{
protected $generator;

protected function setUp()
{
$decoratedGenerator = $this->getMock(GeneratorInterface::class);
$decoratedGenerator = $this->createMock(GeneratorInterface::class);
$decoratedGenerator->method('generateRequestId')->willReturn('boo');

$this->generator = new Md5Generator($decoratedGenerator);
Expand Down
4 changes: 2 additions & 2 deletions test/Generator/PhpUniqidGeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
namespace PhpMiddlewareTestTest\RequestId\Generator;

use PhpMiddleware\RequestId\Generator\PhpUniqidGenerator;
use PHPUnit_Framework_TestCase;
use PHPUnit\Framework\TestCase;

class PhpUniqidGeneratorTest extends PHPUnit_Framework_TestCase
class PhpUniqidGeneratorTest extends TestCase
{
protected $generator;

Expand Down
6 changes: 3 additions & 3 deletions test/Generator/PrefixedGeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@

use PhpMiddleware\RequestId\Generator\GeneratorInterface;
use PhpMiddleware\RequestId\Generator\PrefixedGenerator;
use PHPUnit_Framework_TestCase;
use PHPUnit\Framework\TestCase;

class PrefixedGeneratorTest extends PHPUnit_Framework_TestCase
class PrefixedGeneratorTest extends TestCase
{
protected $decoratedGenerator;

protected function setUp()
{
$this->decoratedGenerator = $this->getMock(GeneratorInterface::class);
$this->decoratedGenerator = $this->createMock(GeneratorInterface::class);
$this->decoratedGenerator->method('generateRequestId')->willReturn('boo');
}

Expand Down
8 changes: 4 additions & 4 deletions test/Generator/RamseyFactoryUuidGeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,20 @@
use PhpMiddleware\RequestId\Generator\RamseyUuid3Generator;
use PhpMiddleware\RequestId\Generator\RamseyUuid4Generator;
use PhpMiddleware\RequestId\Generator\RamseyUuid5Generator;
use PHPUnit_Framework_TestCase;
use PHPUnit\Framework\TestCase;
use Ramsey\Uuid\UuidFactoryInterface;
use Ramsey\Uuid\UuidInterface;

class RamseyFactoryUuidGeneratorTest extends PHPUnit_Framework_TestCase
class RamseyFactoryUuidGeneratorTest extends TestCase
{
protected $factory;
protected $uuid;

protected function setUp()
{
$this->factory = $this->getMock(UuidFactoryInterface::class);
$this->factory = $this->createMock(UuidFactoryInterface::class);

$this->uuid = $this->getMock(UuidInterface::class);
$this->uuid = $this->createMock(UuidInterface::class);
$this->uuid->method('toString')->willReturn('uuid');
}

Expand Down
4 changes: 2 additions & 2 deletions test/Generator/RamseyUuid4StaticGeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
namespace PhpMiddlewareTestTest\RequestId\Generator;

use PhpMiddleware\RequestId\Generator\RamseyUuid4StaticGenerator;
use PHPUnit_Framework_TestCase;
use PHPUnit\Framework\TestCase;
use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\UuidInterface;

class RamseyUuid4StaticGeneratorTest extends PHPUnit_Framework_TestCase
class RamseyUuid4StaticGeneratorTest extends TestCase
{
protected $generator;

Expand Down
8 changes: 3 additions & 5 deletions test/MonologProcessorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,11 @@
use PhpMiddleware\RequestId\Exception\MissingRequestId;
use PhpMiddleware\RequestId\MonologProcessor;
use PhpMiddleware\RequestId\RequestIdProviderInterface;
use PHPUnit\Framework\TestCase;

class MonologProcessorTest extends \PHPUnit_Framework_TestCase
class MonologProcessorTest extends TestCase
{
protected $processor;
/**
* @var RequestIdProviderInterface|\PHPUnit_Framework_MockObject_MockObject
*/
private $requestIdProvider;

public function testIsRequestIdInRecord()
Expand All @@ -38,7 +36,7 @@ public function testIsMissingRequestIdExceptionHandledProperly()

protected function setUp()
{
$this->requestIdProvider = $this->getMock(RequestIdProviderInterface::class);
$this->requestIdProvider = $this->createMock(RequestIdProviderInterface::class);
$this->processor = new MonologProcessor($this->requestIdProvider);
}
}
7 changes: 4 additions & 3 deletions test/RequestDecoratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,25 @@

use PhpMiddleware\RequestId\RequestDecorator;
use PhpMiddleware\RequestId\RequestIdProviderInterface;
use PHPUnit\Framework\TestCase;
use Psr\Http\Message\RequestInterface;

class RequestDecoratorTest extends \PHPUnit_Framework_TestCase
class RequestDecoratorTest extends TestCase
{
const CUSTOM_HEADER_NAME = 'custom-header-name';

protected $decorator;

protected function setUp()
{
$requestIdProvider = $this->getMock(RequestIdProviderInterface::class);
$requestIdProvider = $this->createMock(RequestIdProviderInterface::class);
$requestIdProvider->expects($this->once())->method('getRequestId')->willReturn('boo');
$this->decorator = new RequestDecorator($requestIdProvider, self::CUSTOM_HEADER_NAME);
}

public function testIsRequestDecorated()
{
$request = $this->getMock(RequestInterface::class);
$request = $this->createMock(RequestInterface::class);
$request->expects($this->once())->method('withHeader')->willReturnCallback(function($name, $value) use ($request) {
$this->assertSame(self::CUSTOM_HEADER_NAME, $name);
$this->assertSame('boo', $value);
Expand Down
19 changes: 10 additions & 9 deletions test/RequestIdMiddlewareTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,17 @@
use PhpMiddleware\RequestId\RequestIdProvider;
use PhpMiddleware\RequestId\RequestIdProviderFactoryInterface;
use PhpMiddleware\RequestId\RequestIdProviderInterface;
use PHPUnit_Framework_TestCase;
use PHPUnit\Framework\TestCase;
use Psr\Http\Message\ServerRequestInterface;
use Zend\Diactoros\Response;
use Zend\Diactoros\ServerRequest;

class RequestIdMiddlewareTest extends PHPUnit_Framework_TestCase
class RequestIdMiddlewareTest extends TestCase
{
public function testEmmitRequestIdToResponse()
{
$requestIdProviderFactory = $this->getMock(RequestIdProviderFactoryInterface::class);
$requestIdProvider = $this->getMock(RequestIdProviderInterface::class);
$requestIdProviderFactory = $this->createMock(RequestIdProviderFactoryInterface::class);
$requestIdProvider = $this->createMock(RequestIdProviderInterface::class);

$requestIdProviderFactory->method('create')->willReturn($requestIdProvider);
$requestIdProvider->method('getRequestId')->willReturn('123456789');
Expand Down Expand Up @@ -45,8 +45,8 @@ public function testEmmitRequestIdToResponse()

public function testNotEmmitRequestIdToResponse()
{
$requestIdProviderFactory = $this->getMock(RequestIdProviderFactoryInterface::class);
$requestIdProvider = $this->getMock(RequestIdProviderInterface::class);
$requestIdProviderFactory = $this->createMock(RequestIdProviderFactoryInterface::class);
$requestIdProvider = $this->createMock(RequestIdProviderInterface::class);

$requestIdProviderFactory->method('create')->willReturn($requestIdProvider);
$requestIdProvider->method('getRequestId')->willReturn('123456789');
Expand Down Expand Up @@ -74,11 +74,12 @@ public function testNotEmmitRequestIdToResponse()

public function testTryToGetRequestIdBeforeRunMiddleware()
{
$this->setExpectedException(MissingRequestId::class);

$requestIdProviderFactory = $this->getMock(RequestIdProviderFactoryInterface::class);
$requestIdProviderFactory = $this->createMock(RequestIdProviderFactoryInterface::class);

$middleware = new RequestIdMiddleware($requestIdProviderFactory);

$this->expectException(MissingRequestId::class);

$middleware->getRequestId();
}
}
Loading

0 comments on commit 2f59dca

Please sign in to comment.