public function getExtraDefinitions()
 {
     $testVarDefinitionSource = new TestingEnvironmentVariablesDefinitionSource($this->vars);
     $diConfigs = array($testVarDefinitionSource);
     if ($this->vars->testCaseClass) {
         $testCaseClass = $this->vars->testCaseClass;
         if (class_exists($testCaseClass)) {
             $testCase = new $testCaseClass();
             // Apply DI config from the fixture
             if (isset($testCaseClass::$fixture)) {
                 $diConfigs[] = $testCaseClass::$fixture->provideContainerConfig();
             }
             if (method_exists($testCaseClass, 'provideContainerConfigBeforeClass')) {
                 $diConfigs[] = $testCaseClass::provideContainerConfigBeforeClass();
             }
             if (method_exists($testCase, 'provideContainerConfig')) {
                 $diConfigs[] = $testCase->provideContainerConfig();
             }
         }
     } else {
         if ($this->vars->fixtureClass) {
             $fixtureClass = $this->vars->fixtureClass;
             if (class_exists($fixtureClass)) {
                 $fixture = new $fixtureClass();
                 if (method_exists($fixture, 'provideContainerConfig')) {
                     $diConfigs[] = $fixture->provideContainerConfig();
                 }
             }
         }
     }
     $plugins = $this->getPluginsToLoadDuringTest();
     $diConfigs[] = array('observers.global' => \DI\add($this->globalObservers), 'Piwik\\Config' => \DI\decorate(function (Config $config, ContainerInterface $c) use($plugins) {
         /** @var PluginList $pluginList */
         $pluginList = $c->get('Piwik\\Application\\Kernel\\PluginList');
         $plugins = $pluginList->sortPlugins($plugins);
         // set the plugins to load, has to be done to Config, since Config will reload files on construction.
         // TODO: probably shouldn't need to do this, will wait until 3.0 to remove.
         $config->Plugins['Plugins'] = $plugins;
         return $config;
     }));
     return $diConfigs;
 }
예제 #2
0
파일: ui-test.php 프로젝트: piwik/piwik
<?php

