/** * Create service with name * * @param ServiceLocatorInterface $serviceLocator * @param $name * @param $requestedName * @return HttpApi */ public function createServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName) { $config = $this->getConfig($serviceLocator)[$requestedName]; $httpClient = isset($config['http_client']) && $serviceLocator->has($config['http_client']) ? $serviceLocator->get($config['http_client']) : null; $baseRequest = isset($config['base_request']) && $serviceLocator->has($config['base_request']) ? $serviceLocator->get($config['base_request']) : null; $api = new HttpApi($httpClient, $baseRequest); // Array of int code valid if (isset($config['valid_status_code']) && is_array($config['valid_status_code'])) { $api->setValidStatusCodes($config['valid_status_code']); } // string json/xml if (isset($config['request_format'])) { $api->setRequestFormat($config['request_format']); } // Profiler if (isset($config['profiler']) && $serviceLocator->has($config['profiler'])) { $api->setProfiler($serviceLocator->get($config['profiler'])); } return $api; }
/** * @param array $params * @param $contentResponse * @param $responseContentType * @param $typeResponse * @dataProvider providerServiceResponse */ public function testHttpMethod(array $params, $contentResponse, $responseContentType, $typeResponse) { $httpClient = $this->getMockBuilder('Zend\\Http\\Client')->disableOriginalConstructor()->setMethods(['dispatch', 'getResponse'])->getMock(); $expectedResponse = new Response(); $expectedResponse->setContent($contentResponse); $expectedResponse->getHeaders()->addHeaderLine('Content-Type', $responseContentType); $httpClient->expects($this->any())->method('dispatch')->will($this->returnValue($expectedResponse)); $httpClient->expects($this->any())->method('getResponse')->will($this->returnValue($expectedResponse)); $api = new HttpApi($httpClient); $profiler = $this->getMock('Matryoshka\\Service\\Api\\Profiler\\ProfilerInterface'); $api->setRequestFormat($typeResponse); $api->setProfiler($profiler); $request = call_user_func_array([$api, 'prepareRequest'], $params); $this->assertInstanceOf('\\Zend\\Http\\Request', $request); $this->assertEquals($api->getBaseRequest()->getUri()->getPath() . (string) $params[1], $request->getUri()->getPath()); $response = $api->dispatchRequest($request); $this->assertSame($api->getResponseDecoder()->decode($expectedResponse), $response); $this->assertSame($request, $api->getLastRequest()); $this->assertSame($expectedResponse, $api->getLastResponse()); $this->assertSame($api->getResponseDecoder()->getLastPayload(), $api->getLastResponseData()); }