|
1 | 1 | /*
|
2 |
| - * Copyright 2002-2017 the original author or authors. |
| 2 | + * Copyright 2002-2020 the original author or authors. |
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | * you may not use this file except in compliance with the License.
|
|
20 | 20 | import org.junit.runner.RunWith;
|
21 | 21 | import org.mockito.Mock;
|
22 | 22 | import org.mockito.junit.MockitoJUnitRunner;
|
| 23 | + |
| 24 | +import org.springframework.http.HttpMethod; |
23 | 25 | import org.springframework.http.HttpStatus;
|
24 | 26 | import org.springframework.http.MediaType;
|
25 | 27 | import org.springframework.mock.http.server.reactive.MockServerHttpRequest;
|
|
40 | 42 | import static org.mockito.Mockito.mock;
|
41 | 43 | import static org.mockito.Mockito.verifyZeroInteractions;
|
42 | 44 | import static org.mockito.Mockito.when;
|
| 45 | +import static org.mockito.Mockito.verify; |
| 46 | +import static org.mockito.Mockito.spy; |
43 | 47 | import static org.springframework.mock.web.server.MockServerWebExchange.from;
|
44 | 48 | import static org.springframework.web.reactive.function.BodyInserters.fromMultipartData;
|
45 | 49 |
|
46 | 50 | /**
|
47 | 51 | * @author Rob Winch
|
| 52 | + * @author Parikshit Dutta |
48 | 53 | * @since 5.0
|
49 | 54 | */
|
50 | 55 | @RunWith(MockitoJUnitRunner.class)
|
@@ -183,6 +188,18 @@ public void filterWhenPostAndEstablishedCsrfTokenAndHeaderValidTokenThenContinue
|
183 | 188 | chainResult.assertWasSubscribed();
|
184 | 189 | }
|
185 | 190 |
|
| 191 | + @Test |
| 192 | + public void matchesRequireCSRFProtectionWhenNonStandardHTTPMethodIsUsed() { |
| 193 | + final String NON_STANDARD_HTTP_METHOD = "non-standard-http-method"; |
| 194 | + MockServerWebExchange nonStandardHttpRequest = from(MockServerHttpRequest.method(HttpMethod.resolve(NON_STANDARD_HTTP_METHOD), "/")); |
| 195 | + |
| 196 | + ServerWebExchangeMatcher serverWebExchangeMatcher = spy(CsrfWebFilter.DEFAULT_CSRF_MATCHER); |
| 197 | + serverWebExchangeMatcher.matches(nonStandardHttpRequest); |
| 198 | + |
| 199 | + verify(serverWebExchangeMatcher).matches(nonStandardHttpRequest); |
| 200 | + assertThat(serverWebExchangeMatcher.matches(nonStandardHttpRequest).block().isMatch()).isTrue(); |
| 201 | + } |
| 202 | + |
186 | 203 | @Test
|
187 | 204 | public void doFilterWhenSkipExchangeInvokedThenSkips() {
|
188 | 205 | PublisherProbe<Void> chainResult = PublisherProbe.empty();
|
|
0 commit comments