Merge branch '5.3.x'
This commit is contained in:
commit
912bb16e44
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2019 the original author or authors.
|
* Copyright 2002-2022 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -16,8 +16,12 @@
|
||||||
|
|
||||||
package org.springframework.web.util;
|
package org.springframework.web.util;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import org.springframework.http.HttpMethod;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.util.FileCopyUtils;
|
import org.springframework.util.FileCopyUtils;
|
||||||
import org.springframework.web.testfixture.servlet.MockHttpServletRequest;
|
import org.springframework.web.testfixture.servlet.MockHttpServletRequest;
|
||||||
|
|
||||||
|
@ -29,16 +33,22 @@ import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
|
||||||
*/
|
*/
|
||||||
public class ContentCachingRequestWrapperTests {
|
public class ContentCachingRequestWrapperTests {
|
||||||
|
|
||||||
protected static final String FORM_CONTENT_TYPE = "application/x-www-form-urlencoded";
|
protected static final String FORM_CONTENT_TYPE = MediaType.APPLICATION_FORM_URLENCODED_VALUE;
|
||||||
|
|
||||||
protected static final String CHARSET = "UTF-8";
|
protected static final String CHARSET = StandardCharsets.UTF_8.name();
|
||||||
|
|
||||||
|
protected static final String GET = HttpMethod.GET.name();
|
||||||
|
|
||||||
|
protected static final String POST = HttpMethod.POST.name();
|
||||||
|
|
||||||
|
protected static final int CONTENT_CACHE_LIMIT = 3;
|
||||||
|
|
||||||
private final MockHttpServletRequest request = new MockHttpServletRequest();
|
private final MockHttpServletRequest request = new MockHttpServletRequest();
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void cachedContent() throws Exception {
|
void cachedContent() throws Exception {
|
||||||
this.request.setMethod("GET");
|
this.request.setMethod(GET);
|
||||||
this.request.setCharacterEncoding(CHARSET);
|
this.request.setCharacterEncoding(CHARSET);
|
||||||
this.request.setContent("Hello World".getBytes(CHARSET));
|
this.request.setContent("Hello World".getBytes(CHARSET));
|
||||||
|
|
||||||
|
@ -48,24 +58,24 @@ public class ContentCachingRequestWrapperTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void cachedContentWithLimit() throws Exception {
|
void cachedContentWithLimit() throws Exception {
|
||||||
this.request.setMethod("GET");
|
this.request.setMethod(GET);
|
||||||
this.request.setCharacterEncoding(CHARSET);
|
this.request.setCharacterEncoding(CHARSET);
|
||||||
this.request.setContent("Hello World".getBytes(CHARSET));
|
this.request.setContent("Hello World".getBytes(CHARSET));
|
||||||
|
|
||||||
ContentCachingRequestWrapper wrapper = new ContentCachingRequestWrapper(this.request, 3);
|
ContentCachingRequestWrapper wrapper = new ContentCachingRequestWrapper(this.request, CONTENT_CACHE_LIMIT);
|
||||||
byte[] response = FileCopyUtils.copyToByteArray(wrapper.getInputStream());
|
byte[] response = FileCopyUtils.copyToByteArray(wrapper.getInputStream());
|
||||||
assertThat(response).isEqualTo("Hello World".getBytes(CHARSET));
|
assertThat(response).isEqualTo("Hello World".getBytes(CHARSET));
|
||||||
assertThat(wrapper.getContentAsByteArray()).isEqualTo("Hel".getBytes(CHARSET));
|
assertThat(wrapper.getContentAsByteArray()).isEqualTo("Hel".getBytes(CHARSET));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void cachedContentWithOverflow() throws Exception {
|
void cachedContentWithOverflow() throws Exception {
|
||||||
this.request.setMethod("GET");
|
this.request.setMethod(GET);
|
||||||
this.request.setCharacterEncoding(CHARSET);
|
this.request.setCharacterEncoding(CHARSET);
|
||||||
this.request.setContent("Hello World".getBytes(CHARSET));
|
this.request.setContent("Hello World".getBytes(CHARSET));
|
||||||
|
|
||||||
ContentCachingRequestWrapper wrapper = new ContentCachingRequestWrapper(this.request, 3) {
|
ContentCachingRequestWrapper wrapper = new ContentCachingRequestWrapper(this.request, CONTENT_CACHE_LIMIT) {
|
||||||
@Override
|
@Override
|
||||||
protected void handleContentOverflow(int contentCacheLimit) {
|
protected void handleContentOverflow(int contentCacheLimit) {
|
||||||
throw new IllegalStateException(String.valueOf(contentCacheLimit));
|
throw new IllegalStateException(String.valueOf(contentCacheLimit));
|
||||||
|
@ -78,8 +88,8 @@ public class ContentCachingRequestWrapperTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void requestParams() throws Exception {
|
void requestParams() throws Exception {
|
||||||
this.request.setMethod("POST");
|
this.request.setMethod(POST);
|
||||||
this.request.setContentType(FORM_CONTENT_TYPE);
|
this.request.setContentType(FORM_CONTENT_TYPE);
|
||||||
this.request.setCharacterEncoding(CHARSET);
|
this.request.setCharacterEncoding(CHARSET);
|
||||||
this.request.setParameter("first", "value");
|
this.request.setParameter("first", "value");
|
||||||
|
@ -94,8 +104,8 @@ public class ContentCachingRequestWrapperTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // SPR-12810
|
@Test // SPR-12810
|
||||||
public void inputStreamFormPostRequest() throws Exception {
|
void inputStreamFormPostRequest() throws Exception {
|
||||||
this.request.setMethod("POST");
|
this.request.setMethod(POST);
|
||||||
this.request.setContentType(FORM_CONTENT_TYPE);
|
this.request.setContentType(FORM_CONTENT_TYPE);
|
||||||
this.request.setCharacterEncoding(CHARSET);
|
this.request.setCharacterEncoding(CHARSET);
|
||||||
this.request.setParameter("first", "value");
|
this.request.setParameter("first", "value");
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2020 the original author or authors.
|
* Copyright 2002-2022 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -44,7 +44,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||||
public class WebUtilsTests {
|
public class WebUtilsTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void findParameterValue() {
|
void findParameterValue() {
|
||||||
Map<String, Object> params = new HashMap<>();
|
Map<String, Object> params = new HashMap<>();
|
||||||
params.put("myKey1", "myValue1");
|
params.put("myKey1", "myValue1");
|
||||||
params.put("myKey2_myValue2", "xxx");
|
params.put("myKey2_myValue2", "xxx");
|
||||||
|
@ -59,7 +59,7 @@ public class WebUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void parseMatrixVariablesString() {
|
void parseMatrixVariablesString() {
|
||||||
MultiValueMap<String, String> variables;
|
MultiValueMap<String, String> variables;
|
||||||
|
|
||||||
variables = WebUtils.parseMatrixVariables(null);
|
variables = WebUtils.parseMatrixVariables(null);
|
||||||
|
@ -102,7 +102,7 @@ public class WebUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isValidOrigin() {
|
void isValidOrigin() {
|
||||||
List<String> allowed = Collections.emptyList();
|
List<String> allowed = Collections.emptyList();
|
||||||
assertThat(checkValidOrigin("mydomain1.example", -1, "http://mydomain1.example", allowed)).isTrue();
|
assertThat(checkValidOrigin("mydomain1.example", -1, "http://mydomain1.example", allowed)).isTrue();
|
||||||
assertThat(checkValidOrigin("mydomain1.example", -1, "http://mydomain2.example", allowed)).isFalse();
|
assertThat(checkValidOrigin("mydomain1.example", -1, "http://mydomain2.example", allowed)).isFalse();
|
||||||
|
@ -116,7 +116,7 @@ public class WebUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isSameOrigin() {
|
void isSameOrigin() {
|
||||||
assertThat(checkSameOrigin("http", "mydomain1.example", -1, "http://mydomain1.example")).isTrue();
|
assertThat(checkSameOrigin("http", "mydomain1.example", -1, "http://mydomain1.example")).isTrue();
|
||||||
assertThat(checkSameOrigin("http", "mydomain1.example", -1, "http://mydomain1.example:80")).isTrue();
|
assertThat(checkSameOrigin("http", "mydomain1.example", -1, "http://mydomain1.example:80")).isTrue();
|
||||||
assertThat(checkSameOrigin("https", "mydomain1.example", 443, "https://mydomain1.example")).isTrue();
|
assertThat(checkSameOrigin("https", "mydomain1.example", 443, "https://mydomain1.example")).isTrue();
|
||||||
|
@ -155,7 +155,7 @@ public class WebUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // SPR-16262
|
@Test // SPR-16262
|
||||||
public void isSameOriginWithXForwardedHeaders() throws Exception {
|
void isSameOriginWithXForwardedHeaders() throws Exception {
|
||||||
String server = "mydomain1.example";
|
String server = "mydomain1.example";
|
||||||
testWithXForwardedHeaders(server, -1, "https", null, -1, "https://mydomain1.example");
|
testWithXForwardedHeaders(server, -1, "https", null, -1, "https://mydomain1.example");
|
||||||
testWithXForwardedHeaders(server, 123, "https", null, -1, "https://mydomain1.example");
|
testWithXForwardedHeaders(server, 123, "https", null, -1, "https://mydomain1.example");
|
||||||
|
@ -166,7 +166,7 @@ public class WebUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // SPR-16262
|
@Test // SPR-16262
|
||||||
public void isSameOriginWithForwardedHeader() throws Exception {
|
void isSameOriginWithForwardedHeader() throws Exception {
|
||||||
String server = "mydomain1.example";
|
String server = "mydomain1.example";
|
||||||
testWithForwardedHeader(server, -1, "proto=https", "https://mydomain1.example");
|
testWithForwardedHeader(server, -1, "proto=https", "https://mydomain1.example");
|
||||||
testWithForwardedHeader(server, 123, "proto=https", "https://mydomain1.example");
|
testWithForwardedHeader(server, 123, "proto=https", "https://mydomain1.example");
|
||||||
|
|
Loading…
Reference in New Issue