ILIAS  trunk Revision v12.0_alpha-1540-g00f839d5fa1
UriBuilderTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
23use PHPUnit\Framework\TestCase;
24use PHPUnit\Framework\Attributes\Test;
25use PHPUnit\Framework\Attributes\Small;
26use Psr\Http\Message\ServerRequestInterface;
27use Psr\Http\Message\UriInterface;
30
31#[Small]
32final class UriBuilderTest extends TestCase
33{
34 private function buildRequest(string $path, string $scheme = 'http', string $host = 'example.org', ?int $port = null): ServerRequestInterface
35 {
36 $uri = $this->createStub(UriInterface::class);
37 $uri->method('getPath')->willReturn($path);
38 $uri->method('getScheme')->willReturn($scheme);
39 $uri->method('getHost')->willReturn($host);
40 $uri->method('getPort')->willReturn($port);
41
42 $request = $this->createStub(ServerRequestInterface::class);
43 $request->method('getUri')->willReturn($uri);
44
45 return $request;
46 }
47
48 private function buildConfig(bool $prepend_client_name, string $client_id = 'default'): Config
49 {
50 return new class ($prepend_client_name, $client_id) extends Config {
51 public function __construct(
52 private bool $prepend,
53 private string $client
54 ) {
55 }
56 public function prependClientName(): bool
57 {
58 return $this->prepend;
59 }
60 public function getClientId(): string
61 {
62 return $this->client;
63 }
64 };
65 }
66
67 #[Test]
69 {
70 $request = $this->buildRequest('/webdav.php/ref_92');
71 $builder = new UriBuilder($request, $this->buildConfig(true));
72
73 $this->assertSame(
74 'http://example.org/webdav.php/default/ref_92',
75 $builder->getWebDavDefaultUri(92)
76 );
77 }
78
79 #[Test]
81 {
82 $request = $this->buildRequest('/webdav.php/ref_92');
83 $builder = new UriBuilder($request, $this->buildConfig(false));
84
85 $this->assertSame(
86 'http://example.org/webdav.php/ref_92',
87 $builder->getWebDavDefaultUri(92)
88 );
89 }
90
91 #[Test]
93 {
94 $request = $this->buildRequest('/webdav.php/ref_5', 'https');
95 $builder = new UriBuilder($request, $this->buildConfig(false));
96
97 $this->assertSame(
98 'https://example.org/webdav.php/ref_5',
99 $builder->getWebDavDefaultUri(5)
100 );
101 }
102
103 #[Test]
105 {
106 $request = $this->buildRequest('/webdav.php/ref_1', 'https');
107 $builder = new UriBuilder($request, $this->buildConfig(false));
108
109 $this->assertSame(
110 'webdavs://example.org/webdav.php/ref_1',
111 $builder->getWebDavKonquerorUri(1)
112 );
113 }
114
115 #[Test]
117 {
118 $request = $this->buildRequest('/webdav.php/ref_1');
119 $builder = new UriBuilder($request, $this->buildConfig(false));
120
121 $this->assertSame(
122 'dav://example.org/webdav.php/ref_1',
123 $builder->getWebDavNautilusUri(1)
124 );
125 }
126
127 #[Test]
128 public function nonStandardPort_isAppendedToHost(): void
129 {
130 $request = $this->buildRequest('/webdav.php/ref_42', 'http', 'example.org', 8080);
131 $builder = new UriBuilder($request, $this->buildConfig(false));
132
133 $this->assertSame(
134 'http://example.org:8080/webdav.php/ref_42',
135 $builder->getWebDavDefaultUri(42)
136 );
137 }
138
139 #[Test]
140 public function port80_isOmittedFromHost(): void
141 {
142 $request = $this->buildRequest('/webdav.php/ref_42', 'http', 'example.org', 80);
143 $builder = new UriBuilder($request, $this->buildConfig(false));
144
145 $this->assertSame(
146 'http://example.org/webdav.php/ref_42',
147 $builder->getWebDavDefaultUri(42)
148 );
149 }
150
151 #[Test]
153 {
154 $request = $this->buildRequest('/some/path/index.html');
155 $builder = new UriBuilder($request, $this->buildConfig(false));
156
157 $this->assertSame(
158 'http://example.org/some/path/webdav.php/ref_7',
159 $builder->getWebDavDefaultUri(7)
160 );
161 }
162
163 #[Test]
165 {
166 $request = $this->buildRequest('/webdav.php/ref_92');
167 $builder = new UriBuilder($request, $this->buildConfig(false));
168
169 $this->assertSame(
170 '/webdav.php/ref_92?mount-instructions',
171 $builder->getUriToMountInstructionModalByRef(92)
172 );
173 }
174
175 #[Test]
177 {
178 $request = $this->buildRequest('/webdav.php/de');
179 $builder = new UriBuilder($request, $this->buildConfig(false));
180
181 $this->assertSame(
182 '/webdav.php/de?mount-instructions',
183 $builder->getUriToMountInstructionModalByLanguage('de')
184 );
185 }
186
187 #[Test]
189 {
190 $request = $this->buildRequest('/webdav.php/ref_92');
191 $builder = new UriBuilder($request, $this->buildConfig(true, 'default'));
192
193 $this->assertSame(
194 '/webdav.php/default/ref_92?mount-instructions',
195 $builder->getUriToMountInstructionModalByRef(92)
196 );
197 }
198
199 #[Test]
201 {
202 $request = $this->buildRequest('/webdav.php/ref_92');
203 $builder = new UriBuilder($request, $this->buildConfig(true, ''));
204
205 $this->assertSame(
206 'http://example.org/webdav.php/ref_92',
207 $builder->getWebDavDefaultUri(92)
208 );
209 }
210}
buildConfig(bool $prepend_client_name, string $client_id='default')
buildRequest(string $path, string $scheme='http', string $host='example.org', ?int $port=null)
string $client_id
Definition: class.ilias.php:36
__construct()
Constructor setup ILIAS global object @access public.
Definition: class.ilias.php:76
getClientId()
$client
$path
Definition: ltiservices.php:30