From 18896aceca5329dfe3323440941cc69e71e1ddf8 Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Tue, 14 Feb 2023 12:01:42 +0000 Subject: [PATCH] Adapt empty path to "/" in MockMvc Closes gh-29933 --- .../web/servlet/request/MockHttpServletRequestBuilder.java | 5 +++-- .../servlet/request/MockHttpServletRequestBuilderTests.java | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java b/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java index 32333995faf..70a8b971825 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java @@ -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. @@ -149,7 +149,8 @@ public class MockHttpServletRequestBuilder Assert.notNull(url, "'url' must not be null"); Assert.isTrue(url.isEmpty() || url.startsWith("/") || url.startsWith("http://") || url.startsWith("https://"), () -> "'url' should start with a path or be a complete HTTP URL: " + url); - return UriComponentsBuilder.fromUriString(url).buildAndExpand(vars).encode().toUri(); + String uriString = (url.isEmpty() ? "/" : url); + return UriComponentsBuilder.fromUriString(uriString).buildAndExpand(vars).encode().toUri(); } /** diff --git a/spring-test/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java b/spring-test/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java index 092f19142bb..fff2ec74d33 100644 --- a/spring-test/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java +++ b/spring-test/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java @@ -167,15 +167,15 @@ class MockHttpServletRequestBuilderTests { assertThat(request.getPathInfo()).isNull(); } - @Test // gh-28823 + @Test // gh-28823, gh-29933 void emptyPath() { this.builder = new MockHttpServletRequestBuilder(GET, ""); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); - assertThat(request.getRequestURI()).isEqualTo(""); + assertThat(request.getRequestURI()).isEqualTo("/"); assertThat(request.getContextPath()).isEqualTo(""); assertThat(request.getServletPath()).isEqualTo(""); - assertThat(request.getPathInfo()).isNull(); + assertThat(request.getPathInfo()).isEqualTo("/"); } @Test // SPR-16453