1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.seasar.cubby.spi.impl;
18
19 import static org.easymock.EasyMock.createMock;
20 import static org.easymock.EasyMock.expect;
21 import static org.easymock.EasyMock.*;
22 import static org.junit.Assert.*;
23
24 import java.util.Arrays;
25 import java.util.Collection;
26 import java.util.HashMap;
27 import java.util.List;
28 import java.util.Map;
29
30 import javax.servlet.http.HttpServletRequest;
31
32 import org.junit.Test;
33 import org.seasar.cubby.controller.RequestParser;
34 import org.seasar.cubby.controller.impl.DefaultRequestParser;
35 import org.seasar.cubby.spi.RequestParserProvider;
36 import org.seasar.cubby.spi.impl.AbstractRequestParserProvider;
37
38 public class AbstractRequestParserProviderTest {
39
40 private RequestParserProvider provider = new AbstractRequestParserProvider() {
41
42 private List<RequestParser> parsers = Arrays
43 .asList(new RequestParser[] { new MyRequestParserImpl(),
44 new DefaultRequestParser() });
45
46 @Override
47 protected Collection<RequestParser> getRequestParsers() {
48 return parsers;
49 }
50
51 };
52
53 @Test
54 public void testSelect1() {
55 Map<String, Object[]> parameterMap = new HashMap<String, Object[]>();
56 HttpServletRequest request = createMock(HttpServletRequest.class);
57 expect(request.getContentType()).andStubReturn(null);
58 expect(request.getParameterMap()).andStubReturn(parameterMap);
59 replay(request);
60 assertEquals(parameterMap, provider.getParameterMap(request));
61 verify(request);
62 }
63
64 @Test
65 public void testSelect2() {
66 Map<String, Object[]> parameterMap = new HashMap<String, Object[]>();
67 HttpServletRequest request = createMock(HttpServletRequest.class);
68 expect(request.getContentType()).andStubReturn(
69 "application/x-www-form-urlencoded");
70 expect(request.getParameterMap()).andStubReturn(parameterMap);
71 replay(request);
72 assertEquals(parameterMap, provider.getParameterMap(request));
73 verify(request);
74 }
75
76 @Test
77 public void testSelect4() {
78 Map<String, Object[]> parameterMap = new HashMap<String, Object[]>();
79 HttpServletRequest request = createMock(HttpServletRequest.class);
80 expect(request.getContentType()).andStubReturn("application/atom+xml");
81 expect(request.getParameterMap()).andStubReturn(parameterMap);
82 replay(request);
83 assertEquals(parameterMap, provider.getParameterMap(request));
84 verify(request);
85 }
86
87 @Test
88 public void testSelect5() {
89 HttpServletRequest request = createMock(HttpServletRequest.class);
90 expect(request.getContentType()).andStubReturn("foo/bar");
91 replay(request);
92 assertEquals(MY_REQUEST_PARSER_PARAMETER_MAP, provider
93 .getParameterMap(request));
94 verify(request);
95 }
96
97 private static Map<String, Object[]> MY_REQUEST_PARSER_PARAMETER_MAP;
98 static {
99 Map<String, Object[]> map = new HashMap<String, Object[]>();
100 map.put("abc", new Object[] { "def" });
101 MY_REQUEST_PARSER_PARAMETER_MAP = map;
102 }
103
104 private static class MyRequestParserImpl implements RequestParser {
105
106 public Map<String, Object[]> getParameterMap(HttpServletRequest request) {
107 return MY_REQUEST_PARSER_PARAMETER_MAP;
108 }
109
110 public boolean isParsable(HttpServletRequest request) {
111 String contentType = request.getContentType();
112 return contentType != null && contentType.startsWith("foo/");
113 }
114
115 }
116 }