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