SPR-8862 Fix issue with matching negated header values.
This commit is contained in:
parent
6eba6f2059
commit
e695a21688
|
|
@ -127,12 +127,21 @@ abstract class ServletAnnotationMappingUtils {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if (negated) {
|
||||||
|
found = !found;
|
||||||
|
}
|
||||||
if (!found) {
|
if (!found) {
|
||||||
return negated;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!value.equals(request.getHeader(key))) {
|
else {
|
||||||
return negated;
|
boolean match = value.equals(request.getHeader(key));
|
||||||
|
if (negated) {
|
||||||
|
match = !match;
|
||||||
|
}
|
||||||
|
if (!match) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -143,6 +143,17 @@ public class ServletAnnotationMappingUtilsTests {
|
||||||
assertFalse("Invalid request method result", result);
|
assertFalse("Invalid request method result", result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SPR-8862
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void checkHeadersKeyValueNoMatchWithNegation() {
|
||||||
|
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/");
|
||||||
|
request.addHeader("header1", "value1");
|
||||||
|
String[] headers = new String[]{"header1!=value1"};
|
||||||
|
boolean result = ServletAnnotationMappingUtils.checkHeaders(headers, request);
|
||||||
|
assertFalse("Invalid request method result", result);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void checkHeadersAcceptMatch() {
|
public void checkHeadersAcceptMatch() {
|
||||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/");
|
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/");
|
||||||
|
|
@ -161,4 +172,13 @@ public class ServletAnnotationMappingUtilsTests {
|
||||||
assertFalse("Invalid request method result", result);
|
assertFalse("Invalid request method result", result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void checkHeadersAcceptNoMatchWithNegation() {
|
||||||
|
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/");
|
||||||
|
request.addHeader("Accept", "application/pdf");
|
||||||
|
String[] headers = new String[]{"accept!=application/pdf"};
|
||||||
|
boolean result = ServletAnnotationMappingUtils.checkHeaders(headers, request);
|
||||||
|
assertFalse("Invalid request method result", result);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -111,6 +111,15 @@ public class HeadersRequestConditionTests {
|
||||||
assertNotNull(condition.getMatchingCondition(request));
|
assertNotNull(condition.getMatchingCondition(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void headerValueNoMatchNegated() {
|
||||||
|
HeadersRequestCondition condition = new HeadersRequestCondition("foo!=bar");
|
||||||
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||||
|
request.addHeader("foo", "bar");
|
||||||
|
|
||||||
|
assertNull(condition.getMatchingCondition(request));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void compareTo() {
|
public void compareTo() {
|
||||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue