Skip to content

Commit 309a467

Browse files
committed
Server\ExceptionTransformer debug message readability improvement and file trace added
1 parent 8e98819 commit 309a467

File tree

2 files changed

+51
-1
lines changed

2 files changed

+51
-1
lines changed

src/Service/Server/ExceptionTransformer.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ public function toApi($transformed): \stdClass
2727
$responseData = new \stdClass();
2828
$responseData->message = 'Internal server error';
2929
if ($this->configRepository->getServerConfig()->debug()) {
30-
$responseData->message = 'Exception ('.\get_class($transformed).') message: "'.$transformed->getMessage().'" from: "'.$transformed->getFile().'":'.$transformed->getLine();
30+
$responseData->message = 'Exception ('.\get_class($transformed).') message: \''.$transformed->getMessage().'\' from: '.$transformed->getFile().':'.$transformed->getLine();
31+
$responseData->trace = array_map(fn (array $item): string => ($item['file'] ?? '-').':'.($item['line'] ?? '-'), $transformed->getTrace());
3132
}
3233

3334
return $responseData;
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use PHPUnit\Framework\TestCase;
6+
use SimpleAsFuck\ApiToolkit\Service\Server\ExceptionTransformer;
7+
8+
/**
9+
* @covers \SimpleAsFuck\ApiToolkit\Service\Server\ExceptionTransformer
10+
*/
11+
final class ExceptionTransformerTest extends TestCase
12+
{
13+
/**
14+
* @dataProvider dataProviderToApi
15+
*/
16+
public function testToApi(string $expectedMessage, bool $debug): void
17+
{
18+
$config = $this->createMock(SimpleAsFuck\ApiToolkit\Service\Config\Repository::class);
19+
$config->method('getServerConfig')->willReturn(new \SimpleAsFuck\ApiToolkit\Model\Server\Config($debug));
20+
21+
$transformer = new ExceptionTransformer($config);
22+
23+
$exception = new \Exception('Test');
24+
25+
$transformedData = $transformer->toApi($exception);
26+
27+
self::assertSame($expectedMessage, $transformedData->message);
28+
if ($debug) {
29+
self::assertIsArray($transformedData->trace);
30+
foreach ($transformedData->trace as $item) {
31+
self::assertIsString($item);
32+
self::assertNotSame('', $item);
33+
}
34+
} else {
35+
self::assertObjectNotHasAttribute('trace', $transformedData);
36+
}
37+
}
38+
39+
/**
40+
* @return array<array<mixed>>
41+
*/
42+
public function dataProviderToApi(): array
43+
{
44+
return [
45+
['Internal server error', false],
46+
['Exception (Exception) message: \'Test\' from: '.__DIR__.'/ExceptionTransformerTest.php:23', true],
47+
];
48+
}
49+
}

0 commit comments

Comments
 (0)