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