Ejemplo n.º 1
0
 /**
  * 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;
 }
 function it_should_throw_exception_if_there_was_an_error_while_publishing_pact(RequestInterface $request, ResponseInterface $response, StreamInterface $stream)
 {
     $consumerName = 'consumerA';
     $providerName = 'providerB';
     $version = '1.0.0';
     $contract = (new JsonSimpleObject())->getPath();
     $this->requestBuilder->createPublishPactRequestFromFile($this->baseUrl, $consumerName, $providerName, $version, $contract)->willReturn($request);
     $this->client->sendRequest($request)->willReturn($response);
     $response->getStatusCode()->willReturn(500);
     $response->getBody()->willReturn($stream);
     $stream->getContents()->willReturn('Error');
     $this->shouldThrow(PactBrokerException::class)->during('publishPact', [$providerName, $consumerName, $version, $contract]);
 }