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:
authormattab <matthieu.aubry@gmail.com>2014-02-04 04:04:30 +0400
committermattab <matthieu.aubry@gmail.com>2014-02-04 04:04:30 +0400
commita6e4884d1069dc5f8f4eb4c43ee779115fd924c2 (patch)
treec622540128e3f561fba11f307aa20741108a9b4d
parent74c865d9db2be1f80465e42750a2a1e8fcfbce91 (diff)
Fixes #4603 Adding lazy DB connection call
-rw-r--r--core/Tracker.php8
m---------plugins/CustomAlerts0
-rw-r--r--tests/PHPUnit/Integration/Core/Tracker/ActionTest.php2
-rw-r--r--tests/PHPUnit/Integration/Core/TrackerTest.php38
-rw-r--r--tests/PHPUnit/Integration/Core/TravisEnvironmentTest.php2
m---------tests/PHPUnit/UI0
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