INT-3184: Test HTTP Matrix Variables
JIRA: https://jira.springsource.org/browse/INT-3184 * Change `IntegrationRequestMappingHandlerMapping` to postpone Handlers detection as late as possible using `ApplicationListener<ContextRefreshedEvent>`. This is needed, because `RequestMappingInfoHandlerMapping#afterPropertiesSet()` iterates over beans from `BeanFactory` to detect MVC Handlers. But at the same time Integration Endpoints require `requestChannel` as dependency and those may be postponed for `auto-creation` by `ChannelInitializer` - late-binding issue.
This commit is contained in:
committed by
Gary Russell
parent
075e331dcf
commit
73a104c955
@@ -13,9 +13,17 @@
|
||||
http://www.springframework.org/schema/integration/http
|
||||
http://www.springframework.org/schema/integration/http/spring-integration-http.xsd">
|
||||
|
||||
<!-- Allow Matrix Variables -->
|
||||
<beans:bean id="integrationRequestMappingHandlerMapping"
|
||||
class="org.springframework.integration.http.inbound.IntegrationRequestMappingHandlerMapping">
|
||||
<beans:property name="removeSemicolonContent" value="false"/>
|
||||
</beans:bean>
|
||||
|
||||
<int-http:inbound-gateway path="/path1,/path2"
|
||||
request-channel="multiplePathsChannel"/>
|
||||
|
||||
|
||||
|
||||
<int:transformer input-channel="multiplePathsChannel"
|
||||
expression="T(org.springframework.integration.http.inbound.Int2312RequestMappingIntegrationTests).TEST_STRING_MULTIPLE_PATHS"/>
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ package org.springframework.integration.http.inbound;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.Collections;
|
||||
@@ -27,6 +28,7 @@ import java.util.Map;
|
||||
|
||||
import javax.servlet.http.Cookie;
|
||||
|
||||
import org.hamcrest.Matchers;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@@ -100,9 +102,7 @@ public class Int2312RequestMappingIntegrationTests extends AbstractHttpInboundTe
|
||||
public void testURIVariablesAndHeaders() throws Exception {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.setMethod("GET");
|
||||
String testRequest = "aBc";
|
||||
// TODO test it after upgrade to Spring 4.0
|
||||
// String testRequest = "aBc;q1=1;q2=2";
|
||||
String testRequest = "aBc;q1=1;q2=2";
|
||||
String requestURI = "/test/" + testRequest;
|
||||
request.setRequestURI(requestURI);
|
||||
request.setContentType("text/plain");
|
||||
@@ -129,8 +129,12 @@ public class Int2312RequestMappingIntegrationTests extends AbstractHttpInboundTe
|
||||
assertNotNull(requestParams);
|
||||
assertEquals(params, ((MultiValueMap<String, String>) requestParams).toSingleValueMap());
|
||||
|
||||
// TODO test it after upgrade to Spring 4.0
|
||||
// assertEquals(matrixVariables, headers.get("matrixVariables"));
|
||||
Object matrixVariables = headers.get("matrixVariables");
|
||||
assertThat(matrixVariables, Matchers.instanceOf(Map.class));
|
||||
Object value = ((Map) matrixVariables).get("value");
|
||||
assertThat(value, Matchers.instanceOf(MultiValueMap.class));
|
||||
assertEquals("1", ((MultiValueMap) value).getFirst("q1"));
|
||||
assertEquals("2", ((MultiValueMap) value).getFirst("q2"));
|
||||
|
||||
Object requestHeaders = headers.get("requestHeaders");
|
||||
assertNotNull(requestParams);
|
||||
@@ -149,7 +153,7 @@ public class Int2312RequestMappingIntegrationTests extends AbstractHttpInboundTe
|
||||
Object handler = this.handlerMapping.getHandler(request).getHandler();
|
||||
this.handlerAdapter.handle(request, response, handler);
|
||||
final String testResponse = response.getContentAsString();
|
||||
assertEquals(testRequest.toLowerCase(), testResponse);
|
||||
assertEquals(testRequest.split(";")[0].toLowerCase(), testResponse);
|
||||
|
||||
RequestContextHolder.resetRequestAttributes();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user