1   /*
2    * Copyright 2004-2010 the Seasar Foundation and the Others.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13   * either express or implied. See the License for the specific language
14   * governing permissions and limitations under the License.
15   */
16  
17  package org.seasar.cubby.controller.impl;
18  
19  import static org.easymock.EasyMock.createMock;
20  import static org.easymock.EasyMock.expect;
21  import static org.easymock.EasyMock.replay;
22  import static org.easymock.EasyMock.verify;
23  import static org.junit.Assert.assertEquals;
24  import static org.junit.Assert.assertTrue;
25  
26  import java.util.HashMap;
27  import java.util.Map;
28  
29  import javax.servlet.http.HttpServletRequest;
30  
31  import org.junit.Test;
32  import org.seasar.cubby.controller.impl.DefaultRequestParser;
33  
34  public class DefaultRequestParserImplTest {
35  
36  	public DefaultRequestParser requestParser = new DefaultRequestParser();
37  
38  	@Test
39  	public void getEmptyParameterMap() {
40  		HttpServletRequest request = createMock(HttpServletRequest.class);
41  		Map<String, String[]> requestParameterMap = new HashMap<String, String[]>();
42  		expect(request.getParameterMap()).andReturn(requestParameterMap);
43  		replay(request);
44  
45  		Map<String, Object[]> parameterMap = requestParser
46  				.getParameterMap(request);
47  		assertEquals("parameterMap.size()", 0, parameterMap.size());
48  		verify(request);
49  	}
50  
51  	@Test
52  	public void getParameterMap() throws Throwable {
53  		HttpServletRequest request = createMock(HttpServletRequest.class);
54  		Map<String, String[]> requestParameterMap = new HashMap<String, String[]>();
55  		requestParameterMap.put("a", new String[] { "12345" });
56  		requestParameterMap.put("b", new String[] { "abc", "def" });
57  		expect(request.getParameterMap()).andReturn(requestParameterMap);
58  		replay(request);
59  
60  		Map<String, Object[]> parameterMap = requestParser
61  				.getParameterMap(request);
62  		assertEquals("parameterMap.size()", 2, parameterMap.size());
63  		Object[] a = parameterMap.get("a");
64  		assertEquals("a.length", 1, a.length);
65  		assertEquals("a[0]", "12345", a[0]);
66  		Object[] b = parameterMap.get("b");
67  		assertEquals("b.length", 2, b.length);
68  		assertEquals("b[0]", "abc", b[0]);
69  		assertEquals("b[1]", "def", b[1]);
70  		verify(request);
71  	}
72  
73  	@Test
74  	public void isParsable1() {
75  		HttpServletRequest request = createMock(HttpServletRequest.class);
76  		expect(request.getContentType()).andReturn(
77  				"application/x-www-form-urlencoded").anyTimes();
78  		replay(request);
79  		assertTrue(requestParser.isParsable(request));
80  		verify(request);
81  	}
82  
83  	@Test
84  	public void isParsable2() {
85  		HttpServletRequest request = createMock(HttpServletRequest.class);
86  		expect(request.getContentType()).andReturn("multipart/form-data")
87  				.anyTimes();
88  		replay(request);
89  		assertTrue(requestParser.isParsable(request));
90  		verify(request);
91  	}
92  
93  	@Test
94  	public void isParsable3() {
95  		HttpServletRequest request = createMock(HttpServletRequest.class);
96  		expect(request.getContentType()).andReturn("application/atom+xml")
97  				.anyTimes();
98  		replay(request);
99  		assertTrue(requestParser.isParsable(request));
100 		verify(request);
101 	}
102 
103 }