### Question:
ResponseHandlers { public static HttpClient.ResponseHandler<String> stringResponseHandler() { return (statusCode, responseBody, responseHeaders) -> { if (statusCode == 200) { return toString(responseBody, responseHeaders); } throw responseException(statusCode, new PushbackInputStream(responseBody), responseHeaders, ResponseHandlers::buildEmptyErrorResponse); }; } private  ResponseHandlers(); static HttpClient.ResponseHandler<T> jsonResponseHandler(Class<T> klass); static HttpClient.ResponseHandler<T> paymentInitiationResponseHandler(String scaOAuthUrl, Class<T> klass); static HttpClient.ResponseHandler<T> consentCreationResponseHandler(String scaOAuthUrl, Class<T> klass); static HttpClient.ResponseHandler<String> stringResponseHandler(); static HttpClient.ResponseHandler<byte[]> byteArrayResponseHandler(); static HttpClient.ResponseHandler<T> multipartFormDataResponseHandler(Class<T> bodyClass);  }### Answer:
@Test void stringResponseHandlerReturnsResponseBodyAsStringOnSuccessfulResponse() { String response = ResponseHandlers.stringResponseHandler().apply(200, new ByteArrayInputStream("<response>".getBytes()), ResponseHeaders.emptyResponseHeaders()); assertThat(response).isEqualTo("<response>"); }
@Test void stringResponseHandlerThrowsOnErrorResponse() { HttpClient.ResponseHandler<String> stringResponseHandler = ResponseHandlers.stringResponseHandler(); ByteArrayInputStream responseBody = new ByteArrayInputStream("{}".getBytes()); ResponseHeaders responseHeaders = ResponseHeaders.emptyResponseHeaders(); try { stringResponseHandler.apply(400, responseBody, responseHeaders); fail(); } catch (ErrorResponseException e) { assertThat(e.getMessage()).isEqualTo("{}"); } }