[!!!][TASK] Extract testing framework for TYPO3
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Tests / Unit / Utility / ClientUtilityTest.php
1 <?php
2 namespace TYPO3\CMS\Core\Tests\Unit\Utility;
3
4 /*
5 * This file is part of the TYPO3 CMS project.
6 *
7 * It is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License, either version 2
9 * of the License, or any later version.
10 *
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
13 *
14 * The TYPO3 project - inspiring people to share!
15 */
16
17 /**
18 * Testcase for the \TYPO3\CMS\Core\Utility\ClientUtility class.
19 */
20 class ClientUtilityTest extends \TYPO3\CMS\Components\TestingFramework\Core\UnitTestCase
21 {
22 //////////////////////////////////////////////////////////
23 // Utility Functions
24 //////////////////////////////////////////////////////////
25 /**
26 * Compares array of UA strings with expected result array of browser/version pair
27 *
28 * @param array $browserStrings array with userAgent strings
29 * @param array $expectedMembers array with expected browser/version for given userAgent strings
30 */
31 private function analyzeUserAgentStrings($browserStrings, $expectedMembers)
32 {
33 $actual = $expected = [];
34 foreach ($browserStrings as $browserString) {
35 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($browserString);
36 $expected[] = $expectedMembers;
37 $actual[] = [
38 'browser' => $infoArray['browser'],
39 'version' => array_shift(explode('.', $infoArray['version']))
40 ];
41 }
42 $this->assertSame($expected, $actual);
43 }
44
45 //////////////////////////////////////////////////////////
46 // Tests concerning getBrowserInfo
47 //////////////////////////////////////////////////////////
48 /**
49 * @test
50 */
51 public function checkBrowserInfoIE6()
52 {
53 $browserStrings = [
54 'Mozilla/4.0 (compatible; MSIE 6.1; Windows XP; .NET CLR 1.1.4322; .NET CLR 2.0.50727)',
55 'Mozilla/4.0 (compatible; MSIE 6.1; Windows XP)',
56 'Mozilla/4.0 (compatible; MSIE 6.01; Windows NT 6.0)',
57 'Mozilla/5.0 (Windows; U; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)',
58 'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)',
59 'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4325)',
60 'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)',
61 'Mozilla/45.0 (compatible; MSIE 6.0; Windows NT 5.1)',
62 'Mozilla/4.08 (compatible; MSIE 6.0; Windows NT 5.1)',
63 'Mozilla/4.01 (compatible; MSIE 6.0; Windows NT 5.1)',
64 'Mozilla/4.0 (X11; MSIE 6.0; i686; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM)',
65 'Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 6.0)',
66 'Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 5.2)',
67 'Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 5.0)',
68 'Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)',
69 'Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)',
70 'Mozilla/4.0 (MSIE 6.0; Windows NT 5.0)',
71 'Mozilla/4.0 (compatible;MSIE 6.0;Windows 98;Q312461)',
72 'Mozilla/4.0 (Compatible; Windows NT 5.1; MSIE 6.0) (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)',
73 'Mozilla/4.0 (compatible; U; MSIE 6.0; Windows NT 5.1)',
74 'Mozilla/4.0 (compatible; MSIE 6,0; Windows NT 5,1; SV1; Alexa Toolbar)'
75 ];
76 $expectedMembers = [
77 'browser' => 'msie',
78 'version' => '6'
79 ];
80 $this->analyzeUserAgentStrings($browserStrings, $expectedMembers);
81 }
82
83 /**
84 * @test
85 */
86 public function checkBrowserInfoIE7()
87 {
88 $browserStrings = [
89 'Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)',
90 'Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; el-GR)',
91 'Mozilla/5.0 (MSIE 7.0; Macintosh; U; SunOS; X11; gu; SV1; InfoPath.2; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)',
92 'Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; c .NET CLR 3.0.04506; .NET CLR 3.5.30707; InfoPath.1; el-GR)',
93 'Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; c .NET CLR 3.0.04506; .NET CLR 3.5.30707; InfoPath.1; el-GR)',
94 'Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; fr-FR)',
95 'Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; en-US)',
96 'Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727)',
97 'Mozilla/4.79 [en] (compatible; MSIE 7.0; Windows NT 5.0; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)',
98 'Mozilla/4.0 (Windows; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)',
99 'Mozilla/4.0 (Mozilla/4.0; MSIE 7.0; Windows NT 5.1; FDM; SV1; .NET CLR 3.0.04506.30)',
100 'Mozilla/4.0 (Mozilla/4.0; MSIE 7.0; Windows NT 5.1; FDM; SV1)',
101 'Mozilla/4.0 (compatible;MSIE 7.0;Windows NT 6.0)',
102 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)',
103 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;)',
104 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; YPC 3.2.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)',
105 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; YPC 3.2.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)',
106 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; Media Center PC 5.0; .NET CLR 2.0.50727)',
107 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 3.0.04506)',
108 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET CLR 1.1.4322)',
109 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C)',
110 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0)',
111 ];
112 $expectedMembers = [
113 'browser' => 'msie',
114 'version' => '7'
115 ];
116 $this->analyzeUserAgentStrings($browserStrings, $expectedMembers);
117 }
118
119 /**
120 * @test
121 */
122 public function checkBrowserInfoIE8()
123 {
124 $browserStrings = [
125 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)',
126 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; Media Center PC 6.0; InfoPath.2; MS-RTC LM 8)',
127 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.2)',
128 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 3.0)',
129 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; msn OptimizedIE8;ZHCN)',
130 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8)',
131 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; Zune 4.0)',
132 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3)',
133 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; yie8)',
134 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; Zune 3.0; MS-RTC LM 8)',
135 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; MS-RTC LM 8; Zune 4.0)',
136 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; MS-RTC LM 8)',
137 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; FDM; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET CLR 1.1.4322)',
138 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E; FDM)',
139 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 4.0.20402; MS-RTC LM 8)',
140 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; InfoPath.2; MS-RTC LM 8)',
141 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; InfoPath.2)',
142 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3; .NET CLR 4.0.20506)',
143 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)',
144 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; MRA 5.5 (build 02842); SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)',
145 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)'
146 ];
147 $expectedMembers = [
148 'browser' => 'msie',
149 'version' => '8'
150 ];
151 $this->analyzeUserAgentStrings($browserStrings, $expectedMembers);
152 }
153
154 /**
155 * @test
156 */
157 public function checkBrowserInfoIE9()
158 {
159 $browserStrings = [
160 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
161 ];
162 $expectedMembers = [
163 'browser' => 'msie',
164 'version' => '9'
165 ];
166 $this->analyzeUserAgentStrings($browserStrings, $expectedMembers);
167 }
168
169 /**
170 * @test
171 */
172 public function checkBrowserInfoIE10()
173 {
174 $browserStrings = [
175 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)',
176 ];
177 $expectedMembers = [
178 'browser' => 'msie',
179 'version' => '10'
180 ];
181 $this->analyzeUserAgentStrings($browserStrings, $expectedMembers);
182 }
183
184 /**
185 * @test
186 */
187 public function checkBrowserInfoIE11()
188 {
189 $browserStrings = [
190 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko',
191 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C; rv:11.0) like Gecko',
192 ];
193 $expectedMembers = [
194 'browser' => 'msie',
195 'version' => '11'
196 ];
197 $this->analyzeUserAgentStrings($browserStrings, $expectedMembers);
198 }
199
200 /**
201 * @test
202 */
203 public function checkGeckoVersion()
204 {
205 $userAgentString = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3';
206 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
207 $this->assertEquals('1.9.2.3', $infoArray['all']['gecko']);
208 }
209
210 /**
211 * @test
212 */
213 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfWindows8()
214 {
215 $userAgentString = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';
216 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
217 $this->assertContains('win8', $infoArray['all_systems']);
218 }
219
220 /**
221 * @test
222 */
223 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfWindows8rev1()
224 {
225 $userAgentString = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.3; Trident/6.0)';
226 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
227 $this->assertContains('win8', $infoArray['all_systems']);
228 }
229
230 /**
231 * @test
232 */
233 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfWindows7()
234 {
235 $userAgentString = 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)';
236 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
237 $this->assertContains('win7', $infoArray['all_systems']);
238 }
239
240 /**
241 * @test
242 */
243 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfWindowsVista()
244 {
245 $userAgentString = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)';
246 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
247 $this->assertContains('winVista', $infoArray['all_systems']);
248 }
249
250 /**
251 * @test
252 */
253 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfWindowsXp()
254 {
255 $userAgentString = 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)';
256 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
257 $this->assertContains('winXP', $infoArray['all_systems']);
258 }
259
260 /**
261 * @test
262 */
263 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfWindows2k()
264 {
265 $userAgentString = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; SV1)';
266 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
267 $this->assertContains('win2k', $infoArray['all_systems']);
268 }
269
270 /**
271 * @test
272 */
273 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfWindows2kServicePack1()
274 {
275 $userAgentString = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.01; SV1)';
276 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
277 $this->assertContains('win2k', $infoArray['all_systems']);
278 }
279
280 /**
281 * @test
282 */
283 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfWindowsNt()
284 {
285 $userAgentString = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0)';
286 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
287 $this->assertContains('winNT', $infoArray['all_systems']);
288 }
289
290 /**
291 * @test
292 */
293 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfIpad()
294 {
295 $userAgentString = 'Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7W367a Safari/531.21.10';
296 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
297 $this->assertContains('iOS', $infoArray['all_systems']);
298 }
299
300 /**
301 * @test
302 */
303 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfIphone()
304 {
305 $userAgentString = 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7';
306 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
307 $this->assertContains('iOS', $infoArray['all_systems']);
308 }
309
310 /**
311 * @test
312 */
313 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfIpod()
314 {
315 $userAgentString = 'Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Geckto) Version/3.0 Mobile/3A101a Safari/419.3';
316 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
317 $this->assertContains('iOS', $infoArray['all_systems']);
318 }
319
320 /**
321 * @test
322 */
323 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfMacOsX()
324 {
325 $userAgentString = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-us) AppleWebKit/534.15+ (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4';
326 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
327 $this->assertContains('mac', $infoArray['all_systems']);
328 }
329
330 /**
331 * @test
332 */
333 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfLinux()
334 {
335 $userAgentString = 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8) Gecko/20100723 Ubuntu/10.04 (lucid) Firefox/3.6.8';
336 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
337 $this->assertContains('linux', $infoArray['all_systems']);
338 }
339
340 /**
341 * @test
342 */
343 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfSolaris()
344 {
345 $userAgentString = 'Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.9.1.9) Gecko/20100525 Firefox/3.5.9';
346 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
347 $this->assertContains('unix_sun', $infoArray['all_systems']);
348 }
349
350 /**
351 * Provide various user agent strings for android devices
352 *
353 * @static
354 * @return array List of user agents
355 */
356 public static function androidUserAgentsProvider()
357 {
358 $agents = [
359 'defaultBrowser' => [
360 'agent' => 'Mozilla/5.0 (Linux; U; Android 2.3; en-US; sdk Build/GRH55) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
361 ],
362 'operaMini' => [
363 'agent' => 'Opera/9.80 (Android; Opera Mini/6.0.24556/24.816; U; en) Presto/2.5.25 Version/10.54'
364 ]
365 ];
366 return $agents;
367 }
368
369 /**
370 * @test
371 * @dataProvider androidUserAgentsProvider
372 */
373 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfAndroid($userAgentString)
374 {
375 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
376 $this->assertContains('android', $infoArray['all_systems']);
377 }
378
379 /**
380 * @test
381 */
382 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfOpenbsd()
383 {
384 $userAgentString = 'Links (1.00pre20; OpenBSD 4.8 i386; 80x25)';
385 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
386 $this->assertContains('unix_bsd', $infoArray['all_systems']);
387 }
388
389 /**
390 * @test
391 */
392 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfNetbsd()
393 {
394 $userAgentString = 'Links (2.2; NetBSD 5.1 amd64; 80x25)';
395 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
396 $this->assertContains('unix_bsd', $infoArray['all_systems']);
397 }
398
399 /**
400 * @test
401 */
402 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfFreebsd()
403 {
404 $userAgentString = 'Mozilla/5.0 (X11; U; FreeBSD amd64; c) AppleWebKit/531.2+ (KHTML, like Gecko) Safari 531.2+ Epiphany/230.2';
405 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
406 $this->assertContains('unix_bsd', $infoArray['all_systems']);
407 }
408
409 /**
410 * @test
411 */
412 public function getBrowserInfoReturnsCorrectSystemValueForUserAgentStringOfChromeOs()
413 {
414 $userAgentString = 'Mozilla/5.0 (X11; U; CrOS i686 9.10.0; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.253.0 Safari 532.5';
415 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
416 $this->assertContains('chrome', $infoArray['all_systems']);
417 }
418
419 /**
420 * @test
421 */
422 public function getBrowserInfoReturnsCorrectBrowserValueForUserAgentStringOfSafari()
423 {
424 $userAgentString = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6; en-us) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9';
425 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
426 $this->assertSame('safari', $infoArray['browser']);
427 }
428
429 /**
430 * @test
431 */
432 public function getBrowserInfoReturnsCorrectBrowserValueForUserAgentStringOfFirefox()
433 {
434 $userAgentString = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0b8) Gecko/20100101 Firefox/4.0b8';
435 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
436 $this->assertSame('firefox', $infoArray['browser']);
437 }
438
439 /**
440 * @test
441 */
442 public function getBrowserInfoReturnsCorrectBrowserValueForUserAgentStringOfOpera()
443 {
444 $userAgentString = 'Opera/9.80 (X11; FreeBSD 8.1-RELEASE amd64; U; en) Presto/2.2.15 Version/10.10';
445 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
446 $this->assertSame('opera', $infoArray['browser']);
447 }
448
449 /**
450 * @test
451 */
452 public function getBrowserInfoReturnsCorrectBrowserValueForUserAgentStringOfMobileSafariOnAndroid()
453 {
454 $userAgentString = 'Mozilla/5.0 (Linux; U; Android WildPuzzleROM v8.0.7 froyo 2.2; de-de; HTC Wildfire Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1';
455 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
456 $this->assertSame('safari', $infoArray['browser']);
457 }
458
459 /**
460 * @test
461 */
462 public function getBrowserInfoReturnsCorrectBrowserValueForUserAgentStringOfMobileSafariOnIphone()
463 {
464 $userAgentString = 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5';
465 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
466 $this->assertSame('safari', $infoArray['browser']);
467 }
468
469 /**
470 * @test
471 */
472 public function getBrowserInfoReturnsCorrectBrowserValueForUserAgentStringOfKonqueror()
473 {
474 $userAgentString = 'Mozilla/5.0 (compatible; Konqueror/4.4; FreeBSD) KHTML/4.4.5 (like Gecko)';
475 $infoArray = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo($userAgentString);
476 $this->assertSame('konqueror', $infoArray['browser']);
477 }
478 }