Ejemplo n.º 1
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $serverGlobal = $input->getOption('server-global');
     if ($serverGlobal) {
         $_SERVER = json_decode($serverGlobal, true);
     }
     $this->requireFixtureFiles($input);
     $this->setIncludePathAsInTestBootstrap();
     $host = Url::getHost();
     if (empty($host)) {
         Url::setHost('localhost');
     }
     $fixture = $this->createFixture($input);
     $this->setupDatabaseOverrides($input, $fixture);
     // perform setup and/or teardown
     if ($input->getOption('teardown')) {
         $fixture->getTestEnvironment()->save();
         $fixture->performTearDown();
     } else {
         $fixture->performSetUp();
     }
     if ($input->getOption('set-phantomjs-symlinks')) {
         $this->createSymbolicLinksForUITests();
     }
     $this->writeSuccessMessage($output, array("Fixture successfully setup!"));
     $sqlDumpPath = $input->getOption('sqldump');
     if ($sqlDumpPath) {
         $this->createSqlDump($sqlDumpPath, $output);
     }
 }
Ejemplo n.º 2
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     if (!defined('PIWIK_TEST_MODE')) {
         define('PIWIK_TEST_MODE', true);
     }
     Environment::setGlobalEnvironmentManipulator(new TestingEnvironmentManipulator(new TestingEnvironmentVariables()));
     $serverGlobal = $input->getOption('server-global');
     if ($serverGlobal) {
         $_SERVER = json_decode($serverGlobal, true);
     }
     if (Config::getInstance()->database_tests['tables_prefix'] !== '') {
         throw new \Exception("To generate OmniFixture for the UI tests, you must set an empty tables_prefix in [database_tests]");
     }
     $this->requireFixtureFiles($input);
     $this->setIncludePathAsInTestBootstrap();
     $host = Url::getHost();
     if (empty($host)) {
         $host = 'localhost';
         Url::setHost('localhost');
     }
     $configDomainToSave = $input->getOption('save-config');
     if (!empty($configDomainToSave)) {
         $pathToDomainConfig = PIWIK_INCLUDE_PATH . '/config/' . $host . '.config.ini.php';
         if (!file_exists($pathToDomainConfig)) {
             link(PIWIK_INCLUDE_PATH . '/config/config.ini.php', $pathToDomainConfig);
         }
     }
     if ($input->getOption('set-phantomjs-symlinks')) {
         $this->createSymbolicLinksForUITests();
     }
     $fixture = $this->createFixture($input, $allowSave = !empty($configDomainToSave));
     $this->setupDatabaseOverrides($input, $fixture);
     // perform setup and/or teardown
     if ($input->getOption('teardown')) {
         $fixture->getTestEnvironment()->save();
         $fixture->performTearDown();
     } else {
         $fixture->performSetUp();
     }
     $this->writeSuccessMessage($output, array("Fixture successfully setup!"));
     $sqlDumpPath = $input->getOption('sqldump');
     if ($sqlDumpPath) {
         $this->createSqlDump($sqlDumpPath, $output);
     }
     if (!empty($configDomainToSave)) {
         Config::getInstance()->forceSave();
     }
 }
Ejemplo n.º 3
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $serverGlobal = $input->getOption('server-global');
     if ($serverGlobal) {
         $_SERVER = json_decode($serverGlobal, true);
     }
     $this->requireFixtureFiles($input);
     $this->setIncludePathAsInTestBootstrap();
     $host = Url::getHost();
     if (empty($host)) {
         $host = 'localhost';
         Url::setHost('localhost');
     }
     $configDomainToSave = $input->getOption('save-config');
     if (!empty($configDomainToSave)) {
         $pathToDomainConfig = PIWIK_INCLUDE_PATH . '/config/' . $host . '.config.ini.php';
         if (!file_exists($pathToDomainConfig)) {
             link(PIWIK_INCLUDE_PATH . '/config/config.ini.php', $pathToDomainConfig);
         }
     }
     $fixture = $this->createFixture($input);
     $this->setupDatabaseOverrides($input, $fixture);
     // perform setup and/or teardown
     if ($input->getOption('teardown')) {
         $fixture->getTestEnvironment()->save();
         $fixture->performTearDown();
     } else {
         $fixture->performSetUp();
     }
     if ($input->getOption('set-phantomjs-symlinks')) {
         $this->createSymbolicLinksForUITests();
     }
     $this->writeSuccessMessage($output, array("Fixture successfully setup!"));
     $sqlDumpPath = $input->getOption('sqldump');
     if ($sqlDumpPath) {
         $this->createSqlDump($sqlDumpPath, $output);
     }
     if (!empty($configDomainToSave)) {
         Config::getInstance()->forceSave();
     }
 }
