I'm using the following dependency for using MockHttpServletResponse
for unit tests.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>6.0.0-M4</version>
<scope>test</scope>
</dependency>
Please see below test case where it shows that addHeader/getHeader
methods from MockHttpServletResponse
object do not return the same value; particularly the Comment
part is stripped out.
I tried adding the same in Jetty container, and Jetty does not seem to strip the comment part. Also note that other header names like Set-CookieTest
preserve the Comment
part which seems to indicate that it only strips when encountering the Set-Cookie
header name.
@Test
void addHeader() throws Exception {
MockHttpServletResponse servletResponse = new MockHttpServletResponse();
servletResponse.addHeader("Set-Cookie", "NOT_SAFE=;Domain=mydomain.com;Comment=COOKIECLEANER;Path=/;Expires=Thu, 01 Jan 1970 00:00:00 GMT");
System.out.println("MockHttpServletResponse: " + servletResponse.getHeader("Set-Cookie"));
}
Output:
MockHttpServletResponse: NOT_SAFE=; Path=/; Domain=mydomain.com; Expires=Thu, 1 Jan 1970 00:00:00 GMT
Comment From: sbrannen
That's correct.
Currently, MockHttpServletResponse.getCookieHeader(Cookie)
does not include the value from jakarta.servlet.http.Cookie.getComment()
.
The counterpart to this issue is that MockCookie.parse(String)
does not parse the Comment
attribute.
So we have to fix it on both sides.
Comment From: sbrannen
This has been addressed for 5.3.22 and 6.0 M5 in 9ea45697ac5f99bd8f62a8391bdec4bbe35efab1.
Comment From: charlesk40
Great. Thank you!