container = new Container(); $this->request = Request::createFromEnvironment(Environment::mock()); $this->response = new Response(); $this->container['view'] = ViewFactory::create($this->container, $this->request); $this->container['locale'] = new LocaleManager(); $frontController = new FrontController($this->container); $downloadController = new DownloadController($this->container); $this->container['router']->map(['GET'], '/', [$frontController, 'index']) ->setName('index'); $this->container['router']->map(['GET'], '/video', [$frontController, 'info']) ->setName('info'); $this->container['router']->map(['GET'], '/extractors', [$frontController, 'extractors']) ->setName('extractors'); $this->container['router']->map(['GET'], '/locale', [$frontController, 'locale']) ->setName('locale'); $this->container['router']->map(['GET'], '/redirect', [$downloadController, 'download']) ->setName('download'); } /** * Run controller function with custom query parameters and return the result. * * @param string $request Controller function to call * @param array $params Query parameters * * @return Response HTTP response */ protected function getRequestResult($request, array $params) { return $this->controller->$request( $this->request->withQueryParams($params), $this->response ); } /** * Assert that calling controller function with these parameters returns a 200 HTTP response. * * @param string $request Controller function to call * @param array $params Query parameters * * @return void */ protected function assertRequestIsOk($request, array $params = []) { $this->assertTrue($this->getRequestResult($request, $params)->isOk()); } /** * Assert that calling controller function with these parameters returns an HTTP redirect. * * @param string $request Controller function to call * @param array $params Query parameters * * @return void */ protected function assertRequestIsRedirect($request, array $params = []) { $this->assertTrue($this->getRequestResult($request, $params)->isRedirect()); } /** * Assert that calling controller function with these parameters returns an HTTP 500 error. * * @param string $request Controller function to call * @param array $params Query parameters * * @return void */ protected function assertRequestIsServerError($request, array $params = []) { $this->assertTrue($this->getRequestResult($request, $params)->isServerError()); } /** * Assert that calling controller function with these parameters returns an HTTP 400 error. * * @param string $request Controller function to call * @param array $params Query parameters * * @return void */ protected function assertRequestIsClientError($request, array $params = []) { $this->assertTrue($this->getRequestResult($request, $params)->isClientError()); } }