ILIAS  release_8 Revision v8.24
ILIAS\UI\URLBuilderTest Class Reference
+ Inheritance diagram for ILIAS\UI\URLBuilderTest:
+ Collaboration diagram for ILIAS\UI\URLBuilderTest:

Public Member Functions

 testGetUrl ()
 
 testAcquireParam ()
 
 testAcquireParamWithLongNamespace ()
 
 testAcquireParamWithValue ()
 
 testAcquireParamWithSameName ()
 
 testWriteParam ()
 
 testDeleteParam ()
 
 testUrlTooLong ()
 
 testRemoveAndAddFragment ()
 
 testWithUri ()
 
 testRenderTokens ()
 
 testRenderObject ()
 

Protected Member Functions

 setUp ()
 

Private Attributes

ILIAS Data URI $URI_COMPLETE
 

Detailed Description

Definition at line 25 of file URLBuilderTest.php.

Member Function Documentation

◆ setUp()

ILIAS\UI\URLBuilderTest::setUp ( )
protected

Definition at line 29 of file URLBuilderTest.php.

29 : void
30 {
31 $this->URI_COMPLETE = new \ILIAS\Data\URI('https://www.ilias.de/foo/bar?var1=42&var2=foo#12345');
32 }

◆ testAcquireParam()

ILIAS\UI\URLBuilderTest::testAcquireParam ( )

Definition at line 41 of file URLBuilderTest.php.

41 : void
42 {
43 $url = new URLBuilder($this->URI_COMPLETE);
44 $result = $url->acquireParameter(['test'], 'title');
45 $this->assertInstanceOf(URLBuilder::class, $result[0]);
46 $this->assertEquals(
47 'https://www.ilias.de/foo/bar?var1=42&var2=foo&test' . URLBuilder::SEPARATOR . 'title=#12345',
48 (string) $result[0]->buildURI()
49 );
50 $this->assertInstanceOf(URLBuilderToken::class, $result[1]);
51 $this->assertEquals('test' . URLBuilder::SEPARATOR . 'title', $result[1]->getName());
52 $this->assertNotEmpty($result[1]->getToken());
53 }
const SEPARATOR
Separator for parts of a parameter's namespace.
Definition: URLBuilder.php:49
$url

References $url, and ILIAS\UI\URLBuilder\SEPARATOR.

◆ testAcquireParamWithLongNamespace()

ILIAS\UI\URLBuilderTest::testAcquireParamWithLongNamespace ( )

Definition at line 55 of file URLBuilderTest.php.

55 : void
56 {
57 $url = new URLBuilder($this->URI_COMPLETE);
58 $result = $url->acquireParameter(['test', 'object', 'metadata'], 'title');
59 $this->assertInstanceOf(URLBuilder::class, $result[0]);
60 $this->assertEquals(
61 'https://www.ilias.de/foo/bar?var1=42&var2=foo&test' . URLBuilder::SEPARATOR .
62 'object' . URLBuilder::SEPARATOR .
63 'metadata' . URLBuilder::SEPARATOR .
64 'title=#12345',
65 (string) $result[0]->buildURI()
66 );
67 $this->assertInstanceOf(URLBuilderToken::class, $result[1]);
68 $this->assertEquals(
69 'test' . URLBuilder::SEPARATOR .
70 'object' . URLBuilder::SEPARATOR .
71 'metadata' . URLBuilder::SEPARATOR .
72 'title',
73 $result[1]->getName()
74 );
75 $this->assertNotEmpty($result[1]->getToken());
76 }

References $url, and ILIAS\UI\URLBuilder\SEPARATOR.

◆ testAcquireParamWithSameName()

ILIAS\UI\URLBuilderTest::testAcquireParamWithSameName ( )

Definition at line 93 of file URLBuilderTest.php.

