1
2
3
4
5
6
7 package org.mule.transport.servlet;
8
9 import org.mule.api.transport.Connector;
10 import org.mule.transport.AbstractConnectorTestCase;
11
12 import java.io.BufferedReader;
13 import java.io.ByteArrayInputStream;
14 import java.io.IOException;
15 import java.io.StringReader;
16 import java.lang.reflect.InvocationHandler;
17 import java.lang.reflect.Method;
18 import java.lang.reflect.Proxy;
19 import java.util.HashMap;
20 import java.util.Hashtable;
21 import java.util.Map;
22
23 import javax.servlet.ServletInputStream;
24 import javax.servlet.http.HttpServletRequest;
25
26 public class ServletConnectorTestCase extends AbstractConnectorTestCase
27 {
28 @Override
29 public Connector createConnector() throws Exception
30 {
31 ServletConnector c = new ServletConnector(muleContext);
32 c.setName("test");
33 return c;
34 }
35
36 @Override
37 public String getTestEndpointURI()
38 {
39 return "servlet://testServlet";
40 }
41
42 @Override
43 public Object getValidMessage() throws Exception
44 {
45 return getMockRequest("test message");
46 }
47
48 private HttpServletRequest getMockRequest(final String message)
49 {
50 Object proxy = Proxy.newProxyInstance(ServletConnectorTestCase.class.getClassLoader(),
51 new Class[]{ HttpServletRequest.class }, new InvocationHandler()
52 {
53 private String payload = message;
54 private Map<Object, Object> props = new HashMap<Object, Object>();
55
56 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
57 {
58 if ("getInputStream".equals(method.getName()))
59 {
60 ServletInputStream s = new ServletInputStream()
61 {
62 ByteArrayInputStream is = new ByteArrayInputStream(payload.getBytes());
63
64 @Override
65 public int read() throws IOException
66 {
67 return is.read();
68 }
69 };
70 return s;
71 }
72 else if ("getAttribute".equals(method.getName()))
73 {
74 return props.get(args[0]);
75 }
76 else if ("setAttribute".equals(method.getName()))
77 {
78 props.put(args[0], args[1]);
79 }
80 else if ("equals".equals(method.getName()))
81 {
82 return Boolean.valueOf(payload.equals(args[0].toString()));
83 }
84 else if ("toString".equals(method.getName()))
85 {
86 return payload;
87 }
88 else if ("getReader".equals(method.getName()))
89 {
90 return new BufferedReader(new StringReader(payload.toString()));
91 }
92 else if ("getAttributeNames".equals(method.getName()))
93 {
94 return new Hashtable<Object, Object>().elements();
95 }
96 else if ("getHeaderNames".equals(method.getName()))
97 {
98 return new Hashtable<Object, Object>().elements();
99 }
100 return null;
101 }
102 }
103 );
104 return (HttpServletRequest) proxy;
105 }
106
107 @Override
108 public void testConnectorMessageDispatcherFactory() throws Exception
109 {
110
111 }
112
113 public void testConnectorMessageDispatcher() throws Exception
114 {
115
116 }
117 }