d5b24c34d6956d0eb1e01e669940788f5e61b3ce
[facebook-errors] / src / test / java / de / juplo / facebook / errors / MockClientHttpRequestFactory.java
1 package de.juplo.facebook.errors;
2
3
4 import java.io.ByteArrayInputStream;
5 import java.io.IOException;
6 import java.io.InputStream;
7 import java.io.OutputStream;
8 import java.net.URI;
9 import java.nio.charset.StandardCharsets;
10 import org.slf4j.Logger;
11 import org.slf4j.LoggerFactory;
12 import org.springframework.http.HttpHeaders;
13 import org.springframework.http.HttpMethod;
14 import org.springframework.http.HttpStatus;
15 import org.springframework.http.client.ClientHttpRequest;
16 import org.springframework.http.client.ClientHttpRequestFactory;
17 import org.springframework.http.client.ClientHttpResponse;
18
19
20
21 /**
22  *
23  * @author kai
24  */
25 public class MockClientHttpRequestFactory implements ClientHttpRequestFactory
26 {
27   private static final Logger log =
28       LoggerFactory.getLogger(MockClientHttpRequestFactory.class);
29
30   private HttpStatus status = HttpStatus.OK;
31   private HttpHeaders headers = new HttpHeaders();
32   private String body = "";
33
34
35   @Override
36   public ClientHttpRequest createRequest(URI uri, HttpMethod method) throws IOException
37   {
38     return new MockClientHttpRequest(uri, method);
39   }
40
41   public void setStatus(HttpStatus status)
42   {
43     this.status = status;
44   }
45
46   public void setHeaders(HttpHeaders headers)
47   {
48     this.headers = headers;
49   }
50
51   public void addHeader(String name, String value)
52   {
53     headers.add(name, value);
54   }
55
56   public void setBody(String body)
57   {
58     log.trace(body);
59     this.body = body;
60   }
61
62
63   class MockClientHttpRequest implements ClientHttpRequest
64   {
65     private final URI uri;
66     private final HttpMethod method;
67
68
69     public MockClientHttpRequest(URI uri, HttpMethod method)
70     {
71       this.uri = uri;
72       this.method = method;
73     }
74
75
76     @Override
77     public ClientHttpResponse execute() throws IOException
78     {
79       return new MockClientHttpResponse();
80     }
81
82     @Override
83     public HttpMethod getMethod()
84     {
85       return method;
86     }
87
88     @Override
89     public URI getURI()
90     {
91       return uri;
92     }
93
94     @Override
95     public HttpHeaders getHeaders()
96     {
97       return headers;
98     }
99
100     @Override
101     public OutputStream getBody() throws IOException
102     {
103       throw new UnsupportedOperationException("Not supported yet.");
104     }
105   }
106
107
108   class MockClientHttpResponse implements ClientHttpResponse
109   {
110     @Override
111     public HttpStatus getStatusCode() throws IOException
112     {
113       return status;
114     }
115
116     @Override
117     public int getRawStatusCode() throws IOException
118     {
119       return status.value();
120     }
121
122     @Override
123     public String getStatusText() throws IOException
124     {
125       return status.getReasonPhrase();
126     }
127
128     @Override
129     public void close()
130     {
131     }
132
133     @Override
134     public InputStream getBody() throws IOException
135     {
136       return new ByteArrayInputStream(body.getBytes(StandardCharsets.UTF_8));
137     }
138
139     @Override
140     public HttpHeaders getHeaders()
141     {
142       return headers;
143     }
144   }
145 }