diff options
Diffstat (limited to 'tests/http')
-rw-r--r-- | tests/http/HttpUtils/ClientIpIdTest.php | 2 | ||||
-rw-r--r-- | tests/http/HttpUtils/GetHttpUrlTest.php | 2 | ||||
-rw-r--r-- | tests/http/HttpUtils/GetIpAdressFromProxyTest.php | 2 | ||||
-rw-r--r-- | tests/http/HttpUtils/IndexUrlTest.php | 68 | ||||
-rw-r--r-- | tests/http/HttpUtils/IndexUrlTestWithConstant.php | 51 | ||||
-rw-r--r-- | tests/http/HttpUtils/IsHttpsTest.php | 2 | ||||
-rw-r--r-- | tests/http/HttpUtils/PageUrlTest.php | 2 | ||||
-rw-r--r-- | tests/http/HttpUtils/ServerUrlTest.php | 2 | ||||
-rw-r--r-- | tests/http/MetadataRetrieverTest.php | 154 | ||||
-rw-r--r-- | tests/http/UrlTest.php | 2 | ||||
-rw-r--r-- | tests/http/UrlUtils/CleanupUrlTest.php | 2 | ||||
-rw-r--r-- | tests/http/UrlUtils/GetUrlSchemeTest.php | 2 | ||||
-rw-r--r-- | tests/http/UrlUtils/UnparseUrlTest.php | 2 | ||||
-rw-r--r-- | tests/http/UrlUtils/WhitelistProtocolsTest.php | 2 |
14 files changed, 283 insertions, 12 deletions
diff --git a/tests/http/HttpUtils/ClientIpIdTest.php b/tests/http/HttpUtils/ClientIpIdTest.php index 982e57e0..3a0fcf30 100644 --- a/tests/http/HttpUtils/ClientIpIdTest.php +++ b/tests/http/HttpUtils/ClientIpIdTest.php | |||
@@ -10,7 +10,7 @@ require_once 'application/http/HttpUtils.php'; | |||
10 | /** | 10 | /** |
11 | * Unitary tests for client_ip_id() | 11 | * Unitary tests for client_ip_id() |
12 | */ | 12 | */ |
13 | class ClientIpIdTest extends \PHPUnit\Framework\TestCase | 13 | class ClientIpIdTest extends \Shaarli\TestCase |
14 | { | 14 | { |
15 | /** | 15 | /** |
16 | * Get a remote client ID based on its IP | 16 | * Get a remote client ID based on its IP |
diff --git a/tests/http/HttpUtils/GetHttpUrlTest.php b/tests/http/HttpUtils/GetHttpUrlTest.php index 3dc5bc9b..a868ac02 100644 --- a/tests/http/HttpUtils/GetHttpUrlTest.php +++ b/tests/http/HttpUtils/GetHttpUrlTest.php | |||
@@ -10,7 +10,7 @@ require_once 'application/http/HttpUtils.php'; | |||
10 | /** | 10 | /** |
11 | * Unitary tests for get_http_response() | 11 | * Unitary tests for get_http_response() |
12 | */ | 12 | */ |
13 | class GetHttpUrlTest extends \PHPUnit\Framework\TestCase | 13 | class GetHttpUrlTest extends \Shaarli\TestCase |
14 | { | 14 | { |
15 | /** | 15 | /** |
16 | * Get an invalid local URL | 16 | * Get an invalid local URL |
diff --git a/tests/http/HttpUtils/GetIpAdressFromProxyTest.php b/tests/http/HttpUtils/GetIpAdressFromProxyTest.php index fe3a639e..60cdb992 100644 --- a/tests/http/HttpUtils/GetIpAdressFromProxyTest.php +++ b/tests/http/HttpUtils/GetIpAdressFromProxyTest.php | |||
@@ -7,7 +7,7 @@ require_once 'application/http/HttpUtils.php'; | |||
7 | /** | 7 | /** |
8 | * Unitary tests for getIpAddressFromProxy() | 8 | * Unitary tests for getIpAddressFromProxy() |
9 | */ | 9 | */ |
10 | class GetIpAdressFromProxyTest extends \PHPUnit\Framework\TestCase | 10 | class GetIpAdressFromProxyTest extends \Shaarli\TestCase |
11 | { | 11 | { |
12 | 12 | ||
13 | /** | 13 | /** |
diff --git a/tests/http/HttpUtils/IndexUrlTest.php b/tests/http/HttpUtils/IndexUrlTest.php index bcbe59cb..f283d119 100644 --- a/tests/http/HttpUtils/IndexUrlTest.php +++ b/tests/http/HttpUtils/IndexUrlTest.php | |||
@@ -5,12 +5,14 @@ | |||
5 | 5 | ||
6 | namespace Shaarli\Http; | 6 | namespace Shaarli\Http; |
7 | 7 | ||
8 | use Shaarli\TestCase; | ||
9 | |||
8 | require_once 'application/http/HttpUtils.php'; | 10 | require_once 'application/http/HttpUtils.php'; |
9 | 11 | ||
10 | /** | 12 | /** |
11 | * Unitary tests for index_url() | 13 | * Unitary tests for index_url() |
12 | */ | 14 | */ |
13 | class IndexUrlTest extends \PHPUnit\Framework\TestCase | 15 | class IndexUrlTest extends TestCase |
14 | { | 16 | { |
15 | /** | 17 | /** |
16 | * If on the main page, remove "index.php" from the URL resource | 18 | * If on the main page, remove "index.php" from the URL resource |
@@ -71,4 +73,68 @@ class IndexUrlTest extends \PHPUnit\Framework\TestCase | |||
71 | ) | 73 | ) |
72 | ); | 74 | ); |
73 | } | 75 | } |
76 | |||
77 | /** | ||
78 | * The route is stored in REQUEST_URI | ||
79 | */ | ||
80 | public function testPageUrlWithRoute() | ||
81 | { | ||
82 | $this->assertEquals( | ||
83 | 'http://host.tld/picture-wall', | ||
84 | page_url( | ||
85 | array( | ||
86 | 'HTTPS' => 'Off', | ||
87 | 'SERVER_NAME' => 'host.tld', | ||
88 | 'SERVER_PORT' => '80', | ||
89 | 'SCRIPT_NAME' => '/index.php', | ||
90 | 'REQUEST_URI' => '/picture-wall', | ||
91 | ) | ||
92 | ) | ||
93 | ); | ||
94 | |||
95 | $this->assertEquals( | ||
96 | 'http://host.tld/admin/picture-wall', | ||
97 | page_url( | ||
98 | array( | ||
99 | 'HTTPS' => 'Off', | ||
100 | 'SERVER_NAME' => 'host.tld', | ||
101 | 'SERVER_PORT' => '80', | ||
102 | 'SCRIPT_NAME' => '/admin/index.php', | ||
103 | 'REQUEST_URI' => '/admin/picture-wall', | ||
104 | ) | ||
105 | ) | ||
106 | ); | ||
107 | } | ||
108 | |||
109 | /** | ||
110 | * The route is stored in REQUEST_URI and subfolder | ||
111 | */ | ||
112 | public function testPageUrlWithRouteUnderSubfolder() | ||
113 | { | ||
114 | $this->assertEquals( | ||
115 | 'http://host.tld/subfolder/picture-wall', | ||
116 | page_url( | ||
117 | array( | ||
118 | 'HTTPS' => 'Off', | ||
119 | 'SERVER_NAME' => 'host.tld', | ||
120 | 'SERVER_PORT' => '80', | ||
121 | 'SCRIPT_NAME' => '/subfolder/index.php', | ||
122 | 'REQUEST_URI' => '/subfolder/picture-wall', | ||
123 | ) | ||
124 | ) | ||
125 | ); | ||
126 | |||
127 | $this->assertEquals( | ||
128 | 'http://host.tld/subfolder/admin/picture-wall', | ||
129 | page_url( | ||
130 | array( | ||
131 | 'HTTPS' => 'Off', | ||
132 | 'SERVER_NAME' => 'host.tld', | ||
133 | 'SERVER_PORT' => '80', | ||
134 | 'SCRIPT_NAME' => '/subfolder/admin/index.php', | ||
135 | 'REQUEST_URI' => '/subfolder/admin/picture-wall', | ||
136 | ) | ||
137 | ) | ||
138 | ); | ||
139 | } | ||
74 | } | 140 | } |
diff --git a/tests/http/HttpUtils/IndexUrlTestWithConstant.php b/tests/http/HttpUtils/IndexUrlTestWithConstant.php new file mode 100644 index 00000000..ecaea724 --- /dev/null +++ b/tests/http/HttpUtils/IndexUrlTestWithConstant.php | |||
@@ -0,0 +1,51 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Shaarli\Http; | ||
6 | |||
7 | use Shaarli\TestCase; | ||
8 | |||
9 | /** | ||
10 | * Test index_url with SHAARLI_ROOT_URL defined to override automatic retrieval. | ||
11 | * This should stay in its dedicated class to make sure to not alter other tests of the suite. | ||
12 | */ | ||
13 | class IndexUrlTestWithConstant extends TestCase | ||
14 | { | ||
15 | public static function setUpBeforeClass(): void | ||
16 | { | ||
17 | define('SHAARLI_ROOT_URL', 'http://other-host.tld/subfolder/'); | ||
18 | } | ||
19 | |||
20 | /** | ||
21 | * The route is stored in REQUEST_URI and subfolder | ||
22 | */ | ||
23 | public function testIndexUrlWithConstantDefined() | ||
24 | { | ||
25 | $this->assertEquals( | ||
26 | 'http://other-host.tld/subfolder/', | ||
27 | index_url( | ||
28 | array( | ||
29 | 'HTTPS' => 'Off', | ||
30 | 'SERVER_NAME' => 'host.tld', | ||
31 | 'SERVER_PORT' => '80', | ||
32 | 'SCRIPT_NAME' => '/index.php', | ||
33 | 'REQUEST_URI' => '/picture-wall', | ||
34 | ) | ||
35 | ) | ||
36 | ); | ||
37 | |||
38 | $this->assertEquals( | ||
39 | 'http://other-host.tld/subfolder/', | ||
40 | index_url( | ||
41 | array( | ||
42 | 'HTTPS' => 'Off', | ||
43 | 'SERVER_NAME' => 'host.tld', | ||
44 | 'SERVER_PORT' => '80', | ||
45 | 'SCRIPT_NAME' => '/admin/index.php', | ||
46 | 'REQUEST_URI' => '/admin/picture-wall', | ||
47 | ) | ||
48 | ) | ||
49 | ); | ||
50 | } | ||
51 | } | ||
diff --git a/tests/http/HttpUtils/IsHttpsTest.php b/tests/http/HttpUtils/IsHttpsTest.php index 348956c6..8b3fd93d 100644 --- a/tests/http/HttpUtils/IsHttpsTest.php +++ b/tests/http/HttpUtils/IsHttpsTest.php | |||
@@ -9,7 +9,7 @@ require_once 'application/http/HttpUtils.php'; | |||
9 | * | 9 | * |
10 | * Test class for is_https() function. | 10 | * Test class for is_https() function. |
11 | */ | 11 | */ |
12 | class IsHttpsTest extends \PHPUnit\Framework\TestCase | 12 | class IsHttpsTest extends \Shaarli\TestCase |
13 | { | 13 | { |
14 | 14 | ||
15 | /** | 15 | /** |
diff --git a/tests/http/HttpUtils/PageUrlTest.php b/tests/http/HttpUtils/PageUrlTest.php index f1991716..ebb3e617 100644 --- a/tests/http/HttpUtils/PageUrlTest.php +++ b/tests/http/HttpUtils/PageUrlTest.php | |||
@@ -10,7 +10,7 @@ require_once 'application/http/HttpUtils.php'; | |||
10 | /** | 10 | /** |
11 | * Unitary tests for page_url() | 11 | * Unitary tests for page_url() |
12 | */ | 12 | */ |
13 | class PageUrlTest extends \PHPUnit\Framework\TestCase | 13 | class PageUrlTest extends \Shaarli\TestCase |
14 | { | 14 | { |
15 | /** | 15 | /** |
16 | * If on the main page, remove "index.php" from the URL resource | 16 | * If on the main page, remove "index.php" from the URL resource |
diff --git a/tests/http/HttpUtils/ServerUrlTest.php b/tests/http/HttpUtils/ServerUrlTest.php index 9caf1049..339664e1 100644 --- a/tests/http/HttpUtils/ServerUrlTest.php +++ b/tests/http/HttpUtils/ServerUrlTest.php | |||
@@ -10,7 +10,7 @@ require_once 'application/http/HttpUtils.php'; | |||
10 | /** | 10 | /** |
11 | * Unitary tests for server_url() | 11 | * Unitary tests for server_url() |
12 | */ | 12 | */ |
13 | class ServerUrlTest extends \PHPUnit\Framework\TestCase | 13 | class ServerUrlTest extends \Shaarli\TestCase |
14 | { | 14 | { |
15 | /** | 15 | /** |
16 | * Detect if the server uses SSL | 16 | * Detect if the server uses SSL |
diff --git a/tests/http/MetadataRetrieverTest.php b/tests/http/MetadataRetrieverTest.php new file mode 100644 index 00000000..3c9eaa0e --- /dev/null +++ b/tests/http/MetadataRetrieverTest.php | |||
@@ -0,0 +1,154 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Shaarli\Http; | ||
6 | |||
7 | use PHPUnit\Framework\TestCase; | ||
8 | use Shaarli\Config\ConfigManager; | ||
9 | |||
10 | class MetadataRetrieverTest extends TestCase | ||
11 | { | ||
12 | /** @var MetadataRetriever */ | ||
13 | protected $retriever; | ||
14 | |||
15 | /** @var ConfigManager */ | ||
16 | protected $conf; | ||
17 | |||
18 | /** @var HttpAccess */ | ||
19 | protected $httpAccess; | ||
20 | |||
21 | public function setUp(): void | ||
22 | { | ||
23 | $this->conf = $this->createMock(ConfigManager::class); | ||
24 | $this->httpAccess = $this->createMock(HttpAccess::class); | ||
25 | $this->retriever = new MetadataRetriever($this->conf, $this->httpAccess); | ||
26 | |||
27 | $this->conf->method('get')->willReturnCallback(function (string $param, $default) { | ||
28 | return $default === null ? $param : $default; | ||
29 | }); | ||
30 | } | ||
31 | |||
32 | /** | ||
33 | * Test metadata retrieve() with values returned | ||
34 | */ | ||
35 | public function testFullRetrieval(): void | ||
36 | { | ||
37 | $url = 'https://domain.tld/link'; | ||
38 | $remoteTitle = 'Remote Title '; | ||
39 | $remoteDesc = 'Sometimes the meta description is relevant.'; | ||
40 | $remoteTags = 'abc def'; | ||
41 | $remoteCharset = 'utf-8'; | ||
42 | |||
43 | $expectedResult = [ | ||
44 | 'title' => $remoteTitle, | ||
45 | 'description' => $remoteDesc, | ||
46 | 'tags' => $remoteTags, | ||
47 | ]; | ||
48 | |||
49 | $this->httpAccess | ||
50 | ->expects(static::once()) | ||
51 | ->method('getCurlHeaderCallback') | ||
52 | ->willReturnCallback( | ||
53 | function (&$charset) use ( | ||
54 | $remoteCharset | ||
55 | ): callable { | ||
56 | return function () use ( | ||
57 | &$charset, | ||
58 | $remoteCharset | ||
59 | ): void { | ||
60 | $charset = $remoteCharset; | ||
61 | }; | ||
62 | } | ||
63 | ) | ||
64 | ; | ||
65 | $this->httpAccess | ||
66 | ->expects(static::once()) | ||
67 | ->method('getCurlDownloadCallback') | ||
68 | ->willReturnCallback( | ||
69 | function (&$charset, &$title, &$description, &$tags) use ( | ||
70 | $remoteCharset, | ||
71 | $remoteTitle, | ||
72 | $remoteDesc, | ||
73 | $remoteTags | ||
74 | ): callable { | ||
75 | return function () use ( | ||
76 | &$charset, | ||
77 | &$title, | ||
78 | &$description, | ||
79 | &$tags, | ||
80 | $remoteCharset, | ||
81 | $remoteTitle, | ||
82 | $remoteDesc, | ||
83 | $remoteTags | ||
84 | ): void { | ||
85 | static::assertSame($remoteCharset, $charset); | ||
86 | |||
87 | $title = $remoteTitle; | ||
88 | $description = $remoteDesc; | ||
89 | $tags = $remoteTags; | ||
90 | }; | ||
91 | } | ||
92 | ) | ||
93 | ; | ||
94 | $this->httpAccess | ||
95 | ->expects(static::once()) | ||
96 | ->method('getHttpResponse') | ||
97 | ->with($url, 30, 4194304) | ||
98 | ->willReturnCallback(function($url, $timeout, $maxBytes, $headerCallback, $dlCallback): void { | ||
99 | $headerCallback(); | ||
100 | $dlCallback(); | ||
101 | }) | ||
102 | ; | ||
103 | |||
104 | $result = $this->retriever->retrieve($url); | ||
105 | |||
106 | static::assertSame($expectedResult, $result); | ||
107 | } | ||
108 | |||
109 | /** | ||
110 | * Test metadata retrieve() without any value | ||
111 | */ | ||
112 | public function testEmptyRetrieval(): void | ||
113 | { | ||
114 | $url = 'https://domain.tld/link'; | ||
115 | |||
116 | $expectedResult = [ | ||
117 | 'title' => null, | ||
118 | 'description' => null, | ||
119 | 'tags' => null, | ||
120 | ]; | ||
121 | |||
122 | $this->httpAccess | ||
123 | ->expects(static::once()) | ||
124 | ->method('getCurlDownloadCallback') | ||
125 | ->willReturnCallback( | ||
126 | function (): callable { | ||
127 | return function (): void {}; | ||
128 | } | ||
129 | ) | ||
130 | ; | ||
131 | $this->httpAccess | ||
132 | ->expects(static::once()) | ||
133 | ->method('getCurlHeaderCallback') | ||
134 | ->willReturnCallback( | ||
135 | function (): callable { | ||
136 | return function (): void {}; | ||
137 | } | ||
138 | ) | ||
139 | ; | ||
140 | $this->httpAccess | ||
141 | ->expects(static::once()) | ||
142 | ->method('getHttpResponse') | ||
143 | ->with($url, 30, 4194304) | ||
144 | ->willReturnCallback(function($url, $timeout, $maxBytes, $headerCallback, $dlCallback): void { | ||
145 | $headerCallback(); | ||
146 | $dlCallback(); | ||
147 | }) | ||
148 | ; | ||
149 | |||
150 | $result = $this->retriever->retrieve($url); | ||
151 | |||
152 | static::assertSame($expectedResult, $result); | ||
153 | } | ||
154 | } | ||
diff --git a/tests/http/UrlTest.php b/tests/http/UrlTest.php index ae92f73a..c6b39c29 100644 --- a/tests/http/UrlTest.php +++ b/tests/http/UrlTest.php | |||
@@ -8,7 +8,7 @@ namespace Shaarli\Http; | |||
8 | /** | 8 | /** |
9 | * Unitary tests for URL utilities | 9 | * Unitary tests for URL utilities |
10 | */ | 10 | */ |
11 | class UrlTest extends \PHPUnit\Framework\TestCase | 11 | class UrlTest extends \Shaarli\TestCase |
12 | { | 12 | { |
13 | // base URL for tests | 13 | // base URL for tests |
14 | protected static $baseUrl = 'http://domain.tld:3000'; | 14 | protected static $baseUrl = 'http://domain.tld:3000'; |
diff --git a/tests/http/UrlUtils/CleanupUrlTest.php b/tests/http/UrlUtils/CleanupUrlTest.php index 6c4d124b..45690ecf 100644 --- a/tests/http/UrlUtils/CleanupUrlTest.php +++ b/tests/http/UrlUtils/CleanupUrlTest.php | |||
@@ -7,7 +7,7 @@ namespace Shaarli\Http; | |||
7 | 7 | ||
8 | require_once 'application/http/UrlUtils.php'; | 8 | require_once 'application/http/UrlUtils.php'; |
9 | 9 | ||
10 | class CleanupUrlTest extends \PHPUnit\Framework\TestCase | 10 | class CleanupUrlTest extends \Shaarli\TestCase |
11 | { | 11 | { |
12 | /** | 12 | /** |
13 | * @var string reference URL | 13 | * @var string reference URL |
diff --git a/tests/http/UrlUtils/GetUrlSchemeTest.php b/tests/http/UrlUtils/GetUrlSchemeTest.php index 2b97f7be..18a9a5e5 100644 --- a/tests/http/UrlUtils/GetUrlSchemeTest.php +++ b/tests/http/UrlUtils/GetUrlSchemeTest.php | |||
@@ -7,7 +7,7 @@ namespace Shaarli\Http; | |||
7 | 7 | ||
8 | require_once 'application/http/UrlUtils.php'; | 8 | require_once 'application/http/UrlUtils.php'; |
9 | 9 | ||
10 | class GetUrlSchemeTest extends \PHPUnit\Framework\TestCase | 10 | class GetUrlSchemeTest extends \Shaarli\TestCase |
11 | { | 11 | { |
12 | /** | 12 | /** |
13 | * Get empty scheme string for empty UrlUtils | 13 | * Get empty scheme string for empty UrlUtils |
diff --git a/tests/http/UrlUtils/UnparseUrlTest.php b/tests/http/UrlUtils/UnparseUrlTest.php index 040d8c54..5e6246cc 100644 --- a/tests/http/UrlUtils/UnparseUrlTest.php +++ b/tests/http/UrlUtils/UnparseUrlTest.php | |||
@@ -10,7 +10,7 @@ require_once 'application/http/UrlUtils.php'; | |||
10 | /** | 10 | /** |
11 | * Unitary tests for unparse_url() | 11 | * Unitary tests for unparse_url() |
12 | */ | 12 | */ |
13 | class UnparseUrlTest extends \PHPUnit\Framework\TestCase | 13 | class UnparseUrlTest extends \Shaarli\TestCase |
14 | { | 14 | { |
15 | /** | 15 | /** |
16 | * Thanks for building nothing | 16 | * Thanks for building nothing |
diff --git a/tests/http/UrlUtils/WhitelistProtocolsTest.php b/tests/http/UrlUtils/WhitelistProtocolsTest.php index 69512dbd..b8a6baaa 100644 --- a/tests/http/UrlUtils/WhitelistProtocolsTest.php +++ b/tests/http/UrlUtils/WhitelistProtocolsTest.php | |||
@@ -9,7 +9,7 @@ require_once 'application/http/UrlUtils.php'; | |||
9 | * | 9 | * |
10 | * Test whitelist_protocols() function of UrlUtils. | 10 | * Test whitelist_protocols() function of UrlUtils. |
11 | */ | 11 | */ |
12 | class WhitelistProtocolsTest extends \PHPUnit\Framework\TestCase | 12 | class WhitelistProtocolsTest extends \Shaarli\TestCase |
13 | { | 13 | { |
14 | /** | 14 | /** |
15 | * Test whitelist_protocols() on a note (relative URL). | 15 | * Test whitelist_protocols() on a note (relative URL). |