Browse Source

Polishing in HttpRequestValues and tests

See gh-30520
pull/30619/head
rstoyanchev 3 years ago
parent
commit
f1594312cd
  1. 4
      spring-web/src/main/java/org/springframework/web/service/invoker/HttpRequestValues.java
  2. 18
      spring-web/src/test/java/org/springframework/web/service/invoker/HttpRequestValuesTests.java
  3. 2
      spring-web/src/test/java/org/springframework/web/service/invoker/RequestPartArgumentResolverTests.java

4
spring-web/src/main/java/org/springframework/web/service/invoker/HttpRequestValues.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2022 the original author or authors.
* Copyright 2002-2023 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -400,12 +400,14 @@ public final class HttpRequestValues { @@ -400,12 +400,14 @@ public final class HttpRequestValues {
bodyValue = new LinkedMultiValueMap<>(this.requestParams);
}
else if (uri != null) {
// insert into prepared URI
uri = UriComponentsBuilder.fromUri(uri)
.queryParams(UriUtils.encodeQueryParams(this.requestParams))
.build(true)
.toUri();
}
else {
// append to URI template
uriVars = (uriVars.isEmpty() ? new HashMap<>() : uriVars);
uriTemplate = appendQueryParams(uriTemplate, uriVars, this.requestParams);
}

18
spring-web/src/test/java/org/springframework/web/service/invoker/HttpRequestValuesTests.java

@ -50,7 +50,7 @@ class HttpRequestValuesTests { @@ -50,7 +50,7 @@ class HttpRequestValuesTests {
@ParameterizedTest
@ValueSource(strings = {"POST", "PUT", "PATCH"})
@SuppressWarnings("unchecked")
void requestParamAsFormData(String httpMethod) {
void formData(String httpMethod) {
HttpRequestValues requestValues = HttpRequestValues.builder().setHttpMethod(HttpMethod.valueOf(httpMethod))
.setContentType(MediaType.APPLICATION_FORM_URLENCODED)
@ -65,7 +65,7 @@ class HttpRequestValuesTests { @@ -65,7 +65,7 @@ class HttpRequestValuesTests {
}
@Test
void requestParamAsQueryParamsInUriTemplate() {
void queryParamsWithUriTemplate() {
HttpRequestValues requestValues = HttpRequestValues.builder().setHttpMethod(HttpMethod.POST)
.setUriTemplate("/path")
@ -99,23 +99,25 @@ class HttpRequestValuesTests { @@ -99,23 +99,25 @@ class HttpRequestValuesTests {
}
@Test
void requestParamAsQueryParamsInUri() {
void queryParamsWithPreparedUri() {
URI uri = URI.create("/my%20path");
HttpRequestValues requestValues = HttpRequestValues.builder().setHttpMethod(HttpMethod.POST)
.setUri(URI.create("/path"))
.setUri(uri)
.addRequestParameter("param1", "1st value")
.addRequestParameter("param2", "2nd value A", "2nd value B")
.build();
assertThat(requestValues.getUri().toString())
.isEqualTo("/path?param1=1st%20value&param2=2nd%20value%20A&param2=2nd%20value%20B");
.isEqualTo("/my%20path?param1=1st%20value&param2=2nd%20value%20A&param2=2nd%20value%20B");
}
@Test
void requestPart() {
HttpHeaders entityHeaders = new HttpHeaders();
entityHeaders.add("foo", "bar");
HttpEntity<String> entity = new HttpEntity<>("body", entityHeaders);
HttpHeaders headers = new HttpHeaders();
headers.add("foo", "bar");
HttpEntity<String> entity = new HttpEntity<>("body", headers);
HttpRequestValues requestValues = HttpRequestValues.builder()
.addRequestPart("form field", "form value")

2
spring-web/src/test/java/org/springframework/web/service/invoker/RequestPartArgumentResolverTests.java

@ -65,9 +65,9 @@ class RequestPartArgumentResolverTests { @@ -65,9 +65,9 @@ class RequestPartArgumentResolverTests {
Object body = this.client.getRequestValues().getBodyValue();
assertThat(body).isInstanceOf(MultiValueMap.class);
@SuppressWarnings("unchecked")
MultiValueMap<String, HttpEntity<?>> map = (MultiValueMap<String, HttpEntity<?>>) body;
assertThat(map.getFirst("part1").getBody()).isEqualTo("part 1");
assertThat(map.getFirst("part2")).isEqualTo(part2);
assertThat(((Mono<?>) map.getFirst("part3").getBody()).block()).isEqualTo("part 3");

Loading…
Cancel
Save