Skip to content

Commit 50ad378

Browse files
committed
Polish MockHttpServletRequest Usage
This commit makes so that the requestURI is set to a value that makes sense with the other properties being mocked. Issue gh-16632
1 parent ad1ee28 commit 50ad378

File tree

10 files changed

+52
-37
lines changed

10 files changed

+52
-37
lines changed

cas/src/test/java/org/springframework/security/cas/web/CasAuthenticationFilterTests.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public void testGettersSetters() {
7878

7979
@Test
8080
public void testNormalOperation() throws Exception {
81-
MockHttpServletRequest request = new MockHttpServletRequest();
81+
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/login/cas");
8282
request.setServletPath("/login/cas");
8383
request.addParameter("ticket", "ST-0-ER94xMJmn6pha35CQRoZ");
8484
CasAuthenticationFilter filter = new CasAuthenticationFilter();
@@ -103,7 +103,7 @@ public void testRequiresAuthenticationFilterProcessUrl() {
103103
String url = "/login/cas";
104104
CasAuthenticationFilter filter = new CasAuthenticationFilter();
105105
filter.setFilterProcessesUrl(url);
106-
MockHttpServletRequest request = new MockHttpServletRequest();
106+
MockHttpServletRequest request = new MockHttpServletRequest("POST", url);
107107
MockHttpServletResponse response = new MockHttpServletResponse();
108108
request.setServletPath(url);
109109
assertThat(filter.requiresAuthentication(request, response)).isTrue();
@@ -132,10 +132,11 @@ public void testRequiresAuthenticationAuthAll() {
132132
CasAuthenticationFilter filter = new CasAuthenticationFilter();
133133
filter.setFilterProcessesUrl(url);
134134
filter.setServiceProperties(properties);
135-
MockHttpServletRequest request = new MockHttpServletRequest();
135+
MockHttpServletRequest request = new MockHttpServletRequest("POST", url);
136136
MockHttpServletResponse response = new MockHttpServletResponse();
137137
request.setServletPath(url);
138138
assertThat(filter.requiresAuthentication(request, response)).isTrue();
139+
request = new MockHttpServletRequest("POST", "/other");
139140
request.setServletPath("/other");
140141
assertThat(filter.requiresAuthentication(request, response)).isFalse();
141142
request.setParameter(properties.getArtifactParameter(), "value");
@@ -170,7 +171,7 @@ public void testDoFilterAuthenticateAll() throws Exception {
170171
given(manager.authenticate(any(Authentication.class))).willReturn(authentication);
171172
ServiceProperties serviceProperties = new ServiceProperties();
172173
serviceProperties.setAuthenticateAllArtifacts(true);
173-
MockHttpServletRequest request = new MockHttpServletRequest();
174+
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/authenticate");
174175
request.setParameter("ticket", "ST-1-123");
175176
request.setServletPath("/authenticate");
176177
MockHttpServletResponse response = new MockHttpServletResponse();

saml2/saml2-service-provider/src/opensaml4Test/java/org/springframework/security/saml2/provider/service/web/authentication/OpenSaml4AuthenticationRequestResolverTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ void resolveWhenCustomAuthenticationUrlTHenUses() {
102102
}
103103

104104
private MockHttpServletRequest givenRequest(String path) {
105-
MockHttpServletRequest request = new MockHttpServletRequest();
105+
MockHttpServletRequest request = new MockHttpServletRequest("GET", path);
106106
request.setServletPath(path);
107107
return request;
108108
}

saml2/saml2-service-provider/src/opensaml5Test/java/org/springframework/security/saml2/provider/service/web/authentication/OpenSaml5AuthenticationRequestResolverTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ void resolveWhenCustomAuthenticationUrlTHenUses() {
102102
}
103103

104104
private MockHttpServletRequest givenRequest(String path) {
105-
MockHttpServletRequest request = new MockHttpServletRequest();
105+
MockHttpServletRequest request = new MockHttpServletRequest("GET", path);
106106
request.setServletPath(path);
107107
return request;
108108
}

saml2/saml2-service-provider/src/test/java/org/springframework/security/saml2/provider/service/web/DefaultRelyingPartyRegistrationResolverTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ public class DefaultRelyingPartyRegistrationResolverTests {
4343

4444
@Test
4545
public void resolveWhenRequestContainsRegistrationIdThenResolves() {
46-
MockHttpServletRequest request = new MockHttpServletRequest();
46+
MockHttpServletRequest request = new MockHttpServletRequest("GET",
47+
"/some/path/" + this.registration.getRegistrationId());
4748
request.setPathInfo("/some/path/" + this.registration.getRegistrationId());
4849
RelyingPartyRegistration registration = this.resolver.convert(request);
4950
assertThat(registration).isNotNull();

saml2/saml2-service-provider/src/test/java/org/springframework/security/saml2/provider/service/web/Saml2MetadataFilterTests.java

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -74,39 +74,39 @@ public void setup() {
7474

7575
@Test
7676
public void doFilterWhenMatcherSucceedsThenResolverInvoked() throws Exception {
77-
this.request.setPathInfo("/saml2/service-provider-metadata/registration-id");
78-
this.filter.doFilter(this.request, this.response, this.chain);
77+
MockHttpServletRequest request = uri("/saml2/service-provider-metadata/registration-id");
78+
this.filter.doFilter(request, this.response, this.chain);
7979
verifyNoInteractions(this.chain);
8080
verify(this.repository).findByRegistrationId("registration-id");
8181
}
8282

8383
@Test
8484
public void doFilterWhenMatcherFailsThenProcessesFilterChain() throws Exception {
85-
this.request.setPathInfo("/saml2/authenticate/registration-id");
86-
this.filter.doFilter(this.request, this.response, this.chain);
87-
verify(this.chain).doFilter(this.request, this.response);
85+
MockHttpServletRequest request = uri("/saml2/authenticate/registration-id");
86+
this.filter.doFilter(request, this.response, this.chain);
87+
verify(this.chain).doFilter(request, this.response);
8888
}
8989

9090
@Test
9191
public void doFilterWhenNoRelyingPartyRegistrationThenUnauthorized() throws Exception {
92-
this.request.setPathInfo("/saml2/service-provider-metadata/invalidRegistration");
92+
MockHttpServletRequest request = uri("/saml2/service-provider-metadata/invalidRegistration");
9393
given(this.repository.findByRegistrationId("invalidRegistration")).willReturn(null);
94-
this.filter.doFilter(this.request, this.response, this.chain);
94+
this.filter.doFilter(request, this.response, this.chain);
9595
verifyNoInteractions(this.chain);
9696
assertThat(this.response.getStatus()).isEqualTo(401);
9797
}
9898

9999
@Test
100100
public void doFilterWhenRelyingPartyRegistrationFoundThenInvokesMetadataResolver() throws Exception {
101-
this.request.setPathInfo("/saml2/service-provider-metadata/validRegistration");
101+
MockHttpServletRequest request = uri("/saml2/service-provider-metadata/validRegistration");
102102
RelyingPartyRegistration validRegistration = TestRelyingPartyRegistrations.noCredentials()
103103
.assertingPartyDetails((party) -> party
104104
.verificationX509Credentials((c) -> c.add(TestSaml2X509Credentials.relyingPartyVerifyingCredential())))
105105
.build();
106106
String generatedMetadata = "<xml>test</xml>";
107107
given(this.resolver.resolve(validRegistration)).willReturn(generatedMetadata);
108-
this.filter = new Saml2MetadataFilter((request, registrationId) -> validRegistration, this.resolver);
109-
this.filter.doFilter(this.request, this.response, this.chain);
108+
this.filter = new Saml2MetadataFilter((r, registrationId) -> validRegistration, this.resolver);
109+
this.filter.doFilter(request, this.response, this.chain);
110110
verifyNoInteractions(this.chain);
111111
assertThat(this.response.getStatus()).isEqualTo(200);
112112
assertThat(this.response.getContentAsString()).isEqualTo(generatedMetadata);
@@ -128,9 +128,9 @@ public void doFilterWhenMatchesThenRespondsWithMetadata() throws Exception {
128128

129129
@Test
130130
public void doFilterWhenCustomRequestMatcherThenUses() throws Exception {
131-
this.request.setPathInfo("/path");
131+
MockHttpServletRequest request = uri("/path");
132132
this.filter.setRequestMatcher(new AntPathRequestMatcher("/path"));
133-
this.filter.doFilter(this.request, this.response, this.chain);
133+
this.filter.doFilter(request, this.response, this.chain);
134134
verifyNoInteractions(this.chain);
135135
verify(this.repository).findByRegistrationId("path");
136136
}
@@ -142,11 +142,11 @@ public void doFilterWhenSetMetadataFilenameThenUses() throws Exception {
142142
String fileName = testMetadataFilename.replace("{registrationId}", validRegistration.getRegistrationId());
143143
String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.name());
144144
String generatedMetadata = "<xml>test</xml>";
145-
this.request.setPathInfo("/saml2/service-provider-metadata/registration-id");
145+
MockHttpServletRequest request = uri("/saml2/service-provider-metadata/registration-id");
146146
given(this.resolver.resolve(validRegistration)).willReturn(generatedMetadata);
147-
this.filter = new Saml2MetadataFilter((request, registrationId) -> validRegistration, this.resolver);
147+
this.filter = new Saml2MetadataFilter((r, registrationId) -> validRegistration, this.resolver);
148148
this.filter.setMetadataFilename(testMetadataFilename);
149-
this.filter.doFilter(this.request, this.response, this.chain);
149+
this.filter.doFilter(request, this.response, this.chain);
150150
assertThat(this.response.getHeaderValue(HttpHeaders.CONTENT_DISPOSITION)).asString()
151151
.isEqualTo("attachment; filename=\"%s\"; filename*=UTF-8''%s", fileName, encodedFileName);
152152
}
@@ -160,8 +160,8 @@ public void doFilterWhenResolverConstructorAndPathStartsWithRegistrationIdThenSe
160160
(id) -> this.repository.findByRegistrationId("registration-id"));
161161
this.filter = new Saml2MetadataFilter(resolver, this.resolver);
162162
this.filter.setRequestMatcher(new AntPathRequestMatcher("/metadata"));
163-
this.request.setPathInfo("/metadata");
164-
this.filter.doFilter(this.request, this.response, new MockFilterChain());
163+
MockHttpServletRequest request = uri("/metadata");
164+
this.filter.doFilter(request, this.response, new MockFilterChain());
165165
verify(this.repository).findByRegistrationId("registration-id");
166166
}
167167

@@ -174,8 +174,8 @@ public void doFilterWhenRelyingPartyRegistrationRepositoryConstructorAndPathStar
174174
this.filter = new Saml2MetadataFilter((id) -> this.repository.findByRegistrationId("registration-id"),
175175
this.resolver);
176176
this.filter.setRequestMatcher(new AntPathRequestMatcher("/metadata"));
177-
this.request.setPathInfo("/metadata");
178-
this.filter.doFilter(this.request, this.response, new MockFilterChain());
177+
MockHttpServletRequest request = uri("/metadata");
178+
this.filter.doFilter(request, this.response, new MockFilterChain());
179179
verify(this.repository).findByRegistrationId("registration-id");
180180
}
181181

@@ -185,11 +185,11 @@ public void doFilterWhenCharacterEncodingThenEncodeSpecialCharactersCorrectly()
185185
RelyingPartyRegistration validRegistration = TestRelyingPartyRegistrations.full().build();
186186
String testMetadataFilename = "test-{registrationId}-metadata.xml";
187187
String generatedMetadata = "<xml>testäöü</xml>";
188-
this.request.setPathInfo("/saml2/service-provider-metadata/registration-id");
188+
MockHttpServletRequest request = uri("/saml2/service-provider-metadata/registration-id");
189189
given(this.resolver.resolve(validRegistration)).willReturn(generatedMetadata);
190190
this.filter = new Saml2MetadataFilter((req, id) -> validRegistration, this.resolver);
191191
this.filter.setMetadataFilename(testMetadataFilename);
192-
this.filter.doFilter(this.request, this.response, this.chain);
192+
this.filter.doFilter(request, this.response, this.chain);
193193
assertThat(this.response.getCharacterEncoding()).isEqualTo(StandardCharsets.UTF_8.name());
194194
assertThat(this.response.getContentAsString(StandardCharsets.UTF_8)).isEqualTo(generatedMetadata);
195195
assertThat(this.response.getContentLength())
@@ -218,9 +218,15 @@ public void setMetadataFilenameWhenMissingRegistrationIdVariableThenThrowsExcept
218218
public void constructorWhenRelyingPartyRegistrationRepositoryThenUses() throws Exception {
219219
RelyingPartyRegistrationRepository repository = mock(RelyingPartyRegistrationRepository.class);
220220
this.filter = new Saml2MetadataFilter(repository, this.resolver);
221-
this.request.setPathInfo("/saml2/service-provider-metadata/one");
222-
this.filter.doFilter(this.request, this.response, this.chain);
221+
MockHttpServletRequest request = uri("/saml2/service-provider-metadata/one");
222+
this.filter.doFilter(request, this.response, this.chain);
223223
verify(repository).findByRegistrationId("one");
224224
}
225225

226+
private MockHttpServletRequest uri(String uri) {
227+
MockHttpServletRequest request = new MockHttpServletRequest("GET", uri);
228+
request.setPathInfo(uri);
229+
return request;
230+
}
231+
226232
}

saml2/saml2-service-provider/src/test/java/org/springframework/security/saml2/provider/service/web/authentication/Saml2WebSsoAuthenticationFilterTests.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ public class Saml2WebSsoAuthenticationFilterTests {
6868
@BeforeEach
6969
public void setup() {
7070
this.filter = new Saml2WebSsoAuthenticationFilter(this.repository);
71+
this.request.setRequestURI("/login/saml2/sso/idp-registration-id");
7172
this.request.setPathInfo("/login/saml2/sso/idp-registration-id");
7273
this.request.setParameter(Saml2ParameterNames.SAML_RESPONSE, "xml-data-goes-here");
7374
}
@@ -99,6 +100,7 @@ public void requiresAuthenticationWhenHappyPathThenReturnsTrue() {
99100
@Test
100101
public void requiresAuthenticationWhenCustomProcessingUrlThenReturnsTrue() {
101102
this.filter = new Saml2WebSsoAuthenticationFilter(this.repository, "/some/other/path/{registrationId}");
103+
this.request.setRequestURI("/some/other/path/idp-registration-id");
102104
this.request.setPathInfo("/some/other/path/idp-registration-id");
103105
this.request.setParameter(Saml2ParameterNames.SAML_RESPONSE, "xml-data-goes-here");
104106
assertThat(this.filter.requiresAuthentication(this.request, this.response)).isTrue();
@@ -108,6 +110,7 @@ public void requiresAuthenticationWhenCustomProcessingUrlThenReturnsTrue() {
108110
public void attemptAuthenticationWhenRegistrationIdDoesNotExistThenThrowsException() {
109111
given(this.repository.findByRegistrationId("non-existent-id")).willReturn(null);
110112
this.filter = new Saml2WebSsoAuthenticationFilter(this.repository, "/some/other/path/{registrationId}");
113+
this.request.setRequestURI("/some/other/path/non-existent-id");
111114
this.request.setPathInfo("/some/other/path/non-existent-id");
112115
this.request.setParameter(Saml2ParameterNames.SAML_RESPONSE, "response");
113116
assertThatExceptionOfType(Saml2AuthenticationException.class)
@@ -123,6 +126,7 @@ public void attemptAuthenticationWhenSavedAuthnRequestThenRemovesAuthnRequest()
123126
given(authenticationConverter.convert(this.request)).willReturn(TestSaml2AuthenticationTokens.token());
124127
this.filter = new Saml2WebSsoAuthenticationFilter(authenticationConverter, "/some/other/path/{registrationId}");
125128
this.filter.setAuthenticationManager((authentication) -> null);
129+
this.request.setRequestURI("/some/other/path/idp-registration-id");
126130
this.request.setPathInfo("/some/other/path/idp-registration-id");
127131
this.filter.setAuthenticationRequestRepository(authenticationRequestRepository);
128132
this.filter.attemptAuthentication(this.request, this.response);
@@ -201,6 +205,7 @@ public void doFilterWhenPathStartsWithRegistrationIdThenAuthenticates() throws E
201205
Saml2AuthenticationTokenConverter authenticationConverter = new Saml2AuthenticationTokenConverter(resolver);
202206
this.filter = new Saml2WebSsoAuthenticationFilter(authenticationConverter, loginProcessingUrl);
203207
this.filter.setAuthenticationManager(this.authenticationManager);
208+
this.request.setRequestURI("/registration-id/login/saml2/sso");
204209
this.request.setPathInfo("/registration-id/login/saml2/sso");
205210
this.request.setParameter(Saml2ParameterNames.SAML_RESPONSE, "response");
206211
this.filter.doFilter(this.request, this.response, new MockFilterChain());

web/src/test/java/org/springframework/security/web/authentication/AbstractAuthenticationProcessingFilterTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public void tearDown() {
100100

101101
@Test
102102
public void testDefaultProcessesFilterUrlMatchesWithPathParameter() {
103-
MockHttpServletRequest request = createMockAuthenticationRequest();
103+
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/login;jsessionid=I8MIONOSTHOR");
104104
MockHttpServletResponse response = new MockHttpServletResponse();
105105
MockAuthenticationFilter filter = new MockAuthenticationFilter();
106106
filter.setFilterProcessesUrl("/login");

web/src/test/java/org/springframework/security/web/authentication/logout/LogoutHandlerTests.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ public void setUp() {
3939

4040
@Test
4141
public void testRequiresLogoutUrlWorksWithPathParams() {
42-
MockHttpServletRequest request = new MockHttpServletRequest();
42+
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/context/logout;someparam=blah");
4343
MockHttpServletResponse response = new MockHttpServletResponse();
44-
request.setRequestURI("/context/logout;someparam=blah?param=blah");
44+
request.setContextPath("/context");
4545
request.setServletPath("/logout;someparam=blah");
4646
request.setQueryString("otherparam=blah");
4747
DefaultHttpFirewall fw = new DefaultHttpFirewall();
@@ -50,12 +50,11 @@ public void testRequiresLogoutUrlWorksWithPathParams() {
5050

5151
@Test
5252
public void testRequiresLogoutUrlWorksWithQueryParams() {
53-
MockHttpServletRequest request = new MockHttpServletRequest();
53+
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/context/logout");
5454
request.setContextPath("/context");
5555
MockHttpServletResponse response = new MockHttpServletResponse();
5656
request.setServletPath("/logout");
57-
request.setRequestURI("/context/logout?param=blah");
58-
request.setQueryString("otherparam=blah");
57+
request.setQueryString("param=blah");
5958
assertThat(this.filter.requiresLogout(request, response)).isTrue();
6059
}
6160

web/src/test/java/org/springframework/security/web/authentication/ott/GenerateOneTimeTokenFilterTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ public class GenerateOneTimeTokenFilterTests {
6565
void setup() {
6666
this.request.setMethod("POST");
6767
this.request.setServletPath("/ott/generate");
68+
this.request.setRequestURI("/ott/generate");
6869
}
6970

7071
@Test

web/src/test/java/org/springframework/security/web/authentication/ui/DefaultOneTimeTokenSubmitPageGeneratingFilterTests.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class DefaultOneTimeTokenSubmitPageGeneratingFilterTests {
3737

3838
DefaultOneTimeTokenSubmitPageGeneratingFilter filter = new DefaultOneTimeTokenSubmitPageGeneratingFilter();
3939

40-
MockHttpServletRequest request = new MockHttpServletRequest();
40+
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/login/ott");
4141

4242
MockHttpServletResponse response = new MockHttpServletResponse();
4343

@@ -47,6 +47,7 @@ class DefaultOneTimeTokenSubmitPageGeneratingFilterTests {
4747
void setup() {
4848
this.request.setMethod("GET");
4949
this.request.setServletPath("/login/ott");
50+
this.request.setRequestURI("/login/ott");
5051
}
5152

5253
@Test
@@ -80,6 +81,7 @@ void setLoginProcessingUrlThenUseItForFormAction() throws Exception {
8081
@Test
8182
void setContextThenGenerates() throws Exception {
8283
this.request.setContextPath("/context");
84+
this.request.setRequestURI("/context/login/ott");
8385
this.filter.setLoginProcessingUrl("/login/another");
8486
this.filter.doFilterInternal(this.request, this.response, this.filterChain);
8587
String response = this.response.getContentAsString();

0 commit comments

Comments
 (0)