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

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

fix #21064 - Add JUnit 5 extension for preferences (patch by taylor.smock)

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