public function assertStatusCode($code)
{
$exceptionMessage = '';
if ($code != $this->restDriver->getStatusCode() && $code >= 200 && $code < 400) {
$errorMessage = $this->getResponseObject();
if ($errorMessage instanceof ErrorMessage) {
$exceptionMessage = <<<EOF
Server Error ({$errorMessage->code}): {$errorMessage->message}
{$errorMessage->description}
In {$errorMessage->file}:{$errorMessage->line}
{$errorMessage->trace}
EOF;
} elseif ($errorMessage instanceof Exception) {
$exceptionMessage = <<<EOF
Client Exception ({$errorMessage->getCode()}): {$errorMessage->getMessage()}
In {$errorMessage->getFile()}:{$errorMessage->getLine()}
EOF;
// If previous exception is available it is most likely carrying info on server exception.
if ($previous = $errorMessage->getPrevious()) {
$exceptionName = get_class($previous);
$exceptionMessage .= <<<EOF
Previous Exception {$exceptionName} ({$previous->getCode()}): {$previous->getMessage()}
In {$previous->getFile()}:{$previous->getLine()}
{$previous->getTraceAsString()}
EOF;
}
}
}
Assertion::assertEquals($code, $this->restDriver->getStatusCode(), "Expected status code '{$code}' found '{$this->restDriver->getStatusCode()}'{$exceptionMessage}");
}