ILIAS  trunk Revision v11.0_alpha-2662-g519ff7d528f
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.

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

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

◆ testAcquireParamWithLongNamespace()

ILIAS\UI\URLBuilderTest::testAcquireParamWithLongNamespace ( )

Definition at line 55 of file URLBuilderTest.php.

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

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  }
const SEPARATOR
Separator for parts of a parameter's namespace.
Definition: URLBuilder.php:50
$url
Definition: shib_logout.php:68

◆ testAcquireParamWithSameName()

ILIAS\UI\URLBuilderTest::testAcquireParamWithSameName ( )

Definition at line 93 of file URLBuilderTest.php.

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

93  : void
94  {
95  $url = new URLBuilder($this->URI_COMPLETE);
96  $sep = URLBuilder::SEPARATOR;
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  }
const SEPARATOR
Separator for parts of a parameter's namespace.
Definition: URLBuilder.php:50
$url
Definition: shib_logout.php:68

◆ testAcquireParamWithValue()

ILIAS\UI\URLBuilderTest::testAcquireParamWithValue ( )

Definition at line 78 of file URLBuilderTest.php.

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

78  : void
79  {
80  $url = new URLBuilder($this->URI_COMPLETE);
81  $sep = URLBuilder::SEPARATOR;
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  }
const SEPARATOR
Separator for parts of a parameter's namespace.
Definition: URLBuilder.php:50
$url
Definition: shib_logout.php:68

◆ testDeleteParam()

ILIAS\UI\URLBuilderTest::testDeleteParam ( )

Definition at line 141 of file URLBuilderTest.php.

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

141  : void
142  {
143  $url = new URLBuilder($this->URI_COMPLETE);
144  $sep = URLBuilder::SEPARATOR;
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  }
const SEPARATOR
Separator for parts of a parameter's namespace.
Definition: URLBuilder.php:50
$url
Definition: shib_logout.php:68

◆ testGetUrl()

ILIAS\UI\URLBuilderTest::testGetUrl ( )

Definition at line 34 of file URLBuilderTest.php.

References $url.

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 Contains several chained tasks and infos about them.
$url
Definition: shib_logout.php:68

◆ testRemoveAndAddFragment()

ILIAS\UI\URLBuilderTest::testRemoveAndAddFragment ( )

Definition at line 166 of file URLBuilderTest.php.

References $url, and null.

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  }
$url
Definition: shib_logout.php:68
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null

◆ testRenderObject()

ILIAS\UI\URLBuilderTest::testRenderObject ( )

Definition at line 217 of file URLBuilderTest.php.

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

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  }
const SEPARATOR
Separator for parts of a parameter's namespace.
Definition: URLBuilder.php:50
$url
Definition: shib_logout.php:68

◆ testRenderTokens()

ILIAS\UI\URLBuilderTest::testRenderTokens ( )

Definition at line 193 of file URLBuilderTest.php.

References $url.

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

◆ testUrlTooLong()

ILIAS\UI\URLBuilderTest::testUrlTooLong ( )

Definition at line 155 of file URLBuilderTest.php.

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

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

◆ testWithUri()

ILIAS\UI\URLBuilderTest::testWithUri ( )

Definition at line 180 of file URLBuilderTest.php.

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

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  }
Interface Observer Contains several chained tasks and infos about them.
const SEPARATOR
Separator for parts of a parameter's namespace.
Definition: URLBuilder.php:50
$url
Definition: shib_logout.php:68

◆ testWriteParam()

ILIAS\UI\URLBuilderTest::testWriteParam ( )

Definition at line 113 of file URLBuilderTest.php.

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

113  : void
114  {
115  $url = new URLBuilder($this->URI_COMPLETE);
116  $sep = URLBuilder::SEPARATOR;
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  }
const SEPARATOR
Separator for parts of a parameter's namespace.
Definition: URLBuilder.php:50
$url
Definition: shib_logout.php:68

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: