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

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'tests/core/Tracker/Action.test.php')
-rw-r--r--tests/core/Tracker/Action.test.php131
1 files changed, 125 insertions, 6 deletions
diff --git a/tests/core/Tracker/Action.test.php b/tests/core/Tracker/Action.test.php
index 2cc1fba216..bc2492d6b3 100644
--- a/tests/core/Tracker/Action.test.php
+++ b/tests/core/Tracker/Action.test.php
@@ -9,14 +9,133 @@ if(!defined('PIWIK_CONFIG_TEST_INCLUDED'))
require_once 'Tracker/Action.php';
require_once 'Tracker/Config.php';
-class Test_Piwik_TrackerAction extends UnitTestCase
+require_once "Database.test.php";
+
+class Test_Piwik_TrackerAction extends Test_Database
{
+ function setUp()
+ {
+ $GLOBALS['PIWIK_TRACKER_MODE'] = true;
+ parent::setUp();
+ $userFile = PIWIK_PATH_TEST_TO_ROOT . '/tests/resources/Tracker/Action.config.ini.php';
+ $config = Piwik_Tracker_Config::getInstance();
+ $config->init($userFile);
+ }
+
+ function tearDown()
+ {
+ $GLOBALS['PIWIK_TRACKER_MODE'] = false;
+ }
+
+ protected function setUpRootAccess()
+ {
+ $pseudoMockAccess = new FakeAccess;
+ FakeAccess::$superUser = true;
+ Zend_Registry::set('access', $pseudoMockAccess);
+ }
+
+ protected function getTestUrls()
+ {
+ $urls = array(
+ // a wrongly formatted url (parse_url returns false)
+ 'http:////wrongurl',
+
+ // a URL with all components
+ 'http://username:password@hostname:80/path?phpSESSID=value#anchor',
+
+ // a standard url
+ 'http://a.com/index?p1=v1',
+
+ // testing with capital parameter
+ 'http://a.com/index?p1=v1&P2=v2&p3=v3',
+
+ // testing with extra &&
+ 'http://a.com/index?p1=v1&&p2=v2&p3=v3&p4=v4&&',
+ );
+
+ return $urls;
+ }
+
+ /*
+ * No excluded query parameters specified, appart from the standard "session" parameters, always excluded
+ */
+ function test_excludeQueryParameters_none()
+ {
+ $excludedQueryParameters = '';
+ $this->setUpRootAccess();
+ $idsite = Piwik_SitesManager_API::getInstance()->addSite("site1",array('http://example.org'), $excludedIps = '', $excludedQueryParameters);
+ $urls = $this->getTestUrls();
+ foreach($urls as $url)
+ {
+ $expectedUrl = $url;
+ if($url=='http://username:password@hostname:80/path?phpSESSID=value#anchor')
+ {
+ $expectedUrl = 'http://username:password@hostname:80/path#anchor';
+ }
+
+ // the extra & are automatically cleaned up
+ if($url=='http://a.com/index?p1=v1&&p2=v2&p3=v3&p4=v4&&')
+ {
+ $expectedUrl = 'http://a.com/index?p1=v1&p2=v2&p3=v3&p4=v4';
+ }
+ $this->assertEqual($expectedUrl, Piwik_Tracker_Action::excludeQueryParametersFromUrl($url, $idsite));
+ }
+ }
+
+ /*
+ * Testing with some website specific parameters excluded
+ */
+ function test_excludeQueryParameters_siteExcluded()
+ {
+ $excludedQueryParameters = 'p4, p2';
+ $expectedUrls = array(
+ 'http:////wrongurl',
+ 'http://username:password@hostname:80/path#anchor',
+ 'http://a.com/index?p1=v1',
+ 'http://a.com/index?p1=v1&p3=v3',
+ 'http://a.com/index?p1=v1&p3=v3',
+ );
+ $this->setUpRootAccess();
+ $idsite = Piwik_SitesManager_API::getInstance()->addSite("site1",array('http://example.org'), $excludedIps = '', $excludedQueryParameters);
+ $urls = $this->getTestUrls();
+ $filteredUrls = array();
+ foreach($urls as $url)
+ {
+ $filteredUrls[] = Piwik_Tracker_Action::excludeQueryParametersFromUrl($url, $idsite);
+ }
+ $this->assertEqual($expectedUrls, $filteredUrls);
+ }
+
+ /*
+ * Testing with some website specific and some global excluded query parameters
+ */
+ function test_excludeQueryParameters_siteAndGlobalExcluded()
+ {
+ // testing also that query parameters are case insensitive
+ $excludedQueryParameters = 'P2';
+ $excludedGlobalParameters = 'blabla, P4';
+ $expectedUrls = array(
+ 'http:////wrongurl',
+ 'http://username:password@hostname:80/path#anchor',
+ 'http://a.com/index?p1=v1',
+ 'http://a.com/index?p1=v1&p3=v3',
+ 'http://a.com/index?p1=v1&p3=v3',
+ );
+ $this->setUpRootAccess();
+ $idsite = Piwik_SitesManager_API::getInstance()->addSite("site1",array('http://example.org'), $excludedIps = '', $excludedQueryParameters);
+ Piwik_SitesManager_API::getInstance()->setGlobalExcludedQueryParameters($excludedGlobalParameters);
+ $urls = $this->getTestUrls();
+ $filteredUrls = array();
+ foreach($urls as $url)
+ {
+ $filteredUrls[] = Piwik_Tracker_Action::excludeQueryParametersFromUrl($url, $idsite);
+ }
+ $this->assertEqual($expectedUrls, $filteredUrls);
+ }
+
+
function test_extractUrlAndActionNameFromRequest()
{
- $userFile = PIWIK_PATH_TEST_TO_ROOT . '/tests/resources/Tracker/Action.config.ini.php';
- $config = Piwik_Tracker_Config::getInstance();
- $config->init($userFile);
-
$action = new Test_Piwik_TrackerAction_extractUrlAndActionNameFromRequest();
$tests = array(
@@ -103,7 +222,7 @@ class Test_Piwik_TrackerAction extends UnitTestCase
// empty request
array(
'request' => array(),
- 'expected' => array( 'name' => null, 'url' => '/',
+ 'expected' => array( 'name' => null, 'url' => '',
'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
),
array(