Add support for documenting request and response cookies
See gh-592
This commit is contained in:
committed by
Andy Wilkinson
parent
15980d7486
commit
f72a9f1067
@@ -16,6 +16,11 @@
|
||||
|
||||
package org.springframework.restdocs.mockmvc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import jakarta.servlet.http.Cookie;
|
||||
|
||||
import org.springframework.http.HttpHeaders;
|
||||
@@ -23,6 +28,7 @@ import org.springframework.mock.web.MockHttpServletResponse;
|
||||
import org.springframework.restdocs.operation.OperationResponse;
|
||||
import org.springframework.restdocs.operation.OperationResponseFactory;
|
||||
import org.springframework.restdocs.operation.ResponseConverter;
|
||||
import org.springframework.restdocs.operation.ResponseCookie;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
@@ -30,13 +36,28 @@ import org.springframework.util.StringUtils;
|
||||
* {@link MockHttpServletResponse}.
|
||||
*
|
||||
* @author Andy Wilkinson
|
||||
* @author Clyde Stubbs
|
||||
*/
|
||||
class MockMvcResponseConverter implements ResponseConverter<MockHttpServletResponse> {
|
||||
|
||||
@Override
|
||||
public OperationResponse convert(MockHttpServletResponse mockResponse) {
|
||||
return new OperationResponseFactory().create(mockResponse.getStatus(), extractHeaders(mockResponse),
|
||||
mockResponse.getContentAsByteArray());
|
||||
HttpHeaders headers = extractHeaders(mockResponse);
|
||||
Collection<ResponseCookie> cookies = extractCookies(mockResponse, headers);
|
||||
return new OperationResponseFactory().create(mockResponse.getStatus(), headers,
|
||||
mockResponse.getContentAsByteArray(), cookies);
|
||||
}
|
||||
|
||||
private Collection<ResponseCookie> extractCookies(MockHttpServletResponse mockRequest, HttpHeaders headers) {
|
||||
if (mockRequest.getCookies() == null || mockRequest.getCookies().length == 0) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
List<ResponseCookie> cookies = new ArrayList<>();
|
||||
for (Cookie servletCookie : mockRequest.getCookies()) {
|
||||
cookies.add(new ResponseCookie(servletCookie.getName(), servletCookie.getValue()));
|
||||
}
|
||||
headers.remove(HttpHeaders.COOKIE);
|
||||
return cookies;
|
||||
}
|
||||
|
||||
private HttpHeaders extractHeaders(MockHttpServletResponse response) {
|
||||
|
||||
Reference in New Issue
Block a user