Completed
Push — master ( 1f2836...52bb47 )
by Mark
10s
created

tests/UATests.php (1 issue)

Check for unnecessary variable assignments.

Unused Code Major

Upgrade to new PHP Analysis Engine

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
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)');
0 ignored issues
show
$test is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
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]st.com","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