use Piwik\Container\StaticContainer;
return array('tests.ui.url_normalizer_blacklist.api' => array(), 'tests.ui.url_normalizer_blacklist.controller' => array(), 'Piwik\\Config' => \DI\decorate(function (\Piwik\Config $config) {
    $config->General['cors_domains'][] = '*';
    $config->General['trusted_hosts'][] = $config->tests['http_host'];
    $config->General['trusted_hosts'][] = $config->tests['http_host'] . ':' . $config->tests['port'];
    return $config;
}), 'observers.global' => \DI\add(array(array('Request.dispatch.end', function (&$result) {
    $request = $_GET + $_POST;
    $apiblacklist = StaticContainer::get('tests.ui.url_normalizer_blacklist.api');
    if (!empty($request['method']) && in_array($request['method'], $apiblacklist)) {
        return;
    }
    $controllerActionblacklist = StaticContainer::get('tests.ui.url_normalizer_blacklist.controller');
    if (!empty($request['module']) && !empty($request['action'])) {
        $controllerAction = $request['module'] . '.' . $request['action'];
        if (in_array($controllerAction, $controllerActionblacklist)) {
            return;
        }
    }
    $config = \Piwik\Config::getInstance();
    $host = $config->tests['http_host'];
    $port = $config->tests['port'];
    if (!empty($port)) {
        // remove the port from URLs if any so UI tests won't fail if the port isn't 80
        $result = str_replace($host . ':' . $port, $host, $result);
    }
    // remove PIWIK_INCLUDE_PATH from result so tests don't change based on the machine used
    $result = str_replace(realpath(PIWIK_INCLUDE_PATH), '', $result);
}), array('Controller.RssWidget.rssPiwik.end', function (&$result, $parameters) {
예제 #3
0
파일: test.php 프로젝트: piwik/piwik
}), 'Piwik\\Plugins\\Marketplace\\Api\\Service' => DI\decorate(function ($previous, ContainerInterface $c) {
    if (!$c->get('test.vars.mockMarketplaceApiService')) {
        return $previous;
    }
    // for ui tests
    $service = new MockService();
    $key = new LicenseKey();
    $accessToken = $key->get();
    $service->authenticate($accessToken);
    function removeReviewsUrl($content)
    {
        $content = json_decode($content, true);
        if (!empty($content['shop']['reviews']['embedUrl'])) {
            $content['shop']['reviews']['embedUrl'] = '';
        }
        return json_encode($content);
    }
    $isExceededUser = $c->get('test.vars.consumer') === 'exceededLicense';
    $isExpiredUser = $c->get('test.vars.consumer') === 'expiredLicense';
    $isValidUser = $c->get('test.vars.consumer') === 'validLicense';
    $service->setOnDownloadCallback(function ($action, $params) use($service, $isExceededUser, $isValidUser, $isExpiredUser) {
        if ($action === 'info') {
            return $service->getFixtureContent('v2.0_info.json');
        } elseif ($action === 'consumer' && $service->getAccessToken() === 'valid') {
            return $service->getFixtureContent('v2.0_consumer-access_token-consumer2_paid1.json');
        } elseif ($action === 'consumer/validate' && $service->getAccessToken() === 'valid') {
            return $service->getFixtureContent('v2.0_consumer_validate-access_token-consumer2_paid1.json');
        } elseif ($action === 'consumer' && $service->getAccessToken() === 'invalid') {
            return $service->getFixtureContent('v2.0_consumer-access_token-notexistingtoken.json');
        } elseif ($action === 'consumer/validate' && $service->getAccessToken() === 'invalid') {
            return $service->getFixtureContent('v2.0_consumer_validate-access_token-notexistingtoken.json');
        } elseif ($action === 'plugins' && empty($params['purchase_type']) && empty($params['query'])) {
            return $service->getFixtureContent('v2.0_plugins.json');
        } elseif ($action === 'plugins' && $isExceededUser && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID && empty($params['query'])) {
            return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json');
        } elseif ($action === 'plugins' && $isExpiredUser && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID && empty($params['query'])) {
            return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-access_token-consumer1_paid2_custom1.json');
        } elseif ($action === 'plugins' && ($service->hasAccessToken() || $isValidUser) && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID && empty($params['query'])) {
            return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-access_token-consumer2_paid1.json');
        } elseif ($action === 'plugins' && !$service->hasAccessToken() && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID && empty($params['query'])) {
            return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-access_token-notexistingtoken.json');
        } elseif ($action === 'themes' && empty($params['purchase_type']) && empty($params['query'])) {
            return $service->getFixtureContent('v2.0_themes.json');
        } elseif ($action === 'plugins/Barometer/info') {
            return $service->getFixtureContent('v2.0_plugins_Barometer_info.json');
        } elseif ($action === 'plugins/TreemapVisualization/info') {
            return $service->getFixtureContent('v2.0_plugins_TreemapVisualization_info.json');
        } elseif ($action === 'plugins/PaidPlugin1/info' && $service->hasAccessToken() && $isExceededUser) {
            $content = $service->getFixtureContent('v2.0_plugins_PaidPlugin1_info-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json');
            return removeReviewsUrl($content);
        } elseif ($action === 'plugins/PaidPlugin1/info' && $service->hasAccessToken()) {
            $content = $service->getFixtureContent('v2.0_plugins_PaidPlugin1_info-access_token-consumer3_paid1_custom2.json');
            return removeReviewsUrl($content);
        } elseif ($action === 'plugins/PaidPlugin1/info' && !$service->hasAccessToken()) {
            $content = $service->getFixtureContent('v2.0_plugins_PaidPlugin1_info.json');
            return removeReviewsUrl($content);
        } elseif ($action === 'plugins/checkUpdates') {
            return $service->getFixtureContent('v2.0_plugins_checkUpdates-pluginspluginsnameAnonymousPi.json');
        }
    });
    return $service;
}));
예제 #4
0
<?php

return array('Piwik\\Plugins\\QueuedTracking\\Settings' => DI\decorate(function (\Piwik\Plugins\QueuedTracking\Settings $settings) {
    if ($settings->redisHost->isWritableByCurrentUser()) {
        $settings->redisHost->setValue('127.0.0.1');
        $settings->redisPort->setValue(6379);
        $settings->redisPassword->setValue('');
        $settings->redisDatabase->setValue(15);
        $settings->numQueueWorkers->setValue(4);
    }
    return $settings;
}));
예제 #5
0
파일: di.php 프로젝트: nitheeshp/bookshelf
<?php

return ['event_manager' => \DI\decorate(function ($eventManager, $container) {
    $eventManager->attach('ERROR_DISPATCH', [$container->get(\ClassicApp\EventListener\DispatcherExceptionListener::class), 'onError']);
    $eventManager->attach('*', [$container->get(\ClassicApp\EventListener\ExceptionListener::class), 'onError']);
    return $eventManager;
}), \ClassicApp\EventListener\ExceptionListener::class => \DI\object(\ClassicApp\EventListener\ExceptionListener::class)->constructor(\DI\get('template')), \ClassicApp\EventListener\DispatcherExceptionListener::class => \DI\object(\ClassicApp\EventListener\DispatcherExceptionListener::class)->constructor(\DI\get('template')), 'dispatcher' => \DI\factory(function (\DI\Container $c) {
    $dispatcher = new \ClassicApp\Dispatcher\SymfonyDispatcher($c->get('router'));
    return $dispatcher;
}), 'session' => \DI\factory(function (\DI\Container $c) {
    $session = new \Symfony\Component\HttpFoundation\Session\Session();
    $session->start();
    return $session;
}), 'translator' => \DI\factory(function () {
    $translator = new \Symfony\Component\Translation\Translator('en_US', new \Symfony\Component\Translation\MessageSelector());
    $translator->addLoader('php', new \Symfony\Component\Translation\Loader\PhpFileLoader());
    $translator->addResource('php', './app/Resources/translator/en_US.php', 'en_US');
    $translator->addResource('php', './app/Resources/translator/it_IT.php', 'it_IT');
    return $translator;
}), 'template' => \DI\factory(function (\DI\Container $c) {
    $twigBridgeViews = __DIR__ . '/../vendor/symfony/twig-bridge/Resources/views/Form';
    $loader = new Twig_Loader_Filesystem([$twigBridgeViews, './app/Resources/view']);
    $twig = new Twig_Environment($loader, $c->get('parameters')['twig']['loader_options']);
    $twig->addGlobal('show_exception_backtrace', $c->get('parameters')['twig']['show_exception_backtrace']);
    $twig->addGlobal('session', $c->get('session'));
    $formEngine = new \Symfony\Bridge\Twig\Form\TwigRendererEngine(['bootstrap_3_layout.html.twig']);
    $formEngine->setEnvironment($twig);
    $formExt = new \Symfony\Bridge\Twig\Extension\FormExtension(new \Symfony\Bridge\Twig\Form\TwigRenderer($formEngine));
    $twig->addExtension($formExt);
    $transExt = new \Symfony\Bridge\Twig\Extension\TranslationExtension($c->get('translator'));
    $twig->addExtension($transExt);
예제 #6
0
<?php

return ['event_manager' => \DI\decorate(function ($eventManager, $container) {
    $eventManager->attach("ERROR_DISPATCH", [$container->get(\ClassicApp\EventListener\DispatcherExceptionListener::class), "onError"]);
    $eventManager->attach("*_error", [$container->get(\ClassicApp\EventListener\ExceptionListener::class), "onError"]);
    return $eventManager;
}), \ClassicApp\EventListener\ExceptionListener::class => \DI\object(\ClassicApp\EventListener\ExceptionListener::class)->constructor(\DI\get("template")), \ClassicApp\EventListener\DispatcherExceptionListener::class => \DI\object(\ClassicApp\EventListener\DispatcherExceptionListener::class)->constructor(\DI\get("template")), 'template' => \DI\object(\League\Plates\Engine::class)->constructor('./app/view/'), 'router' => function () {
    return \FastRoute\simpleDispatcher(function (\FastRoute\RouteCollector $r) {
        $r->addRoute('GET', '/', ['ClassicApp\\Controller\\IndexController', 'index']);
    });
}];
예제 #7
0
    }
}), 'Piwik\\Config' => DI\decorate(function ($previous, ContainerInterface $c) {
    $testingEnvironment = $c->get('Piwik\\Tests\\Framework\\TestingEnvironmentVariables');
    $dontUseTestConfig = $c->get('test.vars.dontUseTestConfig');
    if (!$dontUseTestConfig) {
        $settingsProvider = $c->get('Piwik\\Application\\Kernel\\GlobalSettingsProvider');
        return new TestConfig($settingsProvider, $testingEnvironment, $allowSave = false, $doSetTestEnvironment = true);
    } else {
        return $previous;
    }
}), 'Piwik\\Access' => DI\decorate(function ($previous, ContainerInterface $c) {
    $testUseMockAuth = $c->get('test.vars.testUseMockAuth');
    if ($testUseMockAuth) {
        $access = new FakeAccess();
        FakeAccess::$superUser = true;
        FakeAccess::$superUserLogin = '******';
        return $access;
    } else {
        return $previous;
    }
}), 'observers.global' => DI\add(array(array('AssetManager.getStylesheetFiles', function (&$stylesheets) {
    $useOverrideCss = \Piwik\Container\StaticContainer::get('test.vars.useOverrideCss');
    if ($useOverrideCss) {
        $stylesheets[] = 'tests/resources/screenshot-override/override.css';
    }
}), array('AssetManager.getJavaScriptFiles', function (&$jsFiles) {
    $useOverrideJs = \Piwik\Container\StaticContainer::get('test.vars.useOverrideJs');
    if ($useOverrideJs) {
        $jsFiles[] = 'tests/resources/screenshot-override/override.js';
    }
}), array('Updater.checkForUpdates', function () {
예제 #8
0
파일: test.php 프로젝트: diosmosis/piwik
        return new TestConfig($settingsProvider, $testingEnvironment, $allowSave = false, $doSetTestEnvironment = true);
    } else {
        return $previous;
    }
}), 'Piwik\\Access' => DI\decorate(function ($previous, ContainerInterface $c) {
    $testUseMockAuth = $c->get('test.vars.testUseMockAuth');
    if ($testUseMockAuth) {
        $idSitesAdmin = $c->get('test.vars.idSitesAdminAccess');
        $idSitesView = $c->get('test.vars.idSitesViewAccess');
        $access = new FakeAccess();
        if (!empty($idSitesView)) {
            FakeAccess::$superUser = false;
            FakeAccess::$idSitesView = $idSitesView;
            FakeAccess::$idSitesAdmin = !empty($idSitesAdmin) ? $idSitesAdmin : array();
            FakeAccess::$identity = 'viewUserLogin';
        } elseif (!empty($idSitesAdmin)) {
            FakeAccess::$superUser = false;
            FakeAccess::$idSitesAdmin = $idSitesAdmin;
            FakeAccess::$identity = 'adminUserLogin';
        } else {
            FakeAccess::$superUser = true;
            FakeAccess::$superUserLogin = '******';
        }
        return $access;
    } else {
        return $previous;
    }
}), 'observers.global' => DI\add(array(array('AssetManager.getStylesheetFiles', function (&$stylesheets) {
    $useOverrideCss = \Piwik\Container\StaticContainer::get('test.vars.useOverrideCss');
    if ($useOverrideCss) {
        $stylesheets[] = 'tests/resources/screenshot-override/override.css';
    }
예제 #9
0
<?php

use Interop\Container\ContainerInterface;
function isTrackerDebugEnabled(ContainerInterface $c)
{
    $trackerDebug = $c->get("ini.Tracker.debug");
    return $trackerDebug == 1 || !empty($GLOBALS['PIWIK_TRACKER_DEBUG']);
}
return array('Psr\\Log\\LoggerInterface' => function (ContainerInterface $c) {
    if (isTrackerDebugEnabled($c)) {
        return $c->get('Monolog\\Logger');
    } else {
        return new \Psr\Log\NullLogger();
    }
}, 'log.handler.classes' => DI\decorate(function ($previous) {
    if (isset($previous['screen'])) {
        $previous['screen'] = 'Piwik\\Plugins\\Monolog\\Handler\\EchoHandler';
    }
    return $previous;
}), 'log.level' => DI\decorate(function ($previous, ContainerInterface $c) {
    if (isTrackerDebugEnabled($c)) {
        return \Monolog\Logger::DEBUG;
    }
    return $previous;
}));
예제 #10
0
<?php

use Penny\ExcpHandler\EventListener\WhoopsListener;
return ['event_manager' => \DI\decorate(function ($eventManager, $container) {
    $eventManager->attach("dispatch_error", [$container->get(WhoopsListener::class), "onError"]);
    $eventManager->attach("*_error", [$container->get(WhoopsListener::class), "onError"]);
    // this is usage if we want to use templated error handler
    //       \App\EventListener\ExceptionListener::class => \DI\object(\App\EventListener\ExceptionListener::class)
    //                ->constructor(\DI\get("template")),
    //       \App\EventListener\DispatcherExceptionListener::class => \DI\object(\App\EventListener\DispatcherExceptionListener::class)
    //               ->constructor(\DI\get("template")),
    return $eventManager;
}), WhoopsListener::class => \DI\object(WhoopsListener::class), \App\EventListener\ExceptionListener::class => \DI\object(\App\EventListener\ExceptionListener::class)->constructor(\DI\get("template")), \App\EventListener\DispatcherExceptionListener::class => \DI\object(\App\EventListener\DispatcherExceptionListener::class)->constructor(\DI\get("template")), 'template' => \DI\object(\League\Plates\Engine::class)->constructor('./app/view/'), 'router' => function () {
    return \FastRoute\simpleDispatcher(function (\FastRoute\RouteCollector $r) {
        $r->addRoute('GET', '/', ['App\\Controller\\IndexController', 'index']);
    });
}];