ParserFunctionalTest.php
1<?php
2
3namespace tests\Udger;
4
5class ParserFunctionalTest extends \Codeception\TestCase\Test
6{
10 protected $guy;
11
16 protected $parser;
17
18 protected function _before()
19 {
20 $this->parser = new \Udger\Parser(
21 \Codeception\Util\Stub::makeEmpty("Psr\Log\LoggerInterface"),
22 \Codeception\Util\Stub::makeEmpty("Udger\Helper\IP"));
23 $this->parser->setDataFile(dirname(__DIR__) . "/fixtures/udgercache/udgerdb_v3.dat");
24 }
25
26 protected function _after()
27 {
28 }
29
30 // tests
31 public function testParse()
32 {
33 $useragent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36';
34 $this->parser->setUA($useragent);
35 $result = $this->parser->parse();
36
37 $this->arrayHasKey("user_agent", $result);
38 $this->assertEquals("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36", $result["user_agent"]["ua_string"]);
39 $this->assertEquals("Browser", $result["user_agent"]["ua_class"]);
40 $this->assertEquals("browser", $result["user_agent"]["ua_class_code"]);
41 $this->assertEquals("Chrome 39.0.2171.71", $result["user_agent"]["ua"]);
42 $this->assertEquals("39.0.2171.71", $result["user_agent"]["ua_version"]);
43 $this->assertEquals("39", $result["user_agent"]["ua_version_major"]);
44 $this->assertEquals("50", $result["user_agent"]["ua_uptodate_current_version"]);
45 $this->assertEquals("Chrome", $result["user_agent"]["ua_family"]);
46 $this->assertEquals("chrome", $result["user_agent"]["ua_family_code"]);
47 $this->assertEquals("http://www.google.com/chrome/", $result["user_agent"]["ua_family_homepage"]);
48 $this->assertEquals("Google Inc.", $result["user_agent"]["ua_family_vendor"]);
49 $this->assertEquals("google_inc", $result["user_agent"]["ua_family_vendor_code"]);
50 $this->assertEquals("https://www.google.com/about/company/", $result["user_agent"]["ua_family_vendor_homepage"]);
51 $this->assertEquals("chrome.png", $result["user_agent"]["ua_family_icon"]);
52 $this->assertEquals("chrome_big.png", $result["user_agent"]["ua_family_icon_big"]);
53 $this->assertEquals("https://udger.com/resources/ua-list/browser-detail?browser=Chrome", $result["user_agent"]["ua_family_info_url"]);
54 $this->assertEquals("WebKit/Blink", $result["user_agent"]["ua_engine"]);
55 $this->assertEquals("OS X", $result["user_agent"]["os"]);
56 $this->assertEquals("osx", $result["user_agent"]["os_code"]);
57 $this->assertEquals("https://en.wikipedia.org/wiki/Mac_OS_X", $result["user_agent"]["os_homepage"]);
58 $this->assertEquals("macosx.png", $result["user_agent"]["os_icon"]);
59 $this->assertEquals("macosx_big.png", $result["user_agent"]["os_icon_big"]);
60 $this->assertEquals("https://udger.com/resources/ua-list/os-detail?os=OS X", $result["user_agent"]["os_info_url"]);
61 $this->assertEquals("OS X", $result["user_agent"]["os_family"]);
62 $this->assertEquals("osx", $result["user_agent"]["os_family_code"]);
63 $this->assertEquals("Apple Computer, Inc.", $result["user_agent"]["os_family_vendor"]);
64 $this->assertEquals("apple_inc", $result["user_agent"]["os_family_vendor_code"]);
65 $this->assertEquals("http://www.apple.com/", $result["user_agent"]["os_family_vendor_homepage"]);
66 $this->assertEquals("Desktop", $result["user_agent"]["device_class"]);
67 $this->assertEquals("desktop", $result["user_agent"]["device_class_code"]);
68 $this->assertEquals("desktop.png", $result["user_agent"]["device_class_icon"]);
69 $this->assertEquals("desktop_big.png", $result["user_agent"]["device_class_icon_big"]);
70 $this->assertEquals("https://udger.com/resources/ua-list/device-detail?device=Desktop", $result["user_agent"]["device_class_info_url"]);
71 $this->arrayHasKey("crawler_last_seen", $result["user_agent"]);
72 $this->arrayHasKey("crawler_category", $result["user_agent"]);
73 $this->arrayHasKey("crawler_category_code", $result["user_agent"]);
74 $this->arrayHasKey("crawler_respect_robotstxt", $result["user_agent"]);
75 }
76
77 public function testParseMiss()
78 {
79 $useragent = 'Lynx/2.8.6rel.5 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/1.0.0a';
80 $result = $this->parser->parse($useragent);
81
82 }
83
84 public function testParseRandomString()
85 {
86
87 $result = $this->parser->parse("loremlipsum");
88
89 }
90
91 public function testParseEmpty()
92 {
93 $this->parser->setUA("");
94
95 $result = $this->parser->parse();
96 $this->assertArrayHasKey("user_agent", $result);
97 $this->assertArrayHasKey("ip_address", $result);
98 }
99
100 public function testParseNull()
101 {
102 $this->parser->setUA(null);
103
104 $result = $this->parser->parse();
105 $this->assertArrayHasKey("user_agent", $result);
106 $this->assertArrayHasKey("ip_address", $result);
107 }
108}