/**
  * 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());
 }