1 package net.jaekl.qd.http;
3 import java.io.ByteArrayInputStream;
4 import java.io.InputStream;
5 import java.io.UnsupportedEncodingException;
6 import java.util.ArrayList;
7 import java.util.HashMap;
9 import net.jaekl.qd.QDException;
10 import net.jaekl.qd.util.StringUtils;
12 import org.apache.http.NameValuePair;
13 import org.junit.Assert;
15 public class RequestBrokerMock extends RequestBroker {
16 private static class InputParams {
17 private String m_method;
18 private ArrayList<NameValuePair> m_passedParams;
20 public InputParams(String method, ArrayList<NameValuePair> passedParams) {
22 m_passedParams = new ArrayList<NameValuePair>();
23 for (NameValuePair nvp : passedParams) {
24 m_passedParams.add(nvp);
29 public boolean equals(Object obj) {
30 if (null == obj || !(obj instanceof InputParams)) {
33 InputParams other = (InputParams)obj;
34 if (! StringUtils.areEqual(m_method, other.m_method)) {
37 if (m_passedParams.size() != other.m_passedParams.size()) {
40 for (int i = 0; i < m_passedParams.size(); ++i) {
42 a = m_passedParams.get(i);
43 b = other.m_passedParams.get(i);
44 if ( ! a.equals(b) ) {
52 public int hashCode() {
54 int result = PRIME + m_method.hashCode();
55 for (NameValuePair nvp : m_passedParams) {
56 result *= (PRIME + nvp.hashCode());
62 HashMap<InputParams, Object> m_result;
64 public RequestBrokerMock(String gatewayUrl, ArrayList<NameValuePair> baseParams) {
65 super(gatewayUrl, baseParams);
66 m_result = new HashMap<InputParams, Object>();
69 public void setResult(String method, ArrayList<NameValuePair> passedParams, Object result) {
70 InputParams ip = new InputParams(method, passedParams);
71 m_result.put(ip, result);
75 InputStream doSubmit(String method, ArrayList<NameValuePair> passedParams) throws QDException
77 InputParams ip = new InputParams(method, passedParams);
78 Object result = m_result.get(ip);
81 Assert.fail("No result specified for given inputs.");
84 if (result instanceof QDException) {
85 throw (QDException)result;
88 Assert.assertTrue(result instanceof String);
90 InputStream is = null;
93 String output = (String)result;
94 is = new ByteArrayInputStream(output.getBytes("UTF-8"));
96 catch (UnsupportedEncodingException uee) {
97 throw new QDException(uee);