Add doesNotExist match to HeaderResultMatchers
Prior to this commit, one could not test for the absence of
a specific HTTP header in a response.
Using header("X-Custom-Header", Matchers.nullValue()) would not
work because it tests for an empty value of an existing header.
This commit adds a doesNotExist method on the
HeaderResultMatcher.
Issue: SPR-10771
This commit is contained in:
parent
e4479c8669
commit
4bf5a0234c
|
|
@ -16,14 +16,13 @@
|
|||
|
||||
package org.springframework.test.web.servlet.result;
|
||||
|
||||
import static org.springframework.test.util.AssertionErrors.assertEquals;
|
||||
import static org.springframework.test.util.AssertionErrors.assertTrue;
|
||||
import static org.springframework.test.util.MatcherAssertionErrors.assertThat;
|
||||
|
||||
import org.hamcrest.Matcher;
|
||||
import org.springframework.test.web.servlet.MvcResult;
|
||||
import org.springframework.test.web.servlet.ResultMatcher;
|
||||
|
||||
import static org.springframework.test.util.AssertionErrors.*;
|
||||
import static org.springframework.test.util.MatcherAssertionErrors.*;
|
||||
|
||||
/**
|
||||
* Factory for response header assertions. An instance of this
|
||||
* class is usually accessed via {@link MockMvcResultMatchers#header()}.
|
||||
|
|
@ -69,6 +68,20 @@ public class HeaderResultMatchers {
|
|||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert that the named response header does not exist.
|
||||
* @since 4.0
|
||||
*/
|
||||
public ResultMatcher doesNotExist(final String name) {
|
||||
return new ResultMatcher() {
|
||||
|
||||
@Override
|
||||
public void match(MvcResult result) {
|
||||
assertTrue("Response should not contain header " + name, !result.getResponse().containsHeader(name));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert the primary value of the named response header as a {@code long}.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*;
|
|||
|
||||
/**
|
||||
* Examples of expectations on response header values.
|
||||
*
|
||||
*
|
||||
* @author Rossen Stoyanchev
|
||||
* @author Sam Brannen
|
||||
*/
|
||||
|
|
@ -110,6 +110,22 @@ public class HeaderAssertionTests {
|
|||
}
|
||||
}
|
||||
|
||||
// SPR-10771
|
||||
|
||||
@Test
|
||||
public void doesNotExist() throws Exception {
|
||||
this.mockMvc.perform(get("/persons/1"))
|
||||
.andExpect(header().doesNotExist("X-Custom-Header"));
|
||||
}
|
||||
|
||||
// SPR-10771
|
||||
|
||||
@Test(expected = AssertionError.class)
|
||||
public void doesNotExistFail() throws Exception {
|
||||
this.mockMvc.perform(get("/persons/1"))
|
||||
.andExpect(header().doesNotExist(LAST_MODIFIED));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void stringWithIncorrectResponseHeaderValue() throws Exception {
|
||||
long unexpected = currentTime + 1;
|
||||
|
|
|
|||
Loading…
Reference in New Issue