### Question:
ResponseHandlers { public static HttpClient.ResponseHandler<byte[]> byteArrayResponseHandler() { return (statusCode, responseBody, responseHeaders) -> { switch (statusCode) { case 200: case 201: case 202: case 204: return toByteArray(responseBody); default: 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 byteArrayResponseHandlerThrowsOnErrorResponse() { HttpClient.ResponseHandler<byte[]> responseHandler = ResponseHandlers.byteArrayResponseHandler(); ByteArrayInputStream responseBody = new ByteArrayInputStream("{}".getBytes()); ResponseHeaders responseHeaders = ResponseHeaders.emptyResponseHeaders(); try { responseHandler.apply(400, responseBody, responseHeaders); fail(); } catch (ErrorResponseException e) { assertThat(e.getMessage()).isEqualTo("{}"); } }
@Test void byteArrayResponseHandlerReturnsResponseBodyAsByteArrayOnSuccessfulResponse() { byte[] response = ResponseHandlers.byteArrayResponseHandler().apply(200, new ByteArrayInputStream("<response>".getBytes()), ResponseHeaders.emptyResponseHeaders()); assertThat(response).isEqualTo("<response>".getBytes()); }