diff options
author | mattab <matthieu.aubry@gmail.com> | 2014-02-04 04:04:30 +0400 |
---|---|---|
committer | mattab <matthieu.aubry@gmail.com> | 2014-02-04 04:04:30 +0400 |
commit | a6e4884d1069dc5f8f4eb4c43ee779115fd924c2 (patch) | |
tree | c622540128e3f561fba11f307aa20741108a9b4d | |
parent | 74c865d9db2be1f80465e42750a2a1e8fcfbce91 (diff) |
Fixes #4603 Adding lazy DB connection call
-rw-r--r-- | core/Tracker.php | 8 | ||||
m--------- | plugins/CustomAlerts | 0 | ||||
-rw-r--r-- | tests/PHPUnit/Integration/Core/Tracker/ActionTest.php | 2 | ||||
-rw-r--r-- | tests/PHPUnit/Integration/Core/TrackerTest.php | 38 | ||||
-rw-r--r-- | tests/PHPUnit/Integration/Core/TravisEnvironmentTest.php | 2 | ||||
m--------- | tests/PHPUnit/UI | 0 |
6 files changed, 38 insertions, 12 deletions
diff --git a/core/Tracker.php b/core/Tracker.php index d7e02da421..eef3543959 100644 --- a/core/Tracker.php +++ b/core/Tracker.php @@ -209,9 +209,10 @@ class Tracker $requestObj = new Request($request, $tokenAuth); $this->loadTrackerPlugins($requestObj); + // a Bulk Tracking request that is not authenticated should fail if (!$requestObj->isAuthenticated()) { - throw new Exception("token_auth specified does not have Admin permission for site " . intval($idSiteForAuthentication)); + throw new Exception(sprintf("token_auth specified does not have Admin permission for idsite=%s", $requestObj->getIdSite())); } $request = $requestObj; @@ -239,7 +240,6 @@ class Tracker if (!empty($this->requests)) { try { - self::connectDatabaseIfNotConnected(); foreach ($this->requests as $params) { $isAuthenticated = $this->trackRequest($params, $tokenAuth); } @@ -540,7 +540,7 @@ class Tracker return $db; } - public static function connectDatabaseIfNotConnected() + protected static function connectDatabaseIfNotConnected() { if (!is_null(self::$db)) { return; @@ -558,6 +558,7 @@ class Tracker */ public static function getDatabase() { + self::connectDatabaseIfNotConnected(); return self::$db; } @@ -748,7 +749,6 @@ class Tracker if (Common::getRequestVar('forceIpAnonymization', false, null, $args) == 1) { self::updateTrackerConfig('ip_address_mask_length', 2); - self::connectDatabaseIfNotConnected(); \Piwik\Plugins\PrivacyManager\IPAnonymizer::activate(); $forceIpAnonymization = true; diff --git a/plugins/CustomAlerts b/plugins/CustomAlerts -Subproject 61e2f1d17b5813e3ce4109da25d809c89054c6d +Subproject 277529fa331cf9ddddc94a6bce0774cabd0201e diff --git a/tests/PHPUnit/Integration/Core/Tracker/ActionTest.php b/tests/PHPUnit/Integration/Core/Tracker/ActionTest.php index fc32e388b5..ee58a1b655 100644 --- a/tests/PHPUnit/Integration/Core/Tracker/ActionTest.php +++ b/tests/PHPUnit/Integration/Core/Tracker/ActionTest.php @@ -33,8 +33,6 @@ class Core_Tracker_ActionTest extends DatabaseTestCase \Piwik\Plugin\Manager::getInstance()->loadPlugins(array('SitesManager')); Translate::loadEnglishTranslation(); - - \Piwik\Tracker::connectDatabaseIfNotConnected(); } protected function setUpRootAccess() diff --git a/tests/PHPUnit/Integration/Core/TrackerTest.php b/tests/PHPUnit/Integration/Core/TrackerTest.php index 52dbfabe28..97e9cdd294 100644 --- a/tests/PHPUnit/Integration/Core/TrackerTest.php +++ b/tests/PHPUnit/Integration/Core/TrackerTest.php @@ -11,23 +11,51 @@ */ class Core_TrackerTest extends DatabaseTestCase { + public function setUp() + { + parent::setUp(); + \Piwik\Piwik::setUserHasSuperUserAccess(true); + Test_Piwik_BaseFixture::createWebsite('2014-02-04'); + + } /** * Test the Bulk tracking API as documented in: http://developer.piwik.org/api-reference/tracking-api#bulk-tracking * * @throws Exception */ - public function test_trackingApiWithBulkRequests_viaCurl() + public function test_trackingApiWithBulkRequests_viaCurl_withWrongTokenAuth() { - $piwikHost = Test_Piwik_BaseFixture::getRootUrl() . 'piwik.php'; - $command = 'curl -X POST -d \'{"requests":["?idsite=1&url=http://example.org&action_name=Test bulk log Pageview&rec=1","?idsite=1&url=http://example.net/test.htm&action_name=Another bulk page view&rec=1"],"token_auth":"33dc3f2536d3025974cccb4b4d2d98f4"}\' ' . $piwikHost; + $token_auth = '33dc3f2536d3025974cccb4b4d2d98f4'; + $this->issueBulkTrackingRequest($token_auth, $expectTrackingToSucceed = false); + } + + public function test_trackingApiWithBulkRequests_viaCurl_withCorrectTokenAuth() + { + $token_auth = Test_Piwik_BaseFixture::getTokenAuth(); + \Piwik\Filesystem::deleteAllCacheOnUpdate(); + $this->issueBulkTrackingRequest($token_auth, $expectTrackingToSucceed = true); + } + + protected function issueBulkTrackingRequest($token_auth, $expectTrackingToSucceed) + { + $piwikHost = Test_Piwik_BaseFixture::getRootUrl() . 'tests/PHPUnit/proxy/piwik.php'; + + $command = 'curl -s -X POST -d \'{"requests":["?idsite=1&url=http://example.org&action_name=Test bulk log Pageview&rec=1","?idsite=1&url=http://example.net/test.htm&action_name=Another bulk page view&rec=1"],"token_auth":"' . $token_auth . '"}\' ' . $piwikHost; exec($command, $output, $result); $output = implode("", $output); if ($result !== 0) { throw new Exception("tracking bulk failed: " . implode("\n", $output) . "\n\ncommand used: $command"); } - $this->assertNotContains('error', $output); $this->assertStringStartsWith('{"status":', $output); - $this->assertContains('success', $output); + + if($expectTrackingToSucceed) { + $this->assertNotContains('error', $output); + $this->assertContains('success', $output); + } else { + $this->assertContains('error', $output); + $this->assertNotContains('success', $output); + } + } } diff --git a/tests/PHPUnit/Integration/Core/TravisEnvironmentTest.php b/tests/PHPUnit/Integration/Core/TravisEnvironmentTest.php index 609c7c7e97..e14dfedae3 100644 --- a/tests/PHPUnit/Integration/Core/TravisEnvironmentTest.php +++ b/tests/PHPUnit/Integration/Core/TravisEnvironmentTest.php @@ -7,7 +7,7 @@ use Piwik\Translate; * * @group Core */ -class TravisEnvironmentTest extends DatabaseTestCase +class Core_TravisEnvironmentTest extends DatabaseTestCase { /** * @group Core diff --git a/tests/PHPUnit/UI b/tests/PHPUnit/UI -Subproject d3d0d7c7fe9b0982c67be37504685ab56121613 +Subproject abd6aff5abe8582bf69a6afd2a7cdaf583a5529 |