ServiceUnitTest   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 24
dl 0
loc 45
rs 10
c 0
b 0
f 0
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A testCustomRoutesLoading() 0 38 1
1
<?php
2
namespace Mezon\Service\Tests;
3
4
use Mezon\Service\ServiceConsoleTransport\ServiceConsoleTransport;
5
use Mezon\Service\ServiceModel;
6
use Mezon\Service\Service;
7
use Mezon\Security\MockProvider;
8
9
/**
10
 *
11
 * @psalm-suppress PropertyNotSetInConstructor
12
 */
13
class ServiceUnitTest extends ServiceUnitTests
14
{
15
16
    /**
17
     * Method tests does custom routes were loaded.
18
     * Trying to read routes both from php and json file and call routes from them.
19
     */
20
    public function testCustomRoutesLoading(): void
21
    {
22
        $_SERVER['REQUEST_METHOD'] = 'GET';
23
24
        $provider = new MockProvider();
25
26
        $transport = $this->getMockBuilder(ServiceConsoleTransport::class)
27
            ->setConstructorArgs([
28
            $provider
29
        ])
30
            ->onlyMethods([
31
            'die'
32
        ])
33
            ->getMock();
34
35
        $logic = new TestingLogic($transport->getParamsFetcher(), $transport->getSecurityProvider(), new ServiceModel());
36
37
        $transport->setServiceLogic($logic);
38
39
        $service = new Service($transport);
40
41
        $service->getTransport()->loadRoutesFromConfig(__DIR__ . '/conf/routes.php');
42
        $service->getTransport()->loadRoutes(json_decode(file_get_contents(__DIR__ . '/conf/routes.json'), true));
43
44
        // route from routes.php
45
        $_GET['r'] = 'test';
46
        $service->run();
47
48
        // route from routes.json
49
        $_GET['r'] = 'test2';
50
        $service->run();
51
52
        $_GET['r'] = 'test3';
53
        ob_start();
54
        $service->run();
55
        $content = ob_get_contents();
56
        ob_end_clean();
57
        $this->assertStringContainsString('"message"', $content);
58
    }
59
}
60