Add Cookie attributes + SameSite CookieResultMatchers in MockMvc
This commit adds assertions to MockMvc's CookieresultMatchers: - `attribute` for arbitrary attributes - `sameSite` for the SameSite well-known attribute Note that the `sameSite` methods delegate to their `attribute` counterparts. Note also that Jakarta's `Cookie#getAttribute` method is case-insensitive, which is reflected in the documentation of the `attribute` assertion method and the tests. Closes gh-30285
This commit is contained in:
@@ -146,6 +146,24 @@ public class CookieResultMatchers {
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert a cookie's SameSite attribute with a Hamcrest {@link Matcher}.
|
||||
* @since 6.0.8
|
||||
* @see #attribute(String, String, Matcher)
|
||||
*/
|
||||
public ResultMatcher sameSite(String name, Matcher<? super String> matcher) {
|
||||
return attribute(name, "SameSite", matcher);
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert a cookie's SameSite attribute.
|
||||
* @since 6.0.8
|
||||
* @see #attribute(String, String, String)
|
||||
*/
|
||||
public ResultMatcher sameSite(String name, String sameSite) {
|
||||
return attribute(name, "SameSite", sameSite);
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert a cookie's comment with a Hamcrest {@link Matcher}.
|
||||
*/
|
||||
@@ -211,6 +229,34 @@ public class CookieResultMatchers {
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert a cookie's specified attribute with a Hamcrest {@link Matcher}.
|
||||
* @param cookieAttribute the name of the Cookie attribute (case-insensitive)
|
||||
* @since 6.0.8
|
||||
*/
|
||||
public ResultMatcher attribute(String cookieName, String cookieAttribute, Matcher<? super String> matcher) {
|
||||
return result -> {
|
||||
Cookie cookie = getCookie(result, cookieName);
|
||||
String attribute = cookie.getAttribute(cookieAttribute);
|
||||
assertNotNull("Response cookie '" + cookieName + "' doesn't have attribute '" + cookieAttribute + "'", attribute);
|
||||
assertThat("Response cookie '" + cookieName + "' attribute '" + cookieAttribute + "'",
|
||||
attribute, matcher);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert a cookie's specified attribute.
|
||||
* @param cookieAttribute the name of the Cookie attribute (case-insensitive)
|
||||
* @since 6.0.8
|
||||
*/
|
||||
public ResultMatcher attribute(String cookieName, String cookieAttribute, String attributeValue) {
|
||||
return result -> {
|
||||
Cookie cookie = getCookie(result, cookieName);
|
||||
assertEquals("Response cookie '" + cookieName + "' attribute '" + cookieAttribute + "'",
|
||||
attributeValue, cookie.getAttribute(cookieAttribute));
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
private static Cookie getCookie(MvcResult result, String name) {
|
||||
Cookie cookie = result.getResponse().getCookie(name);
|
||||
|
||||
Reference in New Issue
Block a user