|
3 | 3 | namespace OCA\Solid\Controller; |
4 | 4 |
|
5 | 5 | use Error; |
| 6 | +use Laminas\Diactoros\Request; |
| 7 | +use Laminas\Diactoros\Uri; |
6 | 8 | use OCA\Solid\ServerConfig; |
7 | 9 | use OCP\IURLGenerator; |
8 | 10 | use PHPUnit\Framework\MockObject\MockObject; |
9 | 11 | use PHPUnit\Framework\TestCase; |
10 | | -use ReflectionObject; |
| 12 | +use Psr\Http\Message\RequestInterface; |
11 | 13 |
|
12 | 14 | /** |
13 | 15 | * @coversDefaultClass \OCA\Solid\Controller\GetStorageUrlTrait |
@@ -98,6 +100,20 @@ public function testGetStorageUrlWithUserSubDomainsEnabled($url, $userId, $expec |
98 | 100 | $this->assertEquals($expected, $actual); |
99 | 101 | } |
100 | 102 |
|
| 103 | + /** |
| 104 | + * @testdox GetStorageUrlTrait should return expected validity when asked to validateUrl |
| 105 | + * |
| 106 | + * @covers ::validateUrl |
| 107 | + * |
| 108 | + * @dataProvider provideRequests |
| 109 | + */ |
| 110 | + public function testValidateUrl(RequestInterface $response, $expected) |
| 111 | + { |
| 112 | + $actual = $this->trait->validateUrl($response); |
| 113 | + |
| 114 | + $this->assertEquals($expected, $actual); |
| 115 | + } |
| 116 | + |
101 | 117 | ////////////////////////////// MOCKS AND STUBS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\ |
102 | 118 |
|
103 | 119 | public function getMockConfig($enabled = false): MockObject|ServerConfig |
@@ -128,6 +144,22 @@ public function getMockUrlGenerator($url): MockObject|IURLGenerator |
128 | 144 |
|
129 | 145 | /////////////////////////////// DATAPROVIDERS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ |
130 | 146 |
|
| 147 | + public function provideRequests() |
| 148 | + { |
| 149 | + $request = new Request(); |
| 150 | + |
| 151 | + return [ |
| 152 | + 'invalid: invalid URL' => ['request' => $request->withUri(new Uri('!@#$%^&*()_')), 'expected' => false], |
| 153 | + 'invalid: no domain user' => ['request' => $request->withUri(new Uri('https://example.com/@alice/profile/card#me')), 'expected' => false], |
| 154 | + 'invalid: no path or domain user' => ['request' => $request->withUri(new Uri('https://example.com/')), 'expected' => false], |
| 155 | + 'invalid: no path user' => ['request' => $request->withUri(new Uri('https://alice.example.com/profile/card#me')), 'expected' => false], |
| 156 | + 'invalid: no URL' => ['request' => $request, 'expected' => false], |
| 157 | + 'invalid: path and domain user mismatch' => ['request' => $request->withUri(new Uri('https://bob.example.com/@alice/profile/card#me')), 'expected' => false], |
| 158 | + 'valid: minimal path and domain user match' => ['request' => $request->withUri(new Uri('https://alice.example.com/apps/@alice')), 'expected' => true], |
| 159 | + 'valid: path and domain user match' => ['request' => $request->withUri(new Uri('https://alice.example.com/apps/solid/@alice/profile/card#me')), 'expected' => true], |
| 160 | + ]; |
| 161 | + } |
| 162 | + |
131 | 163 | public function provideSubDomainsDisabledUrls() |
132 | 164 | { |
133 | 165 | return [ |
|
0 commit comments