/** * @cover ::createRequest */ public function testCreateRequest() { $routerProphecy = $this->prophesize(RouterInterface::class); $routerProphecy->generate('users_cget', [])->willReturn('/api/users'); $routerProphecy->generate('users_get', ['id' => 14])->willReturn('/api/users/14'); $urlBuilder = new UrlBuilder($routerProphecy->reveal(), 'http://example.com'); $requestBuilder = new RequestBuilder($urlBuilder, 'http://example.com'); $request = new Request('GET', 'http://example.com'); $this->assertEquals($request, $requestBuilder->createRequest('GET')); $request = new Request('GET', 'http://example.com/api/users'); $this->assertEquals($request, $requestBuilder->createRequest('GET', '/api/users')); $this->assertEquals($request, $requestBuilder->createRequest('GET', 'users_cget')); $request = new Request('GET', 'http://example.com/api/users/14'); $this->assertEquals($request, $requestBuilder->createRequest('GET', 'users_get', null, ['parameters' => ['id' => 14]])); $request = new Request('GET', 'http://example.com/api?id=14&filter[where][name]=john'); $this->assertEquals($request, $requestBuilder->createRequest('GET', '/api', null, ['query' => ['id' => 14, 'filter' => ['where' => ['name' => 'john']]]])); $this->assertEquals($request, $requestBuilder->createRequest('GET', '/api', null, ['query' => 'id=14&filter[where][name]=john'])); $request = new Request('GET', 'http://example.com', ['dummyHeader' => 'some value']); $this->assertEquals($request, $requestBuilder->createRequest('GET', null, null, ['headers' => ['dummyHeader' => 'some value']])); $request = new Request('GET', 'http://example.com', ['authorization' => 'Bearer MyToken']); $this->assertEquals($request, $requestBuilder->createRequest('GET', null, 'MyToken')); $request = new Request('GET', 'http://example.com', ['dummyHeader' => 'some value', 'authorization' => 'Bearer MyToken']); $this->assertEquals($request, $requestBuilder->createRequest('GET', null, 'MyToken', ['headers' => ['dummyHeader' => 'some value']])); }
/** * {@inheritdoc} * * @throws RouteNotFoundException If the named route doesn't exist * @throws MissingMandatoryParametersException When some parameters are missing that are mandatory for the route * @throws InvalidParameterException When a parameter value for a placeholder is not correct because it * does not match the requirement */ public function createRequest($method, $url = null, $token = null, array $options = []) { return $this->requestBuilder->createRequest($method, $url, $token, $options); }