Example #1
0
 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);
     }
 }
Example #2
0
 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);
         }
     }
 }
Example #3
0
 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;
 }