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

Last change on this file since 17360 was 17275, checked in by Don-vip, 3 years ago

see #16567 - upgrade almost all tests to JUnit 5, except those depending on WiremockRule

See https://github.com/tomakehurst/wiremock/issues/684

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