Skip to content

Commit fdbba98

Browse files
committed
Initial commit.
1 parent e3608fe commit fdbba98

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package org.gitlab4j.api;
2+
3+
import java.io.ByteArrayInputStream;
4+
import java.io.InputStreamReader;
5+
import java.util.List;
6+
7+
import javax.ws.rs.core.GenericType;
8+
import javax.ws.rs.core.Response;
9+
10+
/**
11+
* This class can be used as a spy for Mockito to test the individual APIs getXxxxx() methods without the
12+
* need to have a GitLab server available.
13+
*
14+
* Supports getXxxxx() methods that return a List of items, single items, and Optional items.
15+
*/
16+
public abstract class FakeResponse extends Response {
17+
18+
private List<?> responseList;
19+
private ByteArrayInputStream responseInputStream;
20+
private Object responseItem;
21+
private int perPage = 20;
22+
23+
public <T> void init(Class<T> type, String itemFilename, String listFilename) throws Exception {
24+
25+
if (itemFilename != null) {
26+
InputStreamReader reader = new InputStreamReader(TestGitLabApiBeans.class.getResourceAsStream(itemFilename));
27+
responseItem = JsonUtils.unmarshal(type, reader);
28+
} else {
29+
responseItem = null;
30+
}
31+
32+
if (listFilename != null) {
33+
String listJson = JsonUtils.readResource(listFilename);
34+
responseList = (List<?>) JsonUtils.unmarshalList(type, listJson);
35+
responseInputStream = new ByteArrayInputStream(listJson.getBytes());
36+
} else {
37+
responseList = null;
38+
responseInputStream = null;
39+
}
40+
}
41+
42+
public void setPerPageHeaderValue(int perPage) {
43+
this.perPage = perPage;
44+
}
45+
46+
@SuppressWarnings("unchecked")
47+
@Override
48+
public <T> T readEntity(GenericType<T> entityType) {
49+
return ((T) responseList);
50+
}
51+
52+
@SuppressWarnings("unchecked")
53+
@Override
54+
public <T> T readEntity(Class<T> classType) {
55+
return ((T) responseItem);
56+
}
57+
58+
@Override
59+
public Object getEntity() {
60+
if (responseInputStream == null) {
61+
return (null);
62+
}
63+
64+
responseInputStream.reset();
65+
return (responseInputStream);
66+
}
67+
68+
@Override
69+
public String getHeaderString(String name) {
70+
switch (name) {
71+
case Constants.PER_PAGE:
72+
return (responseList != null ? Integer.toString(perPage) : "0");
73+
74+
case Constants.TOTAL_PAGES_HEADER:
75+
return (responseList != null ? Integer.toString((int)Math.ceil((double)responseList.size() / 20.0)) : "0");
76+
77+
case Constants.TOTAL_HEADER:
78+
return (responseList != null ? Integer.toString(responseList.size()) : "0");
79+
80+
default:
81+
return (null);
82+
}
83+
}
84+
85+
@Override
86+
public int getStatus() {
87+
return (200);
88+
}
89+
}

0 commit comments

Comments
 (0)