Fix compatibility problems with Spring Framework 6.2
Fixes gh-934
This commit is contained in:
@@ -86,6 +86,6 @@ components.java.withVariantsFromConfiguration(configurations.testFixturesRuntime
|
|||||||
compatibilityTest {
|
compatibilityTest {
|
||||||
dependency("Spring Framework") { springFramework ->
|
dependency("Spring Framework") { springFramework ->
|
||||||
springFramework.groupId = "org.springframework"
|
springFramework.groupId = "org.springframework"
|
||||||
springFramework.versions = ["6.1.+"]
|
springFramework.versions = ["6.1.+", "6.2.+"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,6 @@ dependencies {
|
|||||||
compatibilityTest {
|
compatibilityTest {
|
||||||
dependency("Spring Framework") { springFramework ->
|
dependency("Spring Framework") { springFramework ->
|
||||||
springFramework.groupId = "org.springframework"
|
springFramework.groupId = "org.springframework"
|
||||||
springFramework.versions = ["6.1.+"]
|
springFramework.versions = ["6.1.+", "6.2.+"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014-2023 the original author or authors.
|
* Copyright 2014-2024 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.
|
||||||
@@ -51,8 +51,8 @@ public abstract class RestDocumentationRequestBuilders {
|
|||||||
* @return the builder for the GET request
|
* @return the builder for the GET request
|
||||||
*/
|
*/
|
||||||
public static MockHttpServletRequestBuilder get(String urlTemplate, Object... urlVariables) {
|
public static MockHttpServletRequestBuilder get(String urlTemplate, Object... urlVariables) {
|
||||||
return MockMvcRequestBuilders.get(urlTemplate, urlVariables)
|
return (MockHttpServletRequestBuilder) configureUrlTemplateRequestAttribute(
|
||||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
MockMvcRequestBuilders.get(urlTemplate, urlVariables), urlTemplate);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -72,8 +72,8 @@ public abstract class RestDocumentationRequestBuilders {
|
|||||||
* @return the builder for the POST request
|
* @return the builder for the POST request
|
||||||
*/
|
*/
|
||||||
public static MockHttpServletRequestBuilder post(String urlTemplate, Object... urlVariables) {
|
public static MockHttpServletRequestBuilder post(String urlTemplate, Object... urlVariables) {
|
||||||
return MockMvcRequestBuilders.post(urlTemplate, urlVariables)
|
return (MockHttpServletRequestBuilder) configureUrlTemplateRequestAttribute(
|
||||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
MockMvcRequestBuilders.post(urlTemplate, urlVariables), urlTemplate);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -93,8 +93,8 @@ public abstract class RestDocumentationRequestBuilders {
|
|||||||
* @return the builder for the PUT request
|
* @return the builder for the PUT request
|
||||||
*/
|
*/
|
||||||
public static MockHttpServletRequestBuilder put(String urlTemplate, Object... urlVariables) {
|
public static MockHttpServletRequestBuilder put(String urlTemplate, Object... urlVariables) {
|
||||||
return MockMvcRequestBuilders.put(urlTemplate, urlVariables)
|
return (MockHttpServletRequestBuilder) configureUrlTemplateRequestAttribute(
|
||||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
MockMvcRequestBuilders.put(urlTemplate, urlVariables), urlTemplate);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -114,8 +114,8 @@ public abstract class RestDocumentationRequestBuilders {
|
|||||||
* @return the builder for the PATCH request
|
* @return the builder for the PATCH request
|
||||||
*/
|
*/
|
||||||
public static MockHttpServletRequestBuilder patch(String urlTemplate, Object... urlVariables) {
|
public static MockHttpServletRequestBuilder patch(String urlTemplate, Object... urlVariables) {
|
||||||
return MockMvcRequestBuilders.patch(urlTemplate, urlVariables)
|
return (MockHttpServletRequestBuilder) configureUrlTemplateRequestAttribute(
|
||||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
MockMvcRequestBuilders.patch(urlTemplate, urlVariables), urlTemplate);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -135,8 +135,8 @@ public abstract class RestDocumentationRequestBuilders {
|
|||||||
* @return the builder for the DELETE request
|
* @return the builder for the DELETE request
|
||||||
*/
|
*/
|
||||||
public static MockHttpServletRequestBuilder delete(String urlTemplate, Object... urlVariables) {
|
public static MockHttpServletRequestBuilder delete(String urlTemplate, Object... urlVariables) {
|
||||||
return MockMvcRequestBuilders.delete(urlTemplate, urlVariables)
|
return (MockHttpServletRequestBuilder) configureUrlTemplateRequestAttribute(
|
||||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
MockMvcRequestBuilders.delete(urlTemplate, urlVariables), urlTemplate);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -156,8 +156,8 @@ public abstract class RestDocumentationRequestBuilders {
|
|||||||
* @return the builder for the OPTIONS request
|
* @return the builder for the OPTIONS request
|
||||||
*/
|
*/
|
||||||
public static MockHttpServletRequestBuilder options(String urlTemplate, Object... urlVariables) {
|
public static MockHttpServletRequestBuilder options(String urlTemplate, Object... urlVariables) {
|
||||||
return MockMvcRequestBuilders.options(urlTemplate, urlVariables)
|
return (MockHttpServletRequestBuilder) configureUrlTemplateRequestAttribute(
|
||||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
MockMvcRequestBuilders.options(urlTemplate, urlVariables), urlTemplate);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -177,8 +177,8 @@ public abstract class RestDocumentationRequestBuilders {
|
|||||||
* @return the builder for the HEAD request
|
* @return the builder for the HEAD request
|
||||||
*/
|
*/
|
||||||
public static MockHttpServletRequestBuilder head(String urlTemplate, Object... urlVariables) {
|
public static MockHttpServletRequestBuilder head(String urlTemplate, Object... urlVariables) {
|
||||||
return MockMvcRequestBuilders.head(urlTemplate, urlVariables)
|
return (MockHttpServletRequestBuilder) configureUrlTemplateRequestAttribute(
|
||||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
MockMvcRequestBuilders.head(urlTemplate, urlVariables), urlTemplate);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -200,8 +200,8 @@ public abstract class RestDocumentationRequestBuilders {
|
|||||||
*/
|
*/
|
||||||
public static MockHttpServletRequestBuilder request(HttpMethod httpMethod, String urlTemplate,
|
public static MockHttpServletRequestBuilder request(HttpMethod httpMethod, String urlTemplate,
|
||||||
Object... urlVariables) {
|
Object... urlVariables) {
|
||||||
return MockMvcRequestBuilders.request(httpMethod, urlTemplate, urlVariables)
|
return (MockHttpServletRequestBuilder) configureUrlTemplateRequestAttribute(
|
||||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
MockMvcRequestBuilders.request(httpMethod, urlTemplate, urlVariables), urlTemplate);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -224,8 +224,8 @@ public abstract class RestDocumentationRequestBuilders {
|
|||||||
* @since 2.0.6
|
* @since 2.0.6
|
||||||
*/
|
*/
|
||||||
public static MockMultipartHttpServletRequestBuilder multipart(String urlTemplate, Object... urlVariables) {
|
public static MockMultipartHttpServletRequestBuilder multipart(String urlTemplate, Object... urlVariables) {
|
||||||
return (MockMultipartHttpServletRequestBuilder) MockMvcRequestBuilders.multipart(urlTemplate, urlVariables)
|
return (MockMultipartHttpServletRequestBuilder) configureUrlTemplateRequestAttribute(
|
||||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
MockMvcRequestBuilders.multipart(urlTemplate, urlVariables), urlTemplate);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -238,4 +238,15 @@ public abstract class RestDocumentationRequestBuilders {
|
|||||||
return MockMvcRequestBuilders.multipart(uri);
|
return MockMvcRequestBuilders.multipart(uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Object configureUrlTemplateRequestAttribute(Object builder, String urlTemplate) {
|
||||||
|
try {
|
||||||
|
return builder.getClass()
|
||||||
|
.getMethod("requestAttr", String.class, Object.class)
|
||||||
|
.invoke(builder, RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
||||||
|
}
|
||||||
|
catch (Exception ex) {
|
||||||
|
throw new RuntimeException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014-2023 the original author or authors.
|
* Copyright 2014-2024 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.
|
||||||
@@ -34,6 +34,7 @@ import org.springframework.restdocs.operation.OperationRequest;
|
|||||||
import org.springframework.restdocs.operation.OperationRequestPart;
|
import org.springframework.restdocs.operation.OperationRequestPart;
|
||||||
import org.springframework.restdocs.operation.RequestCookie;
|
import org.springframework.restdocs.operation.RequestCookie;
|
||||||
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
|
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
|
||||||
|
import org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder;
|
||||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
@@ -236,4 +237,8 @@ public class MockMvcRequestConverterTests {
|
|||||||
return this.factory.convert(builder.buildRequest(new MockServletContext()));
|
return this.factory.convert(builder.buildRequest(new MockServletContext()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private OperationRequest createOperationRequest(MockMultipartHttpServletRequestBuilder builder) {
|
||||||
|
return this.factory.convert(builder.buildRequest(new MockServletContext()));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014-2023 the original author or authors.
|
* Copyright 2014-2024 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.
|
||||||
@@ -26,6 +26,7 @@ import org.springframework.mock.web.MockHttpServletRequest;
|
|||||||
import org.springframework.mock.web.MockServletContext;
|
import org.springframework.mock.web.MockServletContext;
|
||||||
import org.springframework.restdocs.generate.RestDocumentationGenerator;
|
import org.springframework.restdocs.generate.RestDocumentationGenerator;
|
||||||
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
|
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
|
||||||
|
import org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.delete;
|
import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.delete;
|
||||||
@@ -140,6 +141,15 @@ public class RestDocumentationRequestBuildersTests {
|
|||||||
|
|
||||||
private void assertTemplate(MockHttpServletRequestBuilder builder, HttpMethod httpMethod) {
|
private void assertTemplate(MockHttpServletRequestBuilder builder, HttpMethod httpMethod) {
|
||||||
MockHttpServletRequest request = builder.buildRequest(this.servletContext);
|
MockHttpServletRequest request = builder.buildRequest(this.servletContext);
|
||||||
|
assertTemplate(httpMethod, request);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertTemplate(MockMultipartHttpServletRequestBuilder builder, HttpMethod httpMethod) {
|
||||||
|
MockHttpServletRequest request = builder.buildRequest(this.servletContext);
|
||||||
|
assertTemplate(httpMethod, request);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertTemplate(HttpMethod httpMethod, MockHttpServletRequest request) {
|
||||||
assertThat((String) request.getAttribute(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE))
|
assertThat((String) request.getAttribute(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE))
|
||||||
.isEqualTo("/{template}");
|
.isEqualTo("/{template}");
|
||||||
assertThat(request.getRequestURI()).isEqualTo("/t");
|
assertThat(request.getRequestURI()).isEqualTo("/t");
|
||||||
@@ -148,6 +158,15 @@ public class RestDocumentationRequestBuildersTests {
|
|||||||
|
|
||||||
private void assertUri(MockHttpServletRequestBuilder builder, HttpMethod httpMethod) {
|
private void assertUri(MockHttpServletRequestBuilder builder, HttpMethod httpMethod) {
|
||||||
MockHttpServletRequest request = builder.buildRequest(this.servletContext);
|
MockHttpServletRequest request = builder.buildRequest(this.servletContext);
|
||||||
|
assertUri(httpMethod, request);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertUri(MockMultipartHttpServletRequestBuilder builder, HttpMethod httpMethod) {
|
||||||
|
MockHttpServletRequest request = builder.buildRequest(this.servletContext);
|
||||||
|
assertUri(httpMethod, request);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertUri(HttpMethod httpMethod, MockHttpServletRequest request) {
|
||||||
assertThat(request.getRequestURI()).isEqualTo("/uri");
|
assertThat(request.getRequestURI()).isEqualTo("/uri");
|
||||||
assertThat(request.getMethod()).isEqualTo(httpMethod.name());
|
assertThat(request.getMethod()).isEqualTo(httpMethod.name());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,6 @@ dependencies {
|
|||||||
compatibilityTest {
|
compatibilityTest {
|
||||||
dependency("Spring Framework") { springFramework ->
|
dependency("Spring Framework") { springFramework ->
|
||||||
springFramework.groupId = "org.springframework"
|
springFramework.groupId = "org.springframework"
|
||||||
springFramework.versions = ["6.1.+"]
|
springFramework.versions = ["6.1.+", "6.2.+"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014-2023 the original author or authors.
|
* Copyright 2014-2024 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.
|
||||||
@@ -173,8 +173,10 @@ public class WebTestClientRequestConverterTests {
|
|||||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo"));
|
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo"));
|
||||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.POST);
|
assertThat(request.getMethod()).isEqualTo(HttpMethod.POST);
|
||||||
assertThat(request.getContentAsString()).isEqualTo("a=alpha&a=apple&b=br%26vo");
|
assertThat(request.getContentAsString()).isEqualTo("a=alpha&a=apple&b=br%26vo");
|
||||||
assertThat(request.getHeaders().getContentType())
|
assertThat(request.getHeaders().getContentType()).satisfiesAnyOf(
|
||||||
.isEqualTo(new MediaType(MediaType.APPLICATION_FORM_URLENCODED, StandardCharsets.UTF_8));
|
(mediaType) -> assertThat(mediaType)
|
||||||
|
.isEqualTo(new MediaType(MediaType.APPLICATION_FORM_URLENCODED, StandardCharsets.UTF_8)),
|
||||||
|
(mediaType) -> assertThat(mediaType).isEqualTo(new MediaType(MediaType.APPLICATION_FORM_URLENCODED)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -217,8 +219,10 @@ public class WebTestClientRequestConverterTests {
|
|||||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo?a=alpha&b=br%26vo"));
|
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo?a=alpha&b=br%26vo"));
|
||||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.POST);
|
assertThat(request.getMethod()).isEqualTo(HttpMethod.POST);
|
||||||
assertThat(request.getContentAsString()).isEqualTo("a=apple");
|
assertThat(request.getContentAsString()).isEqualTo("a=apple");
|
||||||
assertThat(request.getHeaders().getContentType())
|
assertThat(request.getHeaders().getContentType()).satisfiesAnyOf(
|
||||||
.isEqualTo(new MediaType(MediaType.APPLICATION_FORM_URLENCODED, StandardCharsets.UTF_8));
|
(mediaType) -> assertThat(mediaType)
|
||||||
|
.isEqualTo(new MediaType(MediaType.APPLICATION_FORM_URLENCODED, StandardCharsets.UTF_8)),
|
||||||
|
(mediaType) -> assertThat(mediaType).isEqualTo(new MediaType(MediaType.APPLICATION_FORM_URLENCODED)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user