public function testShouldHaveTheFirstErrorMessage() { $response = Response::create(HttpMethod::GET(), '1.2', true, HttpErrorCode::code412(), [Error::create('first error', 'Error'), Error::create('second error', 'Error')]); $this->assertSame('first error', $response->getErrorMessage()->getValue()); $response = Response::create(HttpMethod::GET(), '1.2', true, HttpErrorCode::code412()); $this->assertSame('', $response->getErrorMessage()->getValue()); }
public function testShouldBuildAnErrorResponse() { $item = new \stdClass(); $item->firstname = 'john'; $builder = ResponseBuilder::create('1.2', HttpMethod::GET()); $builder->addParameter(Parameter::create('id', '42'))->addItem($item)->addError(Error::create('error message 1', 'reason1'))->addError(Error::create('error message 2', 'reason2', 'location2'))->setHttpErrorCode(HttpErrorCode::code402()); $this->assertSame('{"apiVersion":"1.2","method":"GET","params":{"id":"42"},"code":402,"message":"error message 1","errors":[{"message":"error message 1","reason":"reason1","location":""},{"message":"error message 2","reason":"reason2","location":"location2"}]}', json_encode($builder->build())); }
/** * @param \stdClass $stdObj * @return ResponseInterface * @throws ResponseParserException */ private function buildErrorResponse(\stdClass $stdObj) { $errorCode = HttpErrorCode::valueOf((int) $stdObj->code); if (is_null($errorCode)) { throw new ResponseParserException('Invalid HttpErrorCode: ' . $stdObj->code); } if (!is_array($stdObj->errors)) { throw new ResponseParserException('Error array expected'); } if (!count($stdObj->errors)) { throw new ResponseParserException('No error found'); } $errors = []; foreach ($stdObj->errors as $error) { $errors[] = Error::create($error->message, $error->reason, $error->location); } return Response::create($this->getHttpMethod($stdObj), $stdObj->apiVersion, true, $errorCode, $errors, $this->getParameters($stdObj)); }
public function testShouldAddErrorCollection() { $builder = ErrorResponseBuilder::create(new ErrorDataBuilder(), '1.2', HttpMethod::GET(), HttpErrorCode::code500()); $builder->addErrors(new ErrorCollection([Error::create('e1', 'ErrorType'), Error::create('e2', 'ErrorType')])); $this->assertSame('{"apiVersion":"1.2","method":"GET","params":{},"code":500,"message":"e1","errors":[{"message":"e1","reason":"ErrorType","location":""},{"message":"e2","reason":"ErrorType","location":""}]}', json_encode($builder->build())); }