Skip to content

Commit 2837632

Browse files
author
Tomek Marcinkowski
committed
FIX: MonologProcessor handles particular kind of exceptions thrown from RequestIdProviders
1 parent 3cd700e commit 2837632

File tree

2 files changed

+30
-7
lines changed

2 files changed

+30
-7
lines changed

src/MonologProcessor.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace PhpMiddleware\RequestId;
44

5+
use PhpMiddleware\RequestId\Exception\MissingRequestId;
6+
57
final class MonologProcessor
68
{
79
const KEY = 'request_id';
@@ -15,7 +17,13 @@ public function __construct(RequestIdProviderInterface $requestIdProvider)
1517

1618
public function __invoke(array $record)
1719
{
18-
$record['extra'][self::KEY] = $this->requestIdProvider->getRequestId();
20+
try {
21+
$requestId = $this->requestIdProvider->getRequestId();
22+
} catch (MissingRequestId $e) {
23+
$requestId = null;
24+
}
25+
26+
$record['extra'][self::KEY] = $requestId;
1927

2028
return $record;
2129
}

test/MonologProcessorTest.php

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,43 @@
22

33
namespace PhpMiddlewareTestTest\RequestId;
44

5+
use PhpMiddleware\RequestId\Exception\MissingRequestId;
56
use PhpMiddleware\RequestId\MonologProcessor;
67
use PhpMiddleware\RequestId\RequestIdProviderInterface;
78

89
class MonologProcessorTest extends \PHPUnit_Framework_TestCase
910
{
1011
protected $processor;
12+
/**
13+
* @var RequestIdProviderInterface|\PHPUnit_Framework_MockObject_MockObject
14+
*/
15+
private $requestIdProvider;
1116

12-
protected function setUp()
17+
public function testIsRequestIdInRecord()
1318
{
14-
$requestIdProvider = $this->getMock(RequestIdProviderInterface::class);
15-
$requestIdProvider->expects($this->once())->method('getRequestId')->willReturn('boo');
19+
$this->requestIdProvider->expects($this->once())->method('getRequestId')->willReturn('boo');
20+
$record = ['extra' => []];
1621

17-
$this->processor = new MonologProcessor($requestIdProvider);
22+
$newRecord = call_user_func($this->processor, $record);
23+
24+
$this->assertArrayHasKey(MonologProcessor::KEY, $newRecord['extra']);
25+
$this->assertSame('boo', $newRecord['extra'][MonologProcessor::KEY]);
1826
}
1927

20-
public function testIsRequestIdInRecord()
28+
public function testIsMissingRequestIdExceptionHandledProperly()
2129
{
30+
$this->requestIdProvider->expects($this->once())->method('getRequestId')->willThrowException(new MissingRequestId());
2231
$record = ['extra' => []];
2332

2433
$newRecord = call_user_func($this->processor, $record);
2534

2635
$this->assertArrayHasKey(MonologProcessor::KEY, $newRecord['extra']);
27-
$this->assertSame('boo', $newRecord['extra'][MonologProcessor::KEY]);
36+
$this->assertNull($newRecord['extra'][MonologProcessor::KEY]);
37+
}
38+
39+
protected function setUp()
40+
{
41+
$this->requestIdProvider = $this->getMock(RequestIdProviderInterface::class);
42+
$this->processor = new MonologProcessor($this->requestIdProvider);
2843
}
2944
}

0 commit comments

Comments
 (0)