Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ReferersTest.php « Plugins « PHPUnit « tests - github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: e6af334cb304fb403b35c6d9f75747ea76d7c7e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<?php
/**
 * Piwik - Open source web analytics
 *
 * @link http://piwik.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 */
require_once 'Referers/Referers.php';

class ReferersTest extends PHPUnit_Framework_TestCase
{
    /**
     * Dataprovider serving all search engine data
     */
    public function getSearchEngines()
    {
        include PIWIK_PATH_TEST_TO_ROOT . '/core/DataFiles/SearchEngines.php';

        $searchEngines = array();
        foreach ($GLOBALS['Piwik_SearchEngines'] AS $url => $searchEngine) {
            $searchEngines[] = array($url, $searchEngine);
        }
        return $searchEngines;
    }

    /**
     * search engine has at least one keyword
     *
     * @group Plugins
     * @group Referers
     * @dataProvider getSearchEngines
     */
    public function testMissingSearchEngineKeyword($url, $searchEngine)
    {
        // Get list of search engines and first appearing URL
        static $searchEngines = array();

        $name = parse_url('http://' . $url);
        if (!array_key_exists($searchEngine[0], $searchEngines)) {
            $searchEngines[$searchEngine[0]] = $url;

            $this->assertTrue(!empty($searchEngine[1]), $name['host']);
        }
    }

    /**
     * search engine is defined in DataFiles/SearchEngines.php but there's no favicon
     *
     * @group Plugins
     * @group Referers
     * @dataProvider getSearchEngines
     */
    public function testMissingSearchEngineIcons($url, $searchEngine)
    {
        // Get list of existing favicons
        $favicons = scandir(PIWIK_PATH_TEST_TO_ROOT . '/plugins/Referers/images/searchEngines/');

        // Get list of search engines and first appearing URL
        static $searchEngines = array();

        $name = parse_url('http://' . $url);
        if (!array_key_exists($searchEngine[0], $searchEngines)) {
            $searchEngines[$searchEngine[0]] = $url;

            $this->assertTrue(in_array($name['host'] . '.png', $favicons), $name['host']);
        }
    }

    /**
     * favicon exists but there's no corresponding search engine defined in DataFiles/SearchEngines.php
     *
     * @group Plugins
     * @group Referers
     */
    public function testObsoleteSearchEngineIcons()
    {
        include PIWIK_PATH_TEST_TO_ROOT . '/core/DataFiles/SearchEngines.php';

        // Get list of search engines and first appearing URL
        $searchEngines = array();
        foreach ($GLOBALS['Piwik_SearchEngines'] as $url => $searchEngine) {
            $name = parse_url('http://' . $url);
            if (!array_key_exists($name['host'], $searchEngines)) {
                $searchEngines[$name['host']] = true;
            }
        }

        // Get list of existing favicons
        $favicons = scandir(PIWIK_PATH_TEST_TO_ROOT . '/plugins/Referers/images/searchEngines/');
        foreach ($favicons as $name) {
            if ($name[0] == '.' || strpos($name, 'xx.') === 0) {
                continue;
            }

            $host = substr($name, 0, -4);
            $this->assertTrue(array_key_exists($host, $searchEngines), $host);
        }
    }

    /**
     * get search engine host from url
     *
     * @group Plugins
     * @group Referers
     */
    public function testGetSearchEngineHostFromUrl()
    {
        $data = array(
            'http://www.google.com/cse' => array('www.google.com', 'www.google.com/cse'),
            'http://www.google.com'     => array('www.google.com', 'www.google.com'),
        );

        foreach ($data as $url => $expected) {
            $this->assertEquals($expected[0], \Piwik\Plugins\Referers\getSearchEngineHostFromUrl($url));
            $this->assertEquals($expected[1], \Piwik\Plugins\Referers\getSearchEngineHostPathFromUrl($url));
        }
    }

    /**
     * Dataprovider for testGetSearchEngineUrlFromUrlAndKeyword
     */
    public function getSearchEngineUrlFromUrlAndKeywordTestData()
    {
        return array(
            array('http://apollo.lv/portal/search/', 'piwik', 'http://apollo.lv/portal/search/?cof=FORID%3A11&q=piwik&search_where=www'),
            array('http://bing.com/images/search', 'piwik', 'http://bing.com/images/search/?q=piwik'),
            array('http://google.com', 'piwik', 'http://google.com/search?q=piwik'),
        );
    }

    /**
     * get search engine url from name and keyword
     *
     * @group Plugins
     * @group Referers
     * @dataProvider getSearchEngineUrlFromUrlAndKeywordTestData
     */
    public function testGetSearchEngineUrlFromUrlAndKeyword($url, $keyword, $expected)
    {
        include PIWIK_PATH_TEST_TO_ROOT . '/core/DataFiles/SearchEngines.php';
        $this->assertEquals($expected, \Piwik\Plugins\Referers\getSearchEngineUrlFromUrlAndKeyword($url, $keyword));
    }
}