public function apply(RequestAndResponse $originalRequestAndResponse) : RequestAndResponse
 {
     $originalResponse = $originalRequestAndResponse->response();
     $headers = $originalResponse->getHeaders();
     $headers['Content-Type'] = 'application/json';
     return new RequestAndResponse($originalRequestAndResponse->request(), new JsonResponse([], $originalResponse->getStatusCode(), $headers));
 }
 function it_can_take_some_stuff_out_of_the_request(RequestAndResponse $originalRequestAndResponse, ResponseInterface $originalResponse, ServerRequestInterface $originalRequest, ServerRequestInterface $requestWithOneAttribRemoved, ServerRequestInterface $requestWithBothAttribsRemoved)
 {
     // ARRANGE
     $originalRequestAndResponse->response()->willReturn($originalResponse);
     $originalRequestAndResponse->request()->willReturn($originalRequest);
     $originalRequest->withoutAttribute('route')->willReturn($requestWithOneAttribRemoved);
     $requestWithOneAttribRemoved->withoutAttribute('route-info')->willReturn($requestWithBothAttribsRemoved);
     // ACT
     $result = $this->apply($originalRequestAndResponse);
     // ASSERT
     $result->request()->shouldBe($requestWithBothAttribsRemoved);
     $result->response()->shouldBe($originalResponse);
 }
 function it_can_convert_the_response_object_type(RequestAndResponse $requestAndResponse, ServerRequestInterface $request, ResponseInterface $response)
 {
     // ARRANGE
     $requestAndResponse->request()->willReturn($request);
     $requestAndResponse->response()->willReturn($response);
     $response->getHeaders()->willReturn(['header-name' => 'header-value']);
     $response->getStatusCode()->willReturn(201);
     // ACT
     $resultingRequestAndResponse = $this->apply($requestAndResponse);
     // ASSERT
     $resultingRequestAndResponse->request()->shouldBeLike($request);
     $expectedResponseHeaders = ['header-name' => ['header-value'], 'Content-Type' => ['application/json']];
     $expectedResponseStatusCode = 201;
     $resultingRequestAndResponse->response()->getStatusCode()->shouldBe($expectedResponseStatusCode);
     $resultingRequestAndResponse->response()->getHeaders()->shouldBe($expectedResponseHeaders);
 }
 public function apply(RequestAndResponse $originalRequestAndResponse) : RequestAndResponse
 {
     $request = $originalRequestAndResponse->request();
     return new RequestAndResponse($request->withoutAttribute('route')->withoutAttribute('route-info'), $originalRequestAndResponse->response());
 }