These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | |||
3 | /* |
||
4 | * This file is part of Crawler Detect - the web crawler detection library. |
||
5 | * |
||
6 | * (c) Mark Beech <[email protected]> |
||
7 | * |
||
8 | * This source file is subject to the MIT license that is bundled |
||
9 | * with this source code in the file LICENSE. |
||
10 | */ |
||
11 | |||
12 | use Jaybizzle\CrawlerDetect\CrawlerDetect; |
||
13 | use Jaybizzle\CrawlerDetect\Fixtures\Crawlers; |
||
14 | |||
15 | class UserAgentTest extends PHPUnit_Framework_TestCase |
||
0 ignored issues
–
show
|
|||
16 | { |
||
17 | protected $CrawlerDetect; |
||
18 | |||
19 | public function setUp() |
||
20 | { |
||
21 | $this->CrawlerDetect = new CrawlerDetect(); |
||
22 | } |
||
23 | |||
24 | View Code Duplication | public function testBots() |
|
25 | { |
||
26 | $lines = file(__DIR__.'/crawlers.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); |
||
27 | |||
28 | foreach ($lines as $line) { |
||
29 | $test = $this->CrawlerDetect->isCrawler($line); |
||
30 | $this->assertEquals($test, true, $line); |
||
31 | } |
||
32 | } |
||
33 | |||
34 | View Code Duplication | public function testDevices() |
|
35 | { |
||
36 | $lines = file(__DIR__.'/devices.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); |
||
37 | |||
38 | foreach ($lines as $line) { |
||
39 | $test = $this->CrawlerDetect->isCrawler($line); |
||
40 | $this->assertEquals($test, false, $line); |
||
41 | } |
||
42 | } |
||
43 | |||
44 | public function testReturnsCorrectMatchedBotName() |
||
45 | { |
||
46 | $test = $this->CrawlerDetect->isCrawler('Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit (KHTML, like Gecko) Mobile (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html)'); |
||
47 | |||
48 | $matches = $this->CrawlerDetect->getMatches(); |
||
49 | |||
50 | $this->assertEquals($this->CrawlerDetect->getMatches(), 'Yahoo Ad monitoring', $matches); |
||
51 | } |
||
52 | |||
53 | public function testEmptyUserAgent() |
||
54 | { |
||
55 | $test = $this->CrawlerDetect->isCrawler(' '); |
||
56 | |||
57 | $this->assertEquals($test, false); |
||
58 | } |
||
59 | |||
60 | View Code Duplication | public function testCurrentVisitor() |
|
61 | { |
||
62 | $headers = (array) json_decode('{"DOCUMENT_ROOT":"\/home\/test\/public_html","GATEWAY_INTERFACE":"CGI\/1.1","HTTP_ACCEPT":"*\/*","HTTP_ACCEPT_ENCODING":"gzip, deflate","HTTP_CACHE_CONTROL":"no-cache","HTTP_CONNECTION":"Keep-Alive","HTTP_FROM":"bingbot(at)microsoft.com","HTTP_HOST":"www.test.com","HTTP_PRAGMA":"no-cache","HTTP_USER_AGENT":"Mozilla\/5.0 (compatible; bingbot\/2.0; +http:\/\/www.bing.com\/bingbot.htm)","PATH":"\/bin:\/usr\/bin","QUERY_STRING":"order=closingDate","REDIRECT_STATUS":"200","REMOTE_ADDR":"127.0.0.1","REMOTE_PORT":"3360","REQUEST_METHOD":"GET","REQUEST_URI":"\/?test=testing","SCRIPT_FILENAME":"\/home\/test\/public_html\/index.php","SCRIPT_NAME":"\/index.php","SERVER_ADDR":"127.0.0.1","SERVER_ADMIN":"[email protected]","SERVER_NAME":"www.test.com","SERVER_PORT":"80","SERVER_PROTOCOL":"HTTP\/1.1","SERVER_SIGNATURE":"","SERVER_SOFTWARE":"Apache","UNIQUE_ID":"Vx6MENRxerBUSDEQgFLAAAAAS","PHP_SELF":"\/index.php","REQUEST_TIME_FLOAT":1461619728.0705,"REQUEST_TIME":1461619728}'); |
||
63 | |||
64 | $cd = new CrawlerDetect($headers); |
||
65 | |||
66 | $this->assertEquals($cd->isCrawler(), true); |
||
67 | } |
||
68 | |||
69 | public function testUserAgentPassedViaConstructor() |
||
70 | { |
||
71 | $cd = new CrawlerDetect(null, 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit (KHTML, like Gecko) Mobile (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html)'); |
||
72 | |||
73 | $this->assertEquals($cd->isCrawler(), true); |
||
74 | } |
||
75 | |||
76 | View Code Duplication | public function testHttpFromHeader() |
|
77 | { |
||
78 | $headers = (array) json_decode('{"DOCUMENT_ROOT":"\/home\/test\/public_html","GATEWAY_INTERFACE":"CGI\/1.1","HTTP_ACCEPT":"*\/*","HTTP_ACCEPT_ENCODING":"gzip, deflate","HTTP_CACHE_CONTROL":"no-cache","HTTP_CONNECTION":"Keep-Alive","HTTP_FROM":"googlebot(at)googlebot.com","HTTP_HOST":"www.test.com","HTTP_PRAGMA":"no-cache","HTTP_USER_AGENT":"Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.71 Safari\/537.36","PATH":"\/bin:\/usr\/bin","QUERY_STRING":"order=closingDate","REDIRECT_STATUS":"200","REMOTE_ADDR":"127.0.0.1","REMOTE_PORT":"3360","REQUEST_METHOD":"GET","REQUEST_URI":"\/?test=testing","SCRIPT_FILENAME":"\/home\/test\/public_html\/index.php","SCRIPT_NAME":"\/index.php","SERVER_ADDR":"127.0.0.1","SERVER_ADMIN":"[email protected]","SERVER_NAME":"www.test.com","SERVER_PORT":"80","SERVER_PROTOCOL":"HTTP\/1.1","SERVER_SIGNATURE":"","SERVER_SOFTWARE":"Apache","UNIQUE_ID":"Vx6MENRxerBUSDEQgFLAAAAAS","PHP_SELF":"\/index.php","REQUEST_TIME_FLOAT":1461619728.0705,"REQUEST_TIME":1461619728}'); |
||
79 | |||
80 | $cd = new CrawlerDetect($headers); |
||
81 | |||
82 | $this->assertEquals($cd->isCrawler(), true); |
||
83 | } |
||
84 | |||
85 | public function testForRegexCollision() |
||
86 | { |
||
87 | $crawlers = new Crawlers(); |
||
88 | |||
89 | foreach ($crawlers->getAll() as $key1 => $regex) { |
||
90 | foreach ($crawlers->getAll() as $key2 => $compare) { |
||
91 | // Dont check this regex against itself |
||
92 | if ($key1 != $key2) { |
||
93 | preg_match('/'.$regex.'/i', stripslashes($compare), $matches); |
||
94 | |||
95 | $this->assertEmpty($matches, $regex.' collided with '.$compare); |
||
96 | } |
||
97 | } |
||
98 | } |
||
99 | } |
||
100 | } |
||
101 |
You can fix this by adding a namespace to your class:
When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.