Browse Source

Introduce sessionAttributeDoesNotExist in RequestResultMatchers

Analogous to the attributeDoesNotExist() method in ModelResultMatchers,
this commit introduces a new sessionAttributeDoesNotExist() method in
RequestResultMatchers which asserts that the given attributes are null
in the HttpSession.

Closes gh-23756
pull/23931/head
Drummond Dawson 5 years ago committed by Sam Brannen
parent
commit
e73344fc71
  1. 14
      spring-test/src/main/java/org/springframework/test/web/servlet/result/RequestResultMatchers.java
  2. 6
      spring-test/src/test/java/org/springframework/test/web/servlet/samples/standalone/resultmatchers/SessionAttributeAssertionTests.java

14
spring-test/src/main/java/org/springframework/test/web/servlet/result/RequestResultMatchers.java

@ -31,6 +31,7 @@ import org.springframework.web.context.request.async.WebAsyncTask; @@ -31,6 +31,7 @@ import org.springframework.web.context.request.async.WebAsyncTask;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.springframework.test.util.AssertionErrors.assertEquals;
import static org.springframework.test.util.AssertionErrors.assertTrue;
/**
* Factory for assertions on the request.
@ -150,6 +151,19 @@ public class RequestResultMatchers { @@ -150,6 +151,19 @@ public class RequestResultMatchers {
};
}
/**
* Assert the given session attributes do not exist.
*/
public <T> ResultMatcher sessionAttributeDoesNotExist(String... names) {
return result -> {
HttpSession session = result.getRequest().getSession();
Assert.state(session != null, "No HttpSession");
for (String name : names) {
assertTrue("Session attribute '" + name + "' exists", session.getAttribute(name) == null);
}
};
}
private static void assertAsyncStarted(HttpServletRequest request) {
assertEquals("Async started", true, request.isAsyncStarted());
}

6
spring-test/src/test/java/org/springframework/test/web/servlet/samples/standalone/resultmatchers/SessionAttributeAssertionTests.java

@ -65,6 +65,12 @@ public class SessionAttributeAssertionTests { @@ -65,6 +65,12 @@ public class SessionAttributeAssertionTests {
.andExpect(request().sessionAttribute("locale", notNullValue()));
}
@Test
public void testSessionAttributeDoesNotExist() throws Exception {
this.mockMvc.perform(get("/"))
.andExpect(request().sessionAttributeDoesNotExist("myAttr1", "myAttr2"));
}
@Controller
@SessionAttributes("locale")

Loading…
Cancel
Save