Improve forwarded URL support in HtmlUnit integration
Closes gh-28722
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
* Copyright 2002-2022 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.
|
||||
@@ -19,28 +19,42 @@ package org.springframework.test.web.servlet.htmlunit;
|
||||
import org.springframework.mock.web.MockHttpServletRequest;
|
||||
import org.springframework.test.web.servlet.request.RequestPostProcessor;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* {@link RequestPostProcessor} for forward requests.
|
||||
* {@link RequestPostProcessor} to update the request for a forwarded dispatch.
|
||||
*
|
||||
* @author Rob Winch
|
||||
* @author Sam Brannen
|
||||
* @author Rossen Stoyanchev
|
||||
* @since 4.2
|
||||
*/
|
||||
final class ForwardRequestPostProcessor implements RequestPostProcessor {
|
||||
|
||||
private final String forwardUrl;
|
||||
private final String forwardedUrl;
|
||||
|
||||
|
||||
public ForwardRequestPostProcessor(String forwardUrl) {
|
||||
Assert.hasText(forwardUrl, "Forward URL must not be null or empty");
|
||||
this.forwardUrl = forwardUrl;
|
||||
public ForwardRequestPostProcessor(String forwardedUrl) {
|
||||
Assert.hasText(forwardedUrl, "Forwarded URL must not be null or empty");
|
||||
this.forwardedUrl = forwardedUrl;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MockHttpServletRequest postProcessRequest(MockHttpServletRequest request) {
|
||||
request.setServletPath(this.forwardUrl);
|
||||
request.setRequestURI(this.forwardedUrl);
|
||||
request.setServletPath(initServletPath(request.getContextPath()));
|
||||
return request;
|
||||
}
|
||||
|
||||
private String initServletPath(String contextPath) {
|
||||
if (StringUtils.hasText(contextPath)) {
|
||||
Assert.state(this.forwardedUrl.startsWith(contextPath), "Forward supported to same contextPath only");
|
||||
return (this.forwardedUrl.length() > contextPath.length() ?
|
||||
this.forwardedUrl.substring(contextPath.length()) : "");
|
||||
}
|
||||
else {
|
||||
return this.forwardedUrl;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user