93 : void
94 {
95 $url = new URLBuilder($this->URI_COMPLETE);
97 $result = $url->acquireParameter(['test'], 'title', 'foo');
98 $this->assertEquals(
99 'https://www.ilias.de/foo/bar?var1=42&var2=foo&test' . $sep . 'title=foo#12345',
100 (string) $result[0]->buildURI()
101 );
102 $this->assertEquals('test' . $sep . 'title', $result[1]->getName());
103
104 $result2 = $result[0]->acquireParameter(['notatest'], 'title', 'bar');
105 $this->assertEquals(
106 'https://www.ilias.de/foo/bar?var1=42&var2=foo&test' . $sep . 'title=foo&notatest' . $sep . 'title=bar#12345',
107 (string) $result2[0]->buildURI()
108 );
109 $this->assertEquals('notatest' . $sep . 'title', $result2[1]->getName());
110 $this->assertNotEquals($result[1]->getToken(), $result2[1]->getToken());
111 }

References $url, and ILIAS\UI\URLBuilder\SEPARATOR.

◆ testAcquireParamWithValue()

ILIAS\UI\URLBuilderTest::testAcquireParamWithValue ( )

Definition at line 78 of file URLBuilderTest.php.

78 : void
79 {
80 $url = new URLBuilder($this->URI_COMPLETE);
82 $result = $url->acquireParameter(['test'], 'title', 'bar');
83 $this->assertInstanceOf(URLBuilder::class, $result[0]);
84 $this->assertEquals(
85 'https://www.ilias.de/foo/bar?var1=42&var2=foo&test' . $sep . 'title=bar#12345',
86 (string) $result[0]->buildURI()
87 );
88 $this->assertInstanceOf(URLBuilderToken::class, $result[1]);
89 $this->assertEquals('test' . $sep . 'title', $result[1]->getName());
90 $this->assertNotEmpty($result[1]->getToken());
91 }

References $url, and ILIAS\UI\URLBuilder\SEPARATOR.

◆ testDeleteParam()

ILIAS\UI\URLBuilderTest::testDeleteParam ( )

Definition at line 141 of file URLBuilderTest.php.

141 : void
142 {
143 $url = new URLBuilder($this->URI_COMPLETE);
145 $result = $url->acquireParameter(['test'], 'title', 'bar');
146 $this->assertEquals(
147 'https://www.ilias.de/foo/bar?var1=42&var2=foo&test' . $sep . 'title=bar#12345',
148 (string) $result[0]->buildURI()
149 );
150
151 $url = $result[0]->deleteParameter($result[1]);
152 $this->assertEquals('https://www.ilias.de/foo/bar?var1=42&var2=foo#12345', (string) $url->buildURI());
153 }

References $url, and ILIAS\UI\URLBuilder\SEPARATOR.

◆ testGetUrl()

ILIAS\UI\URLBuilderTest::testGetUrl ( )

Definition at line 34 of file URLBuilderTest.php.

34 : void
35 {
36 $url = new URLBuilder($this->URI_COMPLETE);
37 $this->assertInstanceOf(\ILIAS\Data\URI::class, $url->buildURI());
38 $this->assertEquals('https://www.ilias.de/foo/bar?var1=42&var2=foo#12345', (string) $url->buildURI());
39 }
Class ChatMainBarProvider \MainMenu\Provider.

References $url.

◆ testRemoveAndAddFragment()

ILIAS\UI\URLBuilderTest::testRemoveAndAddFragment ( )

Definition at line 163 of file URLBuilderTest.php.

163 : void
164 {
165 $url = new URLBuilder($this->URI_COMPLETE);
166 $url = $url->withFragment(''); // set fragment to empty
167 $this->assertInstanceOf(URLBuilder::class, $url);
168 $this->assertEquals('https://www.ilias.de/foo/bar?var1=42&var2=foo', (string) $url->buildURI());
169 $url = $url->withFragment(null); // unset fragment, use fragment from base URL if present
170 $this->assertInstanceOf(URLBuilder::class, $url);
171 $this->assertEquals('https://www.ilias.de/foo/bar?var1=42&var2=foo#12345', (string) $url->buildURI());
172 $url = $url->withFragment('54321'); // set fragment to value
173 $this->assertInstanceOf(URLBuilder::class, $url);
174 $this->assertEquals('https://www.ilias.de/foo/bar?var1=42&var2=foo#54321', (string) $url->buildURI());
175 }

