forked from OpenFeign/feign
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUriUtilsTest.java
More file actions
67 lines (60 loc) · 2.66 KB
/
Copy pathUriUtilsTest.java
File metadata and controls
67 lines (60 loc) · 2.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*
* Copyright © 2012 The Feign Authors (feign@commonhaus.dev)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package feign.template;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.stream.Stream;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
class UriUtilsTest {
/** pct-encode a String, ensuring that all reserved characters are encoded. */
@Test
void pctEncode() {
String queryParameterValue = "firstName=James;lastName=Bond;location=England&Britain?";
assertThat(UriUtils.encode(queryParameterValue, UTF_8))
.isEqualToIgnoringCase(
"firstName%3DJames%3BlastName%3DBond%3Blocation%3DEngland%26Britain%3F");
}
/** pct-encode preserving reserved characters. */
@Test
void pctEncodeWithReservedCharacters() {
String withReserved = "/api/user@host:port#section[a-z]/data";
String encoded = UriUtils.encode(withReserved, UTF_8, true);
assertThat(encoded).isEqualTo("/api/user@host:port#section[a-z]/data");
}
@ParameterizedTest
@MethodSource("provideValuesToEncode")
void testVariousEncodingScenarios(String input, String expected) {
assertThat(UriUtils.encode(input, UTF_8)).isEqualTo(expected);
}
private static Stream<Arguments> provideValuesToEncode() {
return Stream.of(
Arguments.of("foo", "foo"),
Arguments.of("foo bar", "foo%20bar"),
Arguments.of("foo%20bar", "foo%20bar"),
Arguments.of("foo%2520bar", "foo%2520bar"),
Arguments.of("foo&bar", "foo%26bar"),
Arguments.of("foo& bar", "foo%26%20bar"),
Arguments.of("foo = bar", "foo%20%3D%20bar"),
Arguments.of("foo ", "foo%20%20%20"),
Arguments.of("foo/bar", "foo%2Fbar"),
Arguments.of(
"foo!\"/$%?& *( ) _%20^¨ >`:É. ',. é ;`^ ¸< nasty stuff here!",
"foo%21%22%2F%24%25%3F%26%20%20%20%2A%28%20%29%20%20_%2520%5E%C2%A8%20%20%3E%60%3A%C3%89.%20%20%20%27%2C.%20%20%C3%A9%20%3B%60%5E%20%C2%B8%3C%20nasty%20stuff%20here%21"));
}
}