package org.mapfish.print.processor.http;
import org.json.JSONException;
import org.json.JSONObject;
import org.mapfish.print.attribute.HttpRequestHeadersAttribute;
import org.mapfish.print.output.Values;
import org.mapfish.print.wrapper.json.PJsonObject;
import org.springframework.http.HttpMethod;
import org.springframework.http.client.ClientHttpRequest;
import org.springframework.test.context.ContextConfiguration;
import java.net.URI;
import javax.annotation.Nullable;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
@ContextConfiguration(locations = {
"classpath:org/mapfish/print/processor/http/composite-client-http-request-factory/add-custom-processor-application-context.xml"
})
public class CompositeClientHttpRequestFactoryProcessorTest extends AbstractHttpProcessorTest {
@Override
protected String baseDir() {
return "composite-client-http-request-factory";
}
@Override
protected Class<TestProcessor> testProcessorClass() {
return TestProcessor.class;
}
@Override
protected Class<CompositeClientHttpRequestFactoryProcessor> classUnderTest() {
return CompositeClientHttpRequestFactoryProcessor.class;
}
@Override
protected void addExtraValues(Values values) throws JSONException {
HttpRequestHeadersAttribute.Value headers = new HttpRequestHeadersAttribute.Value();
JSONObject inner = new JSONObject("{\"header1\": [\"value\"]}");
headers.requestHeaders = new PJsonObject(inner, "headers");
values.put("requestHeaders", headers);
}
public static class TestProcessor extends AbstractTestProcessor {
@Nullable
@Override
public Void execute(TestParam values, ExecutionContext context) throws Exception {
final URI uri = new URI("https://localhost:8443/path?query#fragment");
final ClientHttpRequest request = values.clientHttpRequestFactoryProvider.get().createRequest(uri,
HttpMethod.GET);
final URI finalUri = request.getURI();
assertEquals("http", finalUri.getScheme());
assertEquals("127.0.0.1", finalUri.getHost());
assertEquals("/path", finalUri.getPath());
assertEquals(9999, finalUri.getPort());
assertEquals("query", finalUri.getQuery());
assertEquals("fragment", finalUri.getFragment());
assertEquals(1, request.getHeaders().size());
assertArrayEquals(new Object[]{"value"}, request.getHeaders().get("header1").toArray());
return null;
}
}
}