References $url.

◆ testRenderObject()

ILIAS\UI\URLBuilderTest::testRenderObject ( )

Definition at line 214 of file URLBuilderTest.php.

214 : void
215 {
216 $url = new URLBuilder($this->URI_COMPLETE);
217
218 // One parameter
219 $result1 = $url->acquireParameter(['test', 'object'], 'title', 'bar');
220 $url = $result1[0];
221 $expected_token = 'new Map([["' . $result1[1]->getName() . '",'
222 . 'new il.UI.core.URLBuilderToken(["test","object"], "title", "' . $result1[1]->getToken() . '")]])';
223 $expected_object = 'new il.UI.core.URLBuilder(new URL("https://www.ilias.de/foo/bar?var1=42&var2=foo&'
224 . 'test' . URLBuilder::SEPARATOR . 'object' . URLBuilder::SEPARATOR . 'title=bar#12345"), ' . $expected_token . ')';
225 $this->assertEquals($expected_object, $url->renderObject([$result1[1]]));
226
227 // Two parameters, but just rendered with one
228 $result2 = $url->acquireParameter(['test'], 'description', 'foo');
229 $url = $result2[0];
230 $expected_object = 'new il.UI.core.URLBuilder(new URL("https://www.ilias.de/foo/bar?var1=42&var2=foo&'
231 . 'test' . URLBuilder::SEPARATOR . 'object' . URLBuilder::SEPARATOR . 'title=bar&'
232 . 'test' . URLBuilder::SEPARATOR . 'description=foo#12345"), ' . $expected_token . ')';
233 $this->assertEquals($expected_object, $url->renderObject([$result1[1]]));
234
235 // Two parameters with full render
236 $expected_token = 'new Map([["' . $result1[1]->getName() . '",'
237 . 'new il.UI.core.URLBuilderToken(["test","object"], "title", "' . $result1[1]->getToken() . '")],'
238 . '["' . $result2[1]->getName() . '",'
239 . 'new il.UI.core.URLBuilderToken(["test"], "description", "' . $result2[1]->getToken() . '")]])';
240 $expected_object = 'new il.UI.core.URLBuilder(new URL("https://www.ilias.de/foo/bar?var1=42&var2=foo&'
241 . 'test' . URLBuilder::SEPARATOR . 'object' . URLBuilder::SEPARATOR . 'title=bar&'
242 . 'test' . URLBuilder::SEPARATOR . 'description=foo#12345"), ' . $expected_token . ')';
243 $this->assertEquals($expected_object, $url->renderObject([$result1[1], $result2[1]]));
244 }

References $url, and ILIAS\UI\URLBuilder\SEPARATOR.

◆ testRenderTokens()

ILIAS\UI\URLBuilderTest::testRenderTokens ( )

Definition at line 190 of file URLBuilderTest.php.

