diff --git a/core/Tracker/VisitExcluded.php b/core/Tracker/VisitExcluded.php index 288e0b89b3e3b0e6534ee9568a0468339427c8eb..233bb289ed16457a66e8fdf13fa7d1ae4395f09d 100644 --- a/core/Tracker/VisitExcluded.php +++ b/core/Tracker/VisitExcluded.php @@ -14,11 +14,19 @@ */ class Piwik_Tracker_VisitExcluded { - public function __construct(Piwik_Tracker_Request $request, $ip) + public function __construct(Piwik_Tracker_Request $request, $ip = false, $userAgent = false) { + if ($ip === false) { + $ip = $request->getIp(); + } + + if ($userAgent === false) { + $userAgent = $request->getUserAgent(); + } + $this->request = $request; $this->idSite = $request->getIdSite(); - $this->userAgent = $request->getUserAgent(); + $this->userAgent = $userAgent; $this->ip = $ip; } diff --git a/tests/PHPUnit/Core/Tracker/VisitTest.php b/tests/PHPUnit/Core/Tracker/VisitTest.php index 0a262b9fc6bdb3112dbff3568a40ba74cd09e109..82bbf78e6fb4fd2f72cb253df7b3659c98ac095d 100644 --- a/tests/PHPUnit/Core/Tracker/VisitTest.php +++ b/tests/PHPUnit/Core/Tracker/VisitTest.php @@ -69,15 +69,17 @@ class Tracker_VisitTest extends DatabaseTestCase */ public function testIsVisitorIpExcluded($excludedIp, $tests) { - $visit = new Test_Piwik_TrackerVisit_public(); $idsite = Piwik_SitesManager_API::getInstance()->addSite("name", "http://piwik.net/", $ecommerce = 0, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, $excludedIp); - $visit->setRequest(array('idsite' => $idsite)); + + $request = new Piwik_Tracker_Request(array('idsite' => $idsite)); // test that IPs within the range, or the given IP, are excluded foreach ($tests as $ip => $expected) { $testIpIsExcluded = Piwik_IP::P2N($ip); - $this->assertSame($expected, $visit->public_isVisitorIpExcluded($testIpIsExcluded)); + + $excluded = new Test_Piwik_Tracker_VisitExcluded_public($request, $testIpIsExcluded); + $this->assertSame($expected, $excluded->public_isVisitorIpExcluded($testIpIsExcluded)); } } @@ -116,21 +118,23 @@ class Tracker_VisitTest extends DatabaseTestCase { Piwik_SitesManager_API::getInstance()->setSiteSpecificUserAgentExcludeEnabled(true); - $visit = new Test_Piwik_TrackerVisit_public(); $idsite = Piwik_SitesManager_API::getInstance()->addSite("name", "http://piwik.net/", $ecommerce = 0, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, $excludedIp = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $group = null, $startDate = null, $excludedUserAgent); - $visit->setRequest(array('idsite' => $idsite)); + $request = new Piwik_Tracker_Request(array('idsite' => $idsite)); + // test that user agents that contain excluded user agent strings are excluded foreach ($tests as $ua => $expected) { - $this->assertSame($expected, $visit->public_isUserAgentExcluded($ua), "Result if isUserAgentExcluded('$ua') was not " . ($expected ? 'true' : 'false') . "."); + $excluded = new Test_Piwik_Tracker_VisitExcluded_public($request, $ip = false, $ua); + + $this->assertSame($expected, $excluded->public_isUserAgentExcluded($ua), "Result if isUserAgentExcluded('$ua') was not " . ($expected ? 'true' : 'false') . "."); } } } -class Test_Piwik_TrackerVisit_public extends Piwik_Tracker_Visit +class Test_Piwik_Tracker_VisitExcluded_public extends Piwik_Tracker_VisitExcluded { public function public_isVisitorIpExcluded($ip) {