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

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

tools update: checkstyle 8.44, spotbugs 4.2.3, proguard 7.1.1, error-prone 2.8.1

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