--- /dev/null
+package de.juplo.facebook.exceptions;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URI;
+import java.nio.charset.StandardCharsets;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.client.ClientHttpRequest;
+import org.springframework.http.client.ClientHttpRequestFactory;
+import org.springframework.http.client.ClientHttpResponse;
+
+
+
+/**
+ *
+ * @author kai
+ */
+public class MockClientHttpRequestFactory implements ClientHttpRequestFactory
+{
+ private static final Logger log =
+ LoggerFactory.getLogger(MockClientHttpRequestFactory.class);
+
+ private HttpStatus status = HttpStatus.OK;
+ private HttpHeaders headers = new HttpHeaders();
+ private String body = "";
+
+
+ @Override
+ public ClientHttpRequest createRequest(URI uri, HttpMethod method) throws IOException
+ {
+ return new MockClientHttpRequest(uri, method);
+ }
+
+ public void setStatus(HttpStatus status)
+ {
+ this.status = status;
+ }
+
+ public void setHeaders(HttpHeaders headers)
+ {
+ this.headers = headers;
+ }
+
+ public void addHeader(String name, String value)
+ {
+ headers.add(name, value);
+ }
+
+ public void setBody(String body)
+ {
+ log.trace(body);
+ this.body = body;
+ }
+
+
+ class MockClientHttpRequest implements ClientHttpRequest
+ {
+ private final URI uri;
+ private final HttpMethod method;
+
+
+ public MockClientHttpRequest(URI uri, HttpMethod method)
+ {
+ this.uri = uri;
+ this.method = method;
+ }
+
+
+ @Override
+ public ClientHttpResponse execute() throws IOException
+ {
+ return new MockClientHttpResponse();
+ }
+
+ @Override
+ public HttpMethod getMethod()
+ {
+ return method;
+ }
+
+ @Override
+ public URI getURI()
+ {
+ return uri;
+ }
+
+ @Override
+ public HttpHeaders getHeaders()
+ {
+ return headers;
+ }
+
+ @Override
+ public OutputStream getBody() throws IOException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+ }
+
+
+ class MockClientHttpResponse implements ClientHttpResponse
+ {
+ @Override
+ public HttpStatus getStatusCode() throws IOException
+ {
+ return status;
+ }
+
+ @Override
+ public int getRawStatusCode() throws IOException
+ {
+ return status.value();
+ }
+
+ @Override
+ public String getStatusText() throws IOException
+ {
+ return status.getReasonPhrase();
+ }
+
+ @Override
+ public void close()
+ {
+ }
+
+ @Override
+ public InputStream getBody() throws IOException
+ {
+ return new ByteArrayInputStream(body.getBytes(StandardCharsets.UTF_8));
+ }
+
+ @Override
+ public HttpHeaders getHeaders()
+ {
+ return headers;
+ }
+ }
+}