*/ public static function agentProvider(): array { return [ 'Windows Chrome' => [ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', 'desktop', 'Chrome', 'Windows', ], 'macOS Safari' => [ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15', 'desktop', 'Safari', 'macOS', ], 'iPhone Safari' => [ 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Mobile/15E148 Safari/604.1', 'mobile', 'Safari', 'iOS', ], 'Android Handy' => [ 'Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36', 'mobile', 'Chrome', 'Android', ], 'Android Tablet' => [ 'Mozilla/5.0 (Linux; Android 13; SM-X200) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', 'tablet', 'Chrome', 'Android', ], 'iPad' => [ 'Mozilla/5.0 (iPad; CPU OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/604.1', 'tablet', 'Safari', 'iOS', ], 'Firefox Linux' => [ 'Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0', 'desktop', 'Firefox', 'Linux', ], 'Edge' => [ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0', 'desktop', 'Edge', 'Windows', ], 'Googlebot' => [ 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)', 'bot', 'Bot', 'unknown', ], 'curl' => ['curl/8.4.0', 'bot', 'Bot', 'unknown'], ]; } /** * @dataProvider agentProvider */ public function testParse(string $userAgent, string $device, string $browser, string $platform): void { $result = UserAgentParser::parse($userAgent); self::assertSame($device, $result['device']); self::assertSame($browser, $result['browser']); self::assertSame($platform, $result['platform']); } public function testEmptyUserAgentIsUnknown(): void { $result = UserAgentParser::parse(''); self::assertSame('unknown', $result['device']); self::assertSame('unknown', $result['browser']); self::assertSame('unknown', $result['platform']); } public function testDeviceLabelsAreGerman(): void { self::assertSame('Mobil', UserAgentParser::deviceLabel('mobile')); self::assertSame('Desktop', UserAgentParser::deviceLabel('desktop')); self::assertSame('Tablet', UserAgentParser::deviceLabel('tablet')); self::assertSame('Unbekannt', UserAgentParser::deviceLabel('unknown')); } }