/*
* Copyright (c) 2012 - 2016 Jadler contributors
* This program is made available under the terms of the MIT License.
*/
package net.jadler.utils;
import java.io.IOException;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ResponseHandler;
import static net.jadler.Jadler.port;
/**
* Various handy functions and classes useful for testing.
*/
public class TestUtils {
/**
* An http response handler which retrieves just the response status code value.
*/
public static final StatusRetriever STATUS_RETRIEVER = new StatusRetriever();
public static class StatusRetriever implements ResponseHandler<Integer> {
@Override
public Integer handleResponse(final HttpResponse response) {
return response.getStatusLine().getStatusCode();
}
}
/**
* @return URI of the Jadler stub server
*/
public static String jadlerUri() {
return "http://localhost:" + port();
}
/**
* Reads the body of an http response. Please use this function if and only if the {@code Content-Type} header is
* not empty and the {@code charset} parameter of the header is set.
*
* @param response an hhtp response to read the body from
* @return
* @throws IOException if some IO problems occurs
*/
public static String stringBodyOf(final HttpResponse response) throws IOException {
final HttpEntity body = response.getEntity();
final String charset = body.getContentType().getElements()[0].getParameterByName("charset").getValue();
return IOUtils.toString(body.getContent(), charset);
}
/**
* @param response an http response to read the raw body from
* @return raw body retrieved from the response
* @throws IOException if some IO problems occurs
*/
public static byte[] rawBodyOf(final HttpResponse response) throws IOException {
return IOUtils.toByteArray(response.getEntity().getContent());
}
}