Example #1
0
 /**
  * @Route("/api/create-package", name="generic_create", defaults={"_format" = "json"})
  * @Method({"POST"})
  */
 public function createPackageAction(Request $request)
 {
     $payload = json_decode($request->getContent(), true);
     if (!$payload) {
         return new JsonResponse(array('status' => 'error', 'message' => 'Missing payload parameter'), 406);
     }
     $url = $payload['repository']['url'];
     $package = new Package();
     $package->setEntityRepository($this->getDoctrine()->getRepository('PackagistWebBundle:Package'));
     $package->setRouter($this->get('router'));
     $user = $this->findUser($request);
     $package->addMaintainer($user);
     $package->setRepository($url);
     $errors = $this->get('validator')->validate($package);
     if (count($errors) > 0) {
         $errorArray = array();
         foreach ($errors as $error) {
             $errorArray[$error->getPropertyPath()] = $error->getMessage();
         }
         return new JsonResponse(array('status' => 'error', 'message' => $errorArray), 406);
     }
     try {
         $em = $this->getDoctrine()->getManager();
         $em->persist($package);
         $em->flush();
     } catch (\Exception $e) {
         $this->get('logger')->critical($e->getMessage(), array('exception', $e));
         return new JsonResponse(array('status' => 'error', 'message' => 'Error saving package'), 500);
     }
     return new JsonResponse(array('status' => 'success'), 202);
 }
Example #2
0
 /**
  * @dataProvider githubApiProvider
  */
 public function testGithubApi($url)
 {
     $client = self::createClient();
     $package = new Package();
     $package->setRepository($url);
     $user = new User();
     $user->addPackages($package);
     $repo = $this->getMockBuilder('Packagist\\WebBundle\\Entity\\UserRepository')->disableOriginalConstructor()->getMock();
     $em = $this->getMockBuilder('Doctrine\\ORM\\EntityManager')->disableOriginalConstructor()->getMock();
     $updater = $this->getMockBuilder('Packagist\\WebBundle\\Package\\Updater')->disableOriginalConstructor()->getMock();
     $repo->expects($this->once())->method('findOneBy')->with($this->equalTo(array('username' => 'test', 'apiToken' => 'token')))->will($this->returnValue($user));
     static::$kernel->getContainer()->set('packagist.user_repository', $repo);
     static::$kernel->getContainer()->set('doctrine.orm.entity_manager', $em);
     static::$kernel->getContainer()->set('packagist.package_updater', $updater);
     $payload = json_encode(array('repository' => array('url' => 'git://github.com/composer/composer')));
     $client->request('POST', '/api/github?username=test&apiToken=token', array('payload' => $payload));
     $this->assertEquals(202, $client->getResponse()->getStatusCode());
 }
Example #3
0
 /**
  * @param callable $onBeforeIndex TODO Add typehint when migrating to 5.4+
  * @param array $orderBys
  *
  * @return array
  */
 protected function commonTestSearchActionOrderBysAction($onBeforeIndex, array $orderBys = array())
 {
     $client = self::createClient();
     $container = $client->getContainer();
     $kernelRootDir = $container->getParameter('kernel.root_dir');
     $this->executeCommand('php ' . $kernelRootDir . '/console doctrine:database:drop --env=test --force', false);
     $this->executeCommand('php ' . $kernelRootDir . '/console doctrine:database:create --env=test');
     $this->executeCommand('php ' . $kernelRootDir . '/console doctrine:schema:create --env=test');
     $this->executeCommand('php ' . $kernelRootDir . '/console redis:flushall --env=test -n');
     $lock = $container->getParameter('kernel.cache_dir') . '/composer-indexer.lock';
     $this->executeCommand('rm -f ' . $lock);
     $em = $container->get('doctrine')->getManager();
     if (!empty($orderBys)) {
         $orderBysQryStrPart = '&' . http_build_query(array('orderBys' => $orderBys));
     } else {
         $orderBysQryStrPart = '';
     }
     $twigPackage = new Package();
     $twigPackage->setName('twig/twig');
     $twigPackage->setRepository('https://github.com/twig/twig');
     $packagistPackage = new Package();
     $packagistPackage->setName('composer/packagist');
     $packagistPackage->setRepository('https://github.com/composer/packagist');
     $symfonyPackage = new Package();
     $symfonyPackage->setName('symfony/symfony');
     $symfonyPackage->setRepository('https://github.com/symfony/symfony');
     $em->persist($twigPackage);
     $em->persist($packagistPackage);
     $em->persist($symfonyPackage);
     $em->flush();
     $onBeforeIndex($container, $twigPackage, $packagistPackage, $symfonyPackage);
     $this->executeCommand('php ' . $kernelRootDir . '/console packagist:index --env=test --force');
     $client->request('GET', '/search.json?q=' . $orderBysQryStrPart);
     $response = $client->getResponse();
     $content = $client->getResponse()->getContent();
     $this->assertSame(200, $response->getStatusCode(), $content);
     return json_decode($content, true);
 }
Example #4
0
 protected function initializePackages(ContainerInterface $container)
 {
     $kernelRootDir = $container->getParameter('kernel.root_dir');
     $this->executeCommand('php ' . $kernelRootDir . '/console doctrine:database:drop --env=test --force', false);
     $this->executeCommand('php ' . $kernelRootDir . '/console doctrine:database:create --env=test');
     $this->executeCommand('php ' . $kernelRootDir . '/console doctrine:schema:create --env=test');
     $this->executeCommand('php ' . $kernelRootDir . '/console redis:flushall --env=test -n');
     $em = $container->get('doctrine')->getManager();
     $twigPackage = new Package();
     $twigPackage->setName('twig/twig');
     $twigPackage->setRepository('https://github.com/twig/twig');
     $packagistPackage = new Package();
     $packagistPackage->setName('composer/packagist');
     $packagistPackage->setRepository('https://github.com/composer/packagist');
     $symfonyPackage = new Package();
     $symfonyPackage->setName('symfony/symfony');
     $symfonyPackage->setRepository('https://github.com/symfony/symfony');
     $em->persist($twigPackage);
     $em->persist($packagistPackage);
     $em->persist($symfonyPackage);
     $em->flush();
     return [$twigPackage, $packagistPackage, $symfonyPackage];
 }