/** * Validate response by json schema * * @param string $schema path to json schema file */ public function canSeeResponseIsValidOnSchemaFile($schema) { $schemaPath = realpath($schema); $retriever = new \JsonSchema\Uri\UriRetriever(); $schema = $retriever->retrieve('file://' . $schemaPath); $refResolver = new \JsonSchema\RefResolver($retriever); $refResolver->resolve($schema, 'file://' . $schemaPath); $response = $this->getModule('REST')->response; $validator = new \JsonSchema\Validator(); $validator->setUriRetriever(new UriRetriever()); $validator->check(json_decode($response), $schema); $message = ''; $isValid = $validator->isValid(); if (!$isValid) { $message = "JSON does not validate. Violations:\n"; foreach ($validator->getErrors() as $error) { $message .= $error['property'] . " " . $error['message'] . PHP_EOL; } } $this->assertTrue($isValid, $message); }