public function validateBody(Response $response, Spec\Response $responseSpec) { $actualBody = (string) $response->getBody(); $actualBodyData = json_decode($actualBody, true); if ($actualBodyData !== $responseSpec->getBody()) { $message = sprintf("\t\t<error>JSON in body of the response is invalid, actual:</error>\n%s\n\t\t<error>Expected:</error>\n%s", $this->getOutput()->formatArray($actualBodyData, 3), $this->getOutput()->formatArray($responseSpec->getBody(), 3)); $this->addViolation($message); } }
private function validateStatusCode(\GuzzleHttp\Message\Response $response, Spec\Response $responseSpec, UseCaseValidationReport $report) { if ($responseSpec->getStatusCode()) { $expectedCode = $responseSpec->getStatusCode(); $actualCode = $response->getStatusCode(); if ($expectedCode !== $actualCode) { $message = sprintf("\t\t<error>Response code should be %s actual value is %s</error>", $expectedCode, $actualCode); $this->addViolation($message); $report->setStatusCodeViolation($message); } } }
public function validate(Response $response, Spec\Response $responseSpec) { switch ($responseSpec->getBodyType()) { case Spec\Response::BODY_TYPE_JSON: $jsonValidator = new Json(); $jsonValidator->validate($response, $responseSpec); $this->addViolations($jsonValidator->getViolations()); break; default: throw new \RuntimeException(sprintf('The specified response body type %s is not supported', $responseSpec->getBodyType())); } return $this->isValid(); }
public function dumpAsConsoleText() { $output = ''; $useCaseView = new UseCaseView(); $output .= $useCaseView->view($this->spec); if ($this->getStatusCodeViolation()) { $output .= $this->getStatusCodeViolation() . "\n"; } else { $output .= sprintf("\t\tResponse code is <info>%s</info>\n", $this->getResponse()->getStatusCode()); } if ($this->getHeadersViolations()) { foreach ($this->getHeadersViolations() as $violation) { $output .= $violation . "\n"; } } else { $output .= sprintf("\t\tResponse has following required headers:\n"); foreach ($this->responseSpec->getRequiredHeaders() as $headerName => $headerValue) { $output .= sprintf("\t\t\t<info>%s: %s</info>\n", $headerName, $headerValue); } } $output .= "\n"; if (!$this->getBodyViolations()) { $actualBody = (string) $this->getResponse()->getBody(); $json = json_decode($actualBody); if ($json) { $bodyStr = json_encode($json, JSON_PRETTY_PRINT); } else { $bodyStr = $json; } $output .= "\t\tResponse body is valid:\n\n\n"; $output .= sprintf("<info>%s</info>\n\n\n", \RestSpec\Output\indentValue($bodyStr, 2)); } else { foreach ($this->getBodyViolations() as $violation) { $output .= $violation . "\n"; } } return $output; }