190 : void
191 {
192 $url = new URLBuilder($this->URI_COMPLETE);
193
194 // One parameter
195 $result1 = $url->acquireParameter(['test', 'object'], 'title', 'bar');
196 $url = $result1[0];
197 $expected_token = 'new Map([["' . $result1[1]->getName() . '",'
198 . 'new il.UI.core.URLBuilderToken(["test","object"], "title", "' . $result1[1]->getToken() . '")]])';
199 $this->assertEquals($expected_token, $url->renderTokens([$result1[1]]));
200
201 // Two parameters, but just rendered with one
202 $result2 = $url->acquireParameter(['test'], 'description', 'foo');
203 $url = $result2[0];
204 $this->assertEquals($expected_token, $url->renderTokens([$result1[1]]));
205
206 // Two parameters with full render
207 $expected_token = 'new Map([["' . $result1[1]->getName() . '",'
208 . 'new il.UI.core.URLBuilderToken(["test","object"], "title", "' . $result1[1]->getToken() . '")],'
209 . '["' . $result2[1]->getName() . '",'
210 . 'new il.UI.core.URLBuilderToken(["test"], "description", "' . $result2[1]->getToken() . '")]])';
211 $this->assertEquals($expected_token, $url->renderTokens([$result1[1], $result2[1]]));
212 }

References $url.

◆ testUrlTooLong()

ILIAS\UI\URLBuilderTest::testUrlTooLong ( )

Definition at line 155 of file URLBuilderTest.php.

155 : void
156 {
157 $url = new URLBuilder($this->URI_COMPLETE);
158 $result = $url->acquireParameter(['test'], 'title', random_bytes(URLBuilder::URL_MAX_LENGTH));
159 $this->expectException(\LengthException::class);
160 $output = $result[0]->buildURI();
161 }
const URL_MAX_LENGTH
A maximum length of 2048 characters should be safe to use in most browsers, even though longer URLs w...
Definition: URLBuilder.php:45

References $url, and ILIAS\UI\URLBuilder\URL_MAX_LENGTH.

◆ testWithUri()

ILIAS\UI\URLBuilderTest::testWithUri ( )

Definition at line 177 of file URLBuilderTest.php.

177 : void
178 {
179 $url = new URLBuilder($this->URI_COMPLETE);
180 $result = $url->acquireParameter(['test'], 'title', 'bar');
181 $url = $result[0]->withURI(
182 new \ILIAS\Data\URI('http://test.ilias.de/bar/foo?test' . URLBuilder::SEPARATOR . 'title=foo&var1=46#12345')
183 );
184 $this->assertEquals(
185 'http://test.ilias.de/bar/foo?test' . URLBuilder::SEPARATOR . 'title=bar&var1=46#12345',
186 (string) $url->buildURI()
187 );
188 }

References $url, and ILIAS\UI\URLBuilder\SEPARATOR.

◆ testWriteParam()

ILIAS\UI\URLBuilderTest::testWriteParam ( )

Definition at line 113 of file URLBuilderTest.php.

113 : void
114 {
115 $url = new URLBuilder($this->URI_COMPLETE);
117 $result = $url->acquireParameter(['test'], 'title', 'bar');
118 $this->assertEquals(
119 'https://www.ilias.de/foo/bar?var1=42&var2=foo&test' . $sep . 'title=bar#12345',
120 (string) $result[0]->buildURI()
121 );
122
123 $url = $result[0]->withParameter($result[1], 'foobar');
124 $this->assertInstanceOf(URLBuilder::class, $url);
125 $this->assertEquals(
126 'https://www.ilias.de/foo/bar?var1=42&var2=foo&test' . $sep . 'title=foobar#12345',
127 (string) $url->buildURI()
128 );
129
130 $url = $result[0]->withParameter($result[1], ['foo', 'bar']);
131 $this->assertInstanceOf(URLBuilder::class, $url);
132 $this->assertEquals(
133 'https://www.ilias.de/foo/bar?var1=42&var2=foo'
134 . '&test' . $sep . urlencode('title[]') . '=foo'
135 . '&test' . $sep . urlencode('title[]') . '=bar'
136 . '#12345',
137 (string) $url->buildURI()
138 );
139 }

References $url, and ILIAS\UI\URLBuilder\SEPARATOR.

Field Documentation

◆ $URI_COMPLETE

ILIAS Data URI ILIAS\UI\URLBuilderTest::$URI_COMPLETE
private

Definition at line 27 of file URLBuilderTest.php.


The documentation for this class was generated from the following file: