source: josm/trunk/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandlerTest.java@ 12558

Last change on this file since 12558 was 12558, checked in by Don-vip, 7 years ago

see #15102 - unit tests update

  • Property svn:eol-style set to native
File size: 5.4 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.io.remotecontrol.handler;
3
4import static org.junit.Assert.assertEquals;
5
6import java.util.Collections;
7import java.util.HashMap;
8import java.util.Map;
9
10import org.junit.Rule;
11import org.junit.Test;
12import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
13import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler.RequestHandlerBadRequestException;
14import org.openstreetmap.josm.testutils.JOSMTestRules;
15
16import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
17
18/**
19 * Unit tests of {@link RequestHandler} class.
20 */
21public class RequestHandlerTest {
22
23 /**
24 * Setup test.
25 */
26 @Rule
27 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
28 public JOSMTestRules test = new JOSMTestRules();
29
30 Map<String, String> getRequestParameter(String url) throws RequestHandlerBadRequestException {
31 final RequestHandler req = new RequestHandler() {
32 @Override
33 protected void validateRequest() throws RequestHandlerBadRequestException {
34 }
35
36 @Override
37 protected void handleRequest() throws RequestHandlerErrorException, RequestHandlerBadRequestException {
38 }
39
40 @Override
41 public String getPermissionMessage() {
42 return null;
43 }
44
45 @Override
46 public PermissionPrefWithDefault getPermissionPref() {
47 return null;
48 }
49
50 @Override
51 public String[] getMandatoryParams() {
52 return new String[0];
53 }
54 };
55 req.setUrl(url);
56 return req.args;
57 }
58
59 /**
60 * Test request parameter - case 1
61 * @throws RequestHandlerBadRequestException never
62 */
63 @Test
64 public void testRequestParameter1() throws RequestHandlerBadRequestException {
65 final Map<String, String> expected = new HashMap<>();
66 expected.put("query", "a");
67 expected.put("b", "=c");
68 assertEquals(expected, getRequestParameter("http://example.com/?query=a&b==c"));
69 }
70
71 /**
72 * Test request parameter - case 2
73 * @throws RequestHandlerBadRequestException never
74 */
75 @Test
76 public void testRequestParameter2() throws RequestHandlerBadRequestException {
77 assertEquals(Collections.singletonMap("query", "a&b==c"),
78 getRequestParameter("http://example.com/?query=a%26b==c"));
79 }
80
81 /**
82 * Test request parameter - case 3
83 * @throws RequestHandlerBadRequestException never
84 */
85 @Test
86 public void testRequestParameter3() throws RequestHandlerBadRequestException {
87 assertEquals(Collections.singleton("blue+light blue"),
88 getRequestParameter("http://example.com/blue+light%20blue?blue%2Blight+blue").keySet());
89 }
90
91 /**
92 * Test request parameter - case 4
93 * @see <a href="http://blog.lunatech.com/2009/02/03/what-every-web-developer-must-know-about-url-encoding">
94 * What every web developer must know about URL encoding</a>
95 * @throws RequestHandlerBadRequestException never
96 */
97 @Test
98 public void testRequestParameter4() throws RequestHandlerBadRequestException {
99 assertEquals(Collections.singletonMap("/?:@-._~!$'()* ,;", "/?:@-._~!$'()* ,;=="), getRequestParameter(
100 "http://example.com/:@-._~!$&'()*+,=;:@-._~!$&'()*+,=:@-._~!$&'()*+,==?/?:@-._~!$'()*+,;=/?:@-._~!$'()*+,;==#/?:@-._~!$&'()*+,;="
101 ));
102 }
103
104 /**
105 * Test request parameter - case 5
106 * @throws RequestHandlerBadRequestException never
107 */
108 @Test
109 public void testRequestParameter5() throws RequestHandlerBadRequestException {
110 final Map<String, String> expected = new HashMap<>();
111 expected.put("space", " ");
112 expected.put("tab", "\t");
113 assertEquals(expected, getRequestParameter("http://example.com/?space=%20&tab=%09"));
114 }
115
116 /**
117 * Test request parameter - case 6
118 * @throws RequestHandlerBadRequestException never
119 */
120 @Test
121 public void testRequestParameter6() throws RequestHandlerBadRequestException {
122 final Map<String, String> expected = new HashMap<>();
123 expected.put("addtags", "wikipedia:de=Weiße_Gasse|maxspeed=5");
124 expected.put("select", "way23071688,way23076176,way23076177,");
125 expected.put("left", "13.739727546842");
126 expected.put("right", "13.740890970188");
127 expected.put("top", "51.049987191025");
128 expected.put("bottom", "51.048466954325");
129 assertEquals(expected, getRequestParameter("http://localhost:8111/load_and_zoom"+
130 "?addtags=wikipedia%3Ade=Wei%C3%9Fe_Gasse%7Cmaxspeed=5"+
131 "&select=way23071688,way23076176,way23076177,"+
132 "&left=13.739727546842&right=13.740890970188&top=51.049987191025&bottom=51.048466954325"));
133 }
134
135 /**
136 * Test request parameter - invalid case
137 * @throws RequestHandlerBadRequestException always
138 */
139 @Test(expected = RequestHandlerBadRequestException.class)
140 public void testRequestParameterInvalid() throws RequestHandlerBadRequestException {
141 getRequestParameter("http://localhost:8111/load_and_zoom"+
142 "?addtags=wikipedia:de=Wei%C3%9Fe_Gasse|maxspeed=5"+
143 "&select=way23071688,way23076176,way23076177,"+
144 "&left=13.739727546842&right=13.740890970188&top=51.049987191025&bottom=51.048466954325");
145 }
146}
Note: See TracBrowser for help on using the repository browser.