Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
5 / 5 |
CRAP | |
100.00% |
19 / 19 |
| Browser | |
100.00% |
1 / 1 |
|
100.00% |
5 / 5 |
7 | |
100.00% |
19 / 19 |
| __construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| get | |
100.00% |
1 / 1 |
1 | |
100.00% |
8 / 8 |
|||
| getQueryFromUrl | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
| getParametersFromUrl | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
| getRedirectedPage | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| <?php | |
| namespace Luxian\Test; | |
| use Luxian\Container\ContainerInterface; | |
| use Luxian\Http\Request; | |
| use Luxian\Type\Url; | |
| class Browser | |
| { | |
| /** @var ContainerInterface */ | |
| private $container; | |
| public function __construct(ContainerInterface $container) | |
| { | |
| $this->container = $container; | |
| } | |
| /** | |
| * Simulate a GET request | |
| * | |
| * @param Url $url | |
| * | |
| * @return WebPage | |
| */ | |
| public function get(Url $url): WebPage | |
| { | |
| $server = [ | |
| 'REQUEST_URI' => $this->getQueryFromUrl($url), | |
| 'HTTP_HOST' => 'example.com', | |
| ]; | |
| $get = $this->getParametersFromUrl($url); | |
| $request = new Request($server, $get, [], []); | |
| $kernel = $this->container->getHttpKernel(); | |
| $response = $kernel->buildResponse($request); | |
| $page = new WebPage($request, $response); | |
| return $this->getRedirectedPage($page); | |
| } | |
| private function getQueryFromUrl(Url $url): string | |
| { | |
| $uri = $url->getPath(); | |
| if ($url->getQuery() !== '') { | |
| $uri .= '?' . $url->getQuery(); | |
| } | |
| return $uri; | |
| } | |
| private function getParametersFromUrl(Url $url): array | |
| { | |
| $parameters = []; | |
| if ($url->getQuery() !== '') { | |
| parse_str($url->getQuery(), $parameters); | |
| } | |
| return $parameters; | |
| } | |
| private function getRedirectedPage(WebPage $page): WebPage | |
| { | |
| // TO1DO: | |
| // - check if response is a redirect | |
| // - check if the maximum number of redirects was reached | |
| // - load the redirect destination page | |
| return $page; | |
| } | |
| } |