Newer
Older
Benaka Moorthi
a validé
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
Benaka Moorthi
a validé
namespace Piwik\Tests\Framework;
use Piwik\Plugin\Manager as PluginManager;
use Exception;
use Piwik\Container\StaticContainer;
use Piwik\Tests\Framework\TestingEnvironment\MakeGlobalSettingsWithFile;
use Piwik\Piwik;
use Piwik\Application\Environment;
diosmosis
a validé
class Piwik_MockAccess
{
private $access;
public function __construct($access)
{
$this->access = $access;
Thomas Steur
a validé
$access->setSuperUserAccess(true);
}
public function __call($name, $arguments)
{
return call_user_func_array(array($this->access, $name), $arguments);
}
public function reloadAccess($auth = null)
{
return true;
}
public function getLogin()
{
return 'superUserLogin';
}
}
Benaka Moorthi
a validé
/**
* Sets the test environment.
*/
class TestingEnvironment
Benaka Moorthi
a validé
{
private $behaviorOverrideProperties = array();
public function __construct()
{
$overridePath = PIWIK_INCLUDE_PATH . '/tmp/testingPathOverride.json';
if (file_exists($overridePath)) {
$this->behaviorOverrideProperties = json_decode(file_get_contents($overridePath), true);
}
}
public function __get($key)
{
return isset($this->behaviorOverrideProperties[$key]) ? $this->behaviorOverrideProperties[$key] : null;
}
public function __set($key, $value)
{
$this->behaviorOverrideProperties[$key] = $value;
}
public function __isset($name)
{
return isset($this->behaviorOverrideProperties[$name]);
}
public function save()
{
$overridePath = PIWIK_INCLUDE_PATH . '/tmp/testingPathOverride.json';
file_put_contents($overridePath, json_encode($this->behaviorOverrideProperties));
}
public function delete()
{
$this->behaviorOverrideProperties = array();
$this->save();
}
diosmosis
a validé
public function logVariables()
{
if (isset($_SERVER['QUERY_STRING'])
&& !$this->dontUseTestConfig
) {
@\Piwik\Log::debug("Test Environment Variables for (%s):\n%s", $_SERVER['QUERY_STRING'], print_r($this->behaviorOverrideProperties, true));
diosmosis
a validé
}
public function getCoreAndSupportedPlugins()
{
$settings = new \Piwik\Application\Kernel\GlobalSettingsProvider();
diosmosis
a validé
$pluginManager = new PluginManager(new \Piwik\Application\Kernel\PluginList($settings));
$disabledPlugins = $pluginManager->getCorePluginsDisabledByDefault();
$disabledPlugins[] = 'LoginHttpAuth';
$disabledPlugins[] = 'ExampleVisualization';
$disabledPlugins = array_diff($disabledPlugins, array(
'DBStats', 'ExampleUI', 'ExampleCommand', 'ExampleSettingsPlugin'
));
$plugins = array_filter($pluginManager->readPluginsDirectory(), function ($pluginName) use ($disabledPlugins, $pluginManager) {
return $pluginManager->isPluginBundledWithCore($pluginName)
|| $pluginManager->isPluginOfficialAndNotBundledWithCore($pluginName);
sort($plugins);
return $plugins;
public static function addHooks($globalObservers = array())
Benaka Moorthi
a validé
{
$testingEnvironment = new TestingEnvironment();
if ($testingEnvironment->queryParamOverride) {
foreach ($testingEnvironment->queryParamOverride as $key => $value) {
$_GET[$key] = $value;
}
}
if ($testingEnvironment->globalsOverride) {
foreach ($testingEnvironment->globalsOverride as $key => $value) {
$GLOBALS[$key] = $value;
}
}
if ($testingEnvironment->hostOverride) {
\Piwik\Url::setHost($testingEnvironment->hostOverride);
}
if ($testingEnvironment->useXhprof) {
\Piwik\Profiler::setupProfilerXHProf($mainRun = false, $setupDuringTracking = true);
}
// Apply DI config from the fixture
$diConfig = array();
if ($testingEnvironment->fixtureClass) {
$fixtureClass = $testingEnvironment->fixtureClass;
if (class_exists($fixtureClass)) {
/** @var Fixture $fixture */
$fixture = new $fixtureClass;
$diConfig = $fixture->provideContainerConfig();
}
}
if ($testingEnvironment->testCaseClass) {
$testCaseClass = $testingEnvironment->testCaseClass;
if (class_exists($testCaseClass)) {
$testCase = new $testCaseClass();
if (method_exists($testCase, 'provideContainerConfigBeforeClass')) {
$diConfig = array_merge($diConfig, $testCaseClass::provideContainerConfigBeforeClass());
}
if (method_exists($testCase, 'provideContainerConfig')) {
$diConfig = array_merge($diConfig, $testCase->provideContainerConfig());
\Piwik\Cache\Backend\File::$invalidateOpCacheBeforeRead = true;
Environment::addEnvironmentManipulator(new MakeGlobalSettingsWithFile($testingEnvironment));
$diConfig['observers.global'] = \DI\add($globalObservers);
StaticContainer::addDefinitions($diConfig);
}
/**
* for plugins that need to inject special testing logic
*/
public function executeSetupTestEnvHook()
{
Piwik::postEvent("TestingEnvironment.addHooks", array($this), $pending = true);
Benaka Moorthi
a validé
}