function it_should_publish_pact_by_object(RequestInterface $request, ResponseInterface $response)
 {
     $consumerName = 'consumerA';
     $providerName = 'providerB';
     $version = '1.0.0';
     $contract = new JsonSimpleObject();
     $this->requestBuilder->createPublishPactRequestFromObject($this->baseUrl, $consumerName, $providerName, $version, $contract)->willReturn($request);
     $this->client->sendRequest($request)->willReturn($response);
     $response->getStatusCode()->willReturn(200);
     $this->publishPact($providerName, $consumerName, $version, $contract)->shouldReturn($response);
 }
 /**
  * Publishes pact to pact broker
  *
  * @param string                   $providerName
  * @param string                   $consumerName
  * @param string                   $version
  * @param string|\JsonSerializable $contract Path to file, or object with return json contract
  *
  * @return \Psr\Http\Message\ResponseInterface
  * @throws PactBrokerException
  */
 public function publishPact($providerName, $consumerName, $version, $contract)
 {
     $request = null;
     if ($contract instanceof \JsonSerializable) {
         $request = $this->requestBuilder->createPublishPactRequestFromObject($this->baseUrl, $consumerName, $providerName, $version, $contract);
     } else {
         if (is_string($contract)) {
             $request = $this->requestBuilder->createPublishPactRequestFromFile($this->baseUrl, $consumerName, $providerName, $version, $contract);
         }
     }
     if (!$request) {
         throw new PactBrokerException("Can't publish contract file. Contract in wrong type.");
     }
     $response = $this->client->sendRequest($request);
     $this->checkIfResponseIsCorrect($response);
     return $response;
 }