Ejemplo n.º 4
0
 /**
  * Add trusted hosts
  */
 private function addTrustedHosts($siteUrl)
 {
     $trustedHosts = array();
     // extract host from the request header
     if (($host = $this->extractHost('http://' . Url::getHost())) !== false) {
         $trustedHosts[] = $host;
     }
     // extract host from first web site
     if (($host = $this->extractHost(urldecode($siteUrl))) !== false) {
         $trustedHosts[] = $host;
     }
     $trustedHosts = array_unique($trustedHosts);
     if (count($trustedHosts)) {
         $general = Config::getInstance()->General;
         $general['trusted_hosts'] = $trustedHosts;
         Config::getInstance()->General = $general;
         Config::getInstance()->forceSave();
     }
 }
Ejemplo n.º 5
0
 protected static function getHostname()
 {
     $host = Url::getHost($checkIfTrusted = false);
     // Check trusted requires config file which is not ready yet
     return $host;
 }
Ejemplo n.º 6
0
 /**
  * Returns the hostname of the current request (without port number)
  *
  * @return string
  */
 public static function getHostname()
 {
     // Check trusted requires config file which is not ready yet
     $host = Url::getHost($checkIfTrusted = false);
     // Remove any port number to get actual hostname
     $host = Url::getHostSanitized($host);
     return $host;
 }
 private function getFirstPartyCookieDomainHash()
 {
     $host = \Piwik\Url::getHost();
     $cookiePath = PiwikTracker::DEFAULT_COOKIE_PATH;
     return substr(sha1($host . $cookiePath), 0, 4);
 }
Ejemplo n.º 8
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $serverGlobal = $input->getOption('server-global');
     if ($serverGlobal) {
         $_SERVER = json_decode($serverGlobal, true);
     }
     $this->requireFixtureFiles();
     $this->setIncludePathAsInTestBootstrap();
     $file = $input->getOption('file');
     if ($file) {
         if (is_file($file)) {
             require_once $file;
         } else {
             if (is_file(PIWIK_INCLUDE_PATH . '/' . $file)) {
                 require_once PIWIK_INCLUDE_PATH . '/' . $file;
             } else {
                 throw new \Exception("Cannot find --file option file '{$file}'.");
             }
         }
     }
     $host = Url::getHost();
     if (empty($host)) {
         Url::setHost('localhost');
     }
     // get the fixture class
     $fixtureClass = $input->getArgument('fixture');
     if (class_exists("Piwik\\Tests\\Fixtures\\" . $fixtureClass)) {
         $fixtureClass = "Piwik\\Tests\\Fixtures\\" . $fixtureClass;
     }
     if (!class_exists($fixtureClass)) {
         throw new \Exception("Cannot find fixture class '{$fixtureClass}'.");
     }
     // create the fixture
     $fixture = new $fixtureClass();
     $fixture->printToScreen = true;
     $dbName = $input->getOption('db-name');
     if ($dbName) {
         $fixture->dbName = $dbName;
     }
     if ($input->getOption('persist-fixture-data')) {
         $fixture->persistFixtureData = true;
     }
     if ($input->getOption('drop')) {
         $fixture->resetPersistedFixture = true;
     }
     $extraPluginsToLoad = $input->getOption('plugins');
     if ($extraPluginsToLoad) {
         $fixture->extraPluginsToLoad = explode(',', $extraPluginsToLoad);
     }
     if ($fixture->createConfig) {
         Config::getInstance()->setTestEnvironment();
     }
     $fixture->createConfig = false;
     // setup database overrides
     $testingEnvironment = $fixture->getTestEnvironment();
     $optionsToOverride = array('dbname' => $fixture->getDbName(), 'host' => $input->getOption('db-host'), 'user' => $input->getOption('db-user'), 'password' => $input->getOption('db-pass'));
     foreach ($optionsToOverride as $configOption => $value) {
         if ($value) {
             $configOverride = $testingEnvironment->configOverride;
             $configOverride['database_tests'][$configOption] = $configOverride['database'][$configOption] = $value;
             $testingEnvironment->configOverride = $configOverride;
             Config::getInstance()->database[$configOption] = $value;
         }
     }
     // perform setup and/or teardown
     if ($input->getOption('teardown')) {
         $testingEnvironment->save();
         $fixture->performTearDown();
     } else {
         $fixture->performSetUp();
     }
     if ($input->getOption('set-phantomjs-symlinks')) {
         // make sure symbolic links exist (phantomjs doesn't support symlink-ing yet)
         foreach (array('libs', 'plugins', 'tests', 'piwik.js') as $linkName) {
             $linkPath = PIWIK_INCLUDE_PATH . '/tests/PHPUnit/proxy/' . $linkName;
             if (!file_exists($linkPath)) {
                 symlink(PIWIK_INCLUDE_PATH . '/' . $linkName, $linkPath);
             }
         }
     }
     $this->writeSuccessMessage($output, array("Fixture successfully setup!"));
 }
Ejemplo n.º 9
0
 private function executeNotAsyncHttp($url, Output $output)
 {
     $piwikUrl = $this->urlToPiwik ?: SettingsPiwik::getPiwikUrl();
     if (empty($piwikUrl)) {
         $piwikUrl = 'http://' . Url::getHost() . '/';
     }
     $url = $piwikUrl . $url;
     if (Config::getInstance()->General['force_ssl'] == 1) {
         $url = str_replace("http://", "https://", $url);
     }
     if ($this->runAsSuperUser) {
         $tokenAuths = self::getSuperUserTokenAuths();
         $tokenAuth = reset($tokenAuths);
         if (strpos($url, '?') === false) {
             $url .= '?';
         } else {
             $url .= '&';
         }
         $url .= 'token_auth=' . $tokenAuth;
     }
     try {
         Log::debug("Execute HTTP API request: " . $url);
         $response = Http::sendHttpRequestBy('curl', $url, $timeout = 0, $userAgent = null, $destinationPath = null, $file = null, $followDepth = 0, $acceptLanguage = false, $this->acceptInvalidSSLCertificate);
         $output->write($response);
     } catch (\Exception $e) {
         $message = "Got invalid response from API request: {$url}. ";
         if (isset($response) && empty($response)) {
             $message .= "The response was empty. This usually means a server error. This solution to this error is generally to increase the value of 'memory_limit' in your php.ini file. Please check your Web server Error Log file for more details.";
         } else {
             $message .= "Response was '" . $e->getMessage() . "'";
         }
         $output->write($message);
         Log::debug($e);
     }
 }
Ejemplo n.º 10
0
 /**
  * Add trusted hosts
  */
 protected function addTrustedHosts()
 {
     $trustedHosts = array();
     // extract host from the request header
     if (($host = $this->extractHost('http://' . Url::getHost())) !== false) {
         $trustedHosts[] = $host;
     }
     // extract host from first web site
     if (($host = $this->extractHost(urldecode($this->session->site_url))) !== false) {
         $trustedHosts[] = $host;
     }
     $trustedHosts = array_unique($trustedHosts);
     if (count($trustedHosts)) {
         $this->session->general_infos['trusted_hosts'] = $trustedHosts;
     }
 }