1   package org.seasar.cubby.controller.impl;
2   
3   import java.util.Map;
4   
5   import javax.servlet.http.HttpServletRequest;
6   
7   import org.seasar.cubby.controller.RequestParser;
8   import org.seasar.cubby.controller.RequestParserSelector;
9   import org.seasar.extension.unit.S2TestCase;
10  import org.seasar.framework.mock.servlet.MockHttpServletRequest;
11  
12  public class RequestParserSelectorImplTest extends S2TestCase {
13  
14  	public RequestParserSelector requestParserSelector;
15  
16  	@Override
17  	protected void setUp() throws Exception {
18  		super.setUp();
19  		include(this.getClass().getName().replaceAll("\\.", "/") + ".dicon");
20  	}
21  
22  	public void testSelect1() {
23  		MockHttpServletRequest request = getRequest();
24  		RequestParser requestParser = requestParserSelector.select(request);
25  		assertTrue(requestParser instanceof DefaultRequestParserImpl);
26  	}
27  
28  	public void testSelect2() {
29  		MockHttpServletRequest request = getRequest();
30  		request.setContentType("application/x-www-form-urlencoded");
31  		RequestParser requestParser = requestParserSelector.select(request);
32  		assertTrue(requestParser instanceof DefaultRequestParserImpl);
33  	}
34  
35  	public void testSelect3() {
36  		MockHttpServletRequest request = getRequest();
37  		request.setContentType("multipart/form-data");
38  		RequestParser requestParser = requestParserSelector.select(request);
39  		assertTrue(requestParser instanceof MultipartRequestParserImpl);
40  	}
41  
42  	public void testSelect4() {
43  		MockHttpServletRequest request = getRequest();
44  		request.setContentType("application/atom+xml");
45  		RequestParser requestParser = requestParserSelector.select(request);
46  		assertTrue(requestParser instanceof DefaultRequestParserImpl);
47  	}
48  
49  	public void testSelect5() {
50  		MockHttpServletRequest request = getRequest();
51  		request.setContentType("foo/bar");
52  		RequestParser requestParser = requestParserSelector.select(request);
53  		assertTrue(requestParser instanceof MyRequestParserImpl);
54  	}
55  
56  	public static class MyRequestParserImpl implements RequestParser {
57  
58  		private int priority;
59  
60  		public Map<String, Object[]> getParameterMap(HttpServletRequest request) {
61  			return null;
62  		}
63  
64  		public int getPriority() {
65  			return priority;
66  		}
67  
68  		public void setPriority(int priority) {
69  			this.priority = priority;
70  		}
71  
72  		public boolean isParsable(HttpServletRequest request) {
73  			return request.getContentType() != null
74  					&& request.getContentType().startsWith("foo/");
75  		}
76  
77  	}
78  }