Example #1
0
 public function ensureLoggedIn()
 {
     $crawler = $this->client->request('GET', '/user/login');
     /** @var Response $response */
     $response = $this->client->getResponse();
     if ($response->getStatus() < 200 && $response->getStatus() >= 300) {
         return;
     }
     $loginForm = $crawler->filter('#loginPageForm')->form();
     $this->client->submit($loginForm, ['username' => $this->username, 'password' => $this->password]);
     if (strpos($this->client->getHistory()->current()->getUri(), 'account') === FALSE) {
         throw new \PHPUnit_Framework_Exception("Should be logged in, but is not.");
     }
 }
Example #2
0
 /**
  * @param InputInterface  $input  The input instance
  * @param OutputInterface $output The output instance
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $pages = 25;
     $page = 1;
     $output->writeln('<info>Beginning Google crawl</info>');
     $query = new QueryString(array('q' => 'site:drupalcode.org "composer.json" "drupal-module"'));
     $url = 'http://www.google.com/search?' . $query;
     // Load page 1
     $client = new Client();
     $crawler = $client->request('GET', $url);
     $repos = array();
     // Crawl through search pages.
     do {
         $current = $client->getHistory()->current()->getUri();
         $output->writeln('<info>Crawling:</info> ' . $current);
         // Use a CSS filter to select only the result links:
         $links = $crawler->filter('li h3 a');
         // Search the links for the domain:
         foreach ($links as $index => $link) {
             $href = $link->getAttribute('href');
             $query = QueryString::fromString(parse_url($href, PHP_URL_QUERY));
             $url = $query->get('q');
             // Match pages with composer.json in root.
             if (preg_match('/^http:\\/\\/drupalcode.org.+\\.git\\/.+\\/composer.json$/i', $url)) {
                 // Strip to git url and rewrite to drupalcode.org then store unique matches.
                 $matches = array();
                 preg_match('/^http:\\/\\/drupalcode.org.+\\.git/i', $url, $matches);
                 $repo = str_replace('http://drupalcode.org/', 'http://git.drupal.org/', $matches[0]);
                 $repos[$repo] = null;
                 $output->writeln('<info>Found:</info> ' . $repo);
             }
         }
         // Turn the page.
         $page++;
         $node = $crawler->filter('table#nav')->selectLink($page);
         if ($node->count()) {
             $crawler = $client->click($node->link());
         } else {
             break;
         }
     } while ($page < $pages);
     $path = getcwd() . '/satis.json';
     $file = new JsonFile($path);
     $data = $file->read();
     foreach ($data['repositories'] as $file_repo) {
         $repos[$file_repo['url']] = null;
     }
     $repos = array_keys($repos);
     sort($repos);
     $data['repositories'] = array();
     foreach ($repos as $repo) {
         $data['repositories'][] = array('url' => $repo, 'type' => 'vcs');
     }
     $file->write((array) $data);
 }
Example #3
0
 /**
  * @param $testId
  * @param int $operationId
  * @param array $testData
  * @return array
  */
 public function run($testId, $operationId = 0, $testData = [])
 {
     //$opData = $testData['operations'][$operationId];
     $orderId = $testData['orderId'];
     // Log in
     $crawler = $this->client->request('GET', $this->host . '/user/login');
     $loginFormNode = $crawler->filter('#loginPageForm');
     $loginForm = $loginFormNode->form();
     $this->client->submit($loginForm, ['username' => $this->username, 'password' => $this->password]);
     // Find a page with transaction form and submit it (override in subclasses)
     $crawler = $this->submitTransactionForm($orderId);
     //var_dump($this->client->getHistory(), parse_url($this->client->getHistory()->current()->getUri())); exit;
     // Go home
     $homeForm = $crawler->filter('form')->first()->form();
     $result = ['ACTION' => $homeForm->get('ACTION')->getValue(), 'RC' => $homeForm->get('RC')->getValue(), 'TRTYPE' => $homeForm->get('TRTYPE')->getValue(), 'RRN' => $homeForm->get('RRN')->getValue(), 'operation' => $operationId, 'test' => $testId, 'ORDER' => $homeForm->get('ORDER')->getValue(), 'date' => date('m/d/Y')];
     $this->client->submit($homeForm);
     ob_start();
     var_dump($this->client->getHistory());
     $result['history'] = ob_get_clean();
     return $result;
 }
 /**
  * @param int $categoryId
  * @return Category
  */
 public function getCategoryById($categoryId)
 {
     $url = 'http://www.tunisianet.com.tn/' . $categoryId . '-';
     $crawler = $this->client->request('GET', $url);
     $url = $this->client->getHistory()->current()->getUri();
     $title = $crawler->filter('title')->text();
     $products = $crawler->filter('#produit_liste_main .ajax_block_product')->each(function (Crawler $node) {
         $title = $node->filter('.center_block > h2 > a')->text();
         $id = intval($node->filter("input[id^='hit_id']")->attr('value'));
         $reference = $node->filter("input[id^='hit_ref']")->attr('value');
         $description = $node->filter('.center_block > .product_desc > a')->text();
         $priceTag = $node->filter('.price')->text();
         $price = floatval(str_replace(',', '.', $priceTag));
         $available = $node->filter('#produit_liste_prix > div:nth-child(2)')->attr('class') === 'en_stock';
         $url = $node->filter('.center_block > h2 > a')->attr('href');
         $product = new Product($id, $title, $reference, $description, $price, $available, $url);
         return $product;
     });
     $category = new Category($categoryId, $title, $url, $products);
     return $category;
 }