‪TYPO3CMS  11.5
HttpUtilityTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
21 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
22 
26 class ‪HttpUtilityTest extends UnitTestCase
27 {
34  public function ‪isUrlBuiltCorrectly(array $urlParts, string $expected): void
35  {
36  $url = ‪HttpUtility::buildUrl($urlParts);
37  self::assertEquals($expected, $url);
38  }
39 
43  public function ‪isUrlBuiltCorrectlyDataProvider(): array
44  {
45  return [
46  'rebuild url without scheme' => [
47  parse_url('typo3.org/path/index.php'),
48  'typo3.org/path/index.php',
49  ],
50  'rebuild url with scheme' => [
51  parse_url('http://typo3.org/path/index.php'),
52  'http://typo3.org/path/index.php',
53  ],
54  'rebuild url with all properties' => [
55  parse_url('http://editor:secret@typo3.org:8080/path/index.php?query=data#fragment'),
56  'http://editor:secret@typo3.org:8080/path/index.php?query=data#fragment',
57  ],
58  'url without username, but password' => [
59  [
60  'scheme' => 'http',
61  'pass' => 'secrept',
62  'host' => 'typo3.org',
63  ],
64  'http://typo3.org',
65  ],
66  ];
67  }
68 
74  public function ‪queryStringDataProvider(): array
75  {
76  $valueArray = ['one' => '√', 'two' => 2];
77 
78  return [
79  'Empty input' => ['foo', [], ''],
80  'String parameters' => ['foo', $valueArray, 'foo%5Bone%5D=%E2%88%9A&foo%5Btwo%5D=2'],
81  'Nested array parameters' => ['foo', [$valueArray], 'foo%5B0%5D%5Bone%5D=%E2%88%9A&foo%5B0%5D%5Btwo%5D=2'],
82  'Keep blank parameters' => ['foo', ['one' => '√', ''], 'foo%5Bone%5D=%E2%88%9A&foo%5B0%5D='],
83  ];
84  }
85 
93  public function ‪buildQueryStringBuildsValidParameterString(string $name, array $input, string $expected): void
94  {
95  if ($name === '') {
96  self::assertSame($expected, ‪HttpUtility::buildQueryString($input));
97  } else {
98  self::assertSame($expected, ‪HttpUtility::buildQueryString([$name => $input]));
99  }
100  }
101 
106  {
107  $input = ['one' => '√', ''];
108  $expected = 'foo%5Bone%5D=%E2%88%9A';
109  self::assertSame($expected, ‪HttpUtility::buildQueryString(['foo' => $input], '', true));
110  }
111 
116  {
117  $input = ['one' => '√', ''];
118  $expected = 'foo%5Bone%5D=%E2%88%9A&foo%5B0%5D=';
119  self::assertSame($expected, ‪HttpUtility::buildQueryString(['foo' => $input]));
120  }
121 
126  {
127  $input = ['one' => ['two' => ['three' => '√']], ''];
128  $expected = 'foo%5Bone%5D%5Btwo%5D%5Bthree%5D=%E2%88%9A&foo%5B0%5D=';
129  self::assertSame($expected, ‪HttpUtility::buildQueryString(['foo' => $input]));
130  }
131 
136  {
137  $input = [];
138  $expected = '';
139  self::assertSame($expected, ‪HttpUtility::buildQueryString($input, '?', true));
140  }
141 
146  {
147  $input = ['one' => ''];
148  $expected = '';
149  self::assertSame($expected, ‪HttpUtility::buildQueryString(['foo' => $input], '?', true));
150  }
151 }
‪TYPO3\CMS\Core\Tests\Unit\Utility\HttpUtilityTest
Definition: HttpUtilityTest.php:27
‪TYPO3\CMS\Core\Tests\Unit\Utility\HttpUtilityTest\isUrlBuiltCorrectlyDataProvider
‪array isUrlBuiltCorrectlyDataProvider()
Definition: HttpUtilityTest.php:43
‪TYPO3\CMS\Core\Tests\Unit\Utility\HttpUtilityTest\queryStringDataProvider
‪array queryStringDataProvider()
Definition: HttpUtilityTest.php:74
‪TYPO3\CMS\Core\Tests\Unit\Utility\HttpUtilityTest\isUrlBuiltCorrectly
‪isUrlBuiltCorrectly(array $urlParts, string $expected)
Definition: HttpUtilityTest.php:34
‪TYPO3\CMS\Core\Tests\Unit\Utility\HttpUtilityTest\buildQueryStringCanUrlEncodeKeyNames
‪buildQueryStringCanUrlEncodeKeyNames()
Definition: HttpUtilityTest.php:115
‪TYPO3\CMS\Core\Tests\Unit\Utility
‪TYPO3\CMS\Core\Tests\Unit\Utility\HttpUtilityTest\buildQueryStringCanUrlEncodeKeyNamesMultidimensional
‪buildQueryStringCanUrlEncodeKeyNamesMultidimensional()
Definition: HttpUtilityTest.php:125
‪TYPO3\CMS\Core\Utility\HttpUtility\buildUrl
‪static string buildUrl(array $urlParts)
Definition: HttpUtility.php:149
‪TYPO3\CMS\Core\Utility\HttpUtility\buildQueryString
‪static string buildQueryString(array $parameters, string $prependCharacter='', bool $skipEmptyParameters=false)
Definition: HttpUtility.php:171
‪TYPO3\CMS\Core\Tests\Unit\Utility\HttpUtilityTest\buildQueryStringCanSkipEmptyParameters
‪buildQueryStringCanSkipEmptyParameters()
Definition: HttpUtilityTest.php:105
‪TYPO3\CMS\Core\Tests\Unit\Utility\HttpUtilityTest\buildQueryStringBuildsValidParameterString
‪buildQueryStringBuildsValidParameterString(string $name, array $input, string $expected)
Definition: HttpUtilityTest.php:93
‪TYPO3\CMS\Core\Utility\HttpUtility
Definition: HttpUtility.php:22
‪TYPO3\CMS\Core\Tests\Unit\Utility\HttpUtilityTest\buildQueryStringSkipsLeadingCharacterOnEmptyParameters
‪buildQueryStringSkipsLeadingCharacterOnEmptyParameters()
Definition: HttpUtilityTest.php:135
‪TYPO3\CMS\Core\Tests\Unit\Utility\HttpUtilityTest\buildQueryStringSkipsLeadingCharacterOnCleanedEmptyParameters
‪buildQueryStringSkipsLeadingCharacterOnCleanedEmptyParameters()
Definition: HttpUtilityTest.php:145