Completed
Push — ezp_30981_content_info_proxy ( a78a98...0757d2 )
by
unknown
15:21
created

RouterHostTextTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 122
Duplicated Lines 27.87 %

Coupling/Cohesion

Components 2
Dependencies 5

Importance

Changes 0
Metric Value
dl 34
loc 122
rs 10
c 0
b 0
f 0
wmc 5
lcom 2
cbo 5

5 Methods

Rating   Name   Duplication   Size   Complexity  
B matchProvider() 0 56 1
A testGetName() 0 5 1
A testReverseMatch() 0 17 1
A createRouter() 23 23 1
A getSiteAccessProviderSettings() 11 11 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
/**
4
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
5
 * @license For full copyright and license information view LICENSE file distributed with this source code.
6
 */
7
namespace eZ\Publish\Core\MVC\Symfony\SiteAccess\Tests;
8
9
use eZ\Publish\Core\MVC\Symfony\SiteAccess\Router;
10
use eZ\Publish\Core\MVC\Symfony\SiteAccess\Matcher\HostText as HostTextMatcher;
11
use eZ\Publish\Core\MVC\Symfony\Routing\SimplifiedRequest;
12
use Psr\Log\LoggerInterface;
13
14
class RouterHostTextTest extends RouterBaseTest
15
{
16
    public function matchProvider(): array
17
    {
18
        return [
19
            [SimplifiedRequest::fromUrl('http://example.com'), 'default_sa'],
20
            [SimplifiedRequest::fromUrl('https://example.com'), 'default_sa'],
21
            [SimplifiedRequest::fromUrl('http://example.com/'), 'default_sa'],
22
            [SimplifiedRequest::fromUrl('https://example.com/'), 'default_sa'],
23
            [SimplifiedRequest::fromUrl('http://example.com//'), 'default_sa'],
24
            [SimplifiedRequest::fromUrl('https://example.com//'), 'default_sa'],
25
            [SimplifiedRequest::fromUrl('http://example.com:8080/'), 'default_sa'],
26
            [SimplifiedRequest::fromUrl('http://example.com/first_siteaccess/'), 'default_sa'],
27
            [SimplifiedRequest::fromUrl('http://example.com/?first_siteaccess'), 'default_sa'],
28
            [SimplifiedRequest::fromUrl('http://example.com/?first_sa'), 'default_sa'],
29
            [SimplifiedRequest::fromUrl('http://example.com/first_salt'), 'default_sa'],
30
            [SimplifiedRequest::fromUrl('http://example.com/first_sa.foo'), 'default_sa'],
31
            [SimplifiedRequest::fromUrl('http://example.com/test'), 'default_sa'],
32
            [SimplifiedRequest::fromUrl('http://example.com/test/foo/'), 'default_sa'],
33
            [SimplifiedRequest::fromUrl('http://example.com/test/foo/bar/'), 'default_sa'],
34
            [SimplifiedRequest::fromUrl('http://example.com/test/foo/bar/first_sa'), 'default_sa'],
35
            [SimplifiedRequest::fromUrl('http://example.com/default_sa'), 'default_sa'],
36
37
            [SimplifiedRequest::fromUrl('http://example.com/first_sa'), 'first_sa'],
38
            [SimplifiedRequest::fromUrl('http://example.com/first_sa/'), 'first_sa'],
39
            // Double slashes shouldn't be considered as one
40
            [SimplifiedRequest::fromUrl('http://example.com//first_sa//'), 'default_sa'],
41
            [SimplifiedRequest::fromUrl('http://example.com///first_sa///test'), 'default_sa'],
42
            [SimplifiedRequest::fromUrl('http://example.com//first_sa//foo/bar'), 'default_sa'],
43
            [SimplifiedRequest::fromUrl('http://example.com/first_sa/foo'), 'first_sa'],
44
            [SimplifiedRequest::fromUrl('http://example.com:82/first_sa/'), 'first_sa'],
45
            [SimplifiedRequest::fromUrl('http://third_siteaccess/first_sa/'), 'first_sa'],
46
            [SimplifiedRequest::fromUrl('http://first_sa/'), 'first_sa'],
47
            [SimplifiedRequest::fromUrl('https://first_sa/'), 'first_sa'],
48
            [SimplifiedRequest::fromUrl('http://first_sa:81/'), 'first_sa'],
49
            [SimplifiedRequest::fromUrl('http://first_siteaccess/'), 'first_sa'],
50
            [SimplifiedRequest::fromUrl('http://first_siteaccess:82/'), 'first_sa'],
51
            [SimplifiedRequest::fromUrl('http://first_siteaccess:83/'), 'first_sa'],
52
            [SimplifiedRequest::fromUrl('http://first_siteaccess/foo/'), 'first_sa'],
53
54
            [SimplifiedRequest::fromUrl('http://www.example.com/'), 'example'],
55
            [SimplifiedRequest::fromUrl('https://www.example.com/'), 'example'],
56
            [SimplifiedRequest::fromUrl('http://www.example.com:81/'), 'example'],
57
            [SimplifiedRequest::fromUrl('http://www.example.com/'), 'example'],
58
            [SimplifiedRequest::fromUrl('http://www.example.com:82/'), 'example'],
59
            [SimplifiedRequest::fromUrl('https://www.example.com:83/'), 'example'],
60
            [SimplifiedRequest::fromUrl('http://www.example.com/foo/'), 'example'],
61
62
            [SimplifiedRequest::fromUrl('http://example.com/second_sa'), 'second_sa'],
63
            [SimplifiedRequest::fromUrl('http://example.com/second_sa/'), 'second_sa'],
64
            [SimplifiedRequest::fromUrl('http://example.com/second_sa?param1=foo'), 'second_sa'],
65
            [SimplifiedRequest::fromUrl('http://example.com/second_sa/foo/'), 'second_sa'],
66
            [SimplifiedRequest::fromUrl('http://example.com:82/second_sa/'), 'second_sa'],
67
            [SimplifiedRequest::fromUrl('http://example.com:83/second_sa/'), 'second_sa'],
68
            [SimplifiedRequest::fromUrl('http://first_siteaccess:82/second_sa/'), 'second_sa'],
69
            [SimplifiedRequest::fromUrl('http://first_siteaccess:83/second_sa/'), 'second_sa'],
70
        ];
71
    }
72
73
    public function testGetName()
74
    {
75
        $matcher = new HostTextMatcher(['host' => 'foo'], []);
76
        $this->assertSame('host:text', $matcher->getName());
77
    }
78
79
    public function testReverseMatch()
80
    {
81
        $matcher = new HostTextMatcher(
82
            [
83
                'prefix' => 'www.',
84
                'suffix' => '.com',
85
            ]
86
        );
87
88
        $matcher->setRequest(new SimplifiedRequest(['host' => 'www.my_siteaccess.com']));
89
90
        $result = $matcher->reverseMatch('foobar');
91
        $this->assertInstanceOf(HostTextMatcher::class, $result);
92
        $request = $result->getRequest();
93
        $this->assertInstanceOf(SimplifiedRequest::class, $request);
94
        $this->assertSame('www.foobar.com', $request->host);
95
    }
96
97 View Code Duplication
    protected function createRouter(): Router
98
    {
99
        return new Router(
100
            $this->matcherBuilder,
101
            $this->createMock(LoggerInterface::class),
102
            'default_sa',
103
            [
104
                'HostText' => [
105
                    'prefix' => 'www.',
106
                    'suffix' => '.com',
107
                ],
108
                'Map\\URI' => [
109
                    'first_sa' => 'first_sa',
110
                    'second_sa' => 'second_sa',
111
                ],
112
                'Map\\Host' => [
113
                    'first_sa' => 'first_sa',
114
                    'first_siteaccess' => 'first_sa',
115
                ],
116
            ],
117
            $this->siteAccessProvider
118
        );
119
    }
120
121
    /**
122
     * @return \eZ\Publish\Core\MVC\Symfony\SiteAccess\Tests\SiteAccessSetting[]
123
     */
124 View Code Duplication
    public function getSiteAccessProviderSettings(): array
125
    {
126
        return [
127
            new SiteAccessSetting('first_sa', true),
128
            new SiteAccessSetting('second_sa', true),
129
            new SiteAccessSetting('third_sa', true),
130
            new SiteAccessSetting('fourth_sa', true),
131
            new SiteAccessSetting('fifth_sa', true),
132
            new SiteAccessSetting('example', true),
133
        ];
134
    }
135
}
136