ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
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

readonly 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:50
$url
Definition: shib_logout.php:68

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 }
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.

References $url.

◆ testRemoveAndAddFragment()

ILIAS\UI\URLBuilderTest::testRemoveAndAddFragment ( )

Definition at line 166 of file URLBuilderTest.php.

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

References $url.

◆ testRenderObject()

ILIAS\UI\URLBuilderTest::testRenderObject ( )

Definition at line 217 of file URLBuilderTest.php.

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

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

◆ testRenderTokens()

ILIAS\UI\URLBuilderTest::testRenderTokens ( )

Definition at line 193 of file URLBuilderTest.php.

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

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'], 'p0', random_bytes(URLBuilder::URL_MAX_LENGTH / 4));
159 $result = $result[0]->acquireParameter(['test'], 'p1', random_bytes(URLBuilder::URL_MAX_LENGTH / 4));
160 $result = $result[0]->acquireParameter(['test'], 'p2', random_bytes(URLBuilder::URL_MAX_LENGTH / 4));
161 $result = $result[0]->acquireParameter(['test'], 'p3', random_bytes(URLBuilder::URL_MAX_LENGTH / 4));
162 $this->expectException(\LengthException::class);
163 $output = $result[0]->buildURI();
164 }
const URL_MAX_LENGTH
A maximum length of 8192 characters should be safe to use in most browsers, even though longer URLs w...
Definition: URLBuilder.php:46

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

◆ testWithUri()

ILIAS\UI\URLBuilderTest::testWithUri ( )

Definition at line 180 of file URLBuilderTest.php.

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

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

readonly 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: