Added ClientResponse.cookies()
Added cookies() method on ClientResponse, that exposes the response cookies. Issue: SPR-15236
This commit is contained in:
parent
2a512d7b9f
commit
da4af6157e
|
|
@ -26,7 +26,9 @@ import reactor.core.publisher.Mono;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.http.ResponseCookie;
|
||||||
import org.springframework.http.client.reactive.ClientHttpResponse;
|
import org.springframework.http.client.reactive.ClientHttpResponse;
|
||||||
|
import org.springframework.util.MultiValueMap;
|
||||||
import org.springframework.web.reactive.function.BodyExtractor;
|
import org.springframework.web.reactive.function.BodyExtractor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -51,6 +53,11 @@ public interface ClientResponse {
|
||||||
*/
|
*/
|
||||||
Headers headers();
|
Headers headers();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return cookies of this response.
|
||||||
|
*/
|
||||||
|
MultiValueMap<String, ResponseCookie> cookies();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extract the body with the given {@code BodyExtractor}. Unlike {@link #bodyToMono(Class)} and
|
* Extract the body with the given {@code BodyExtractor}. Unlike {@link #bodyToMono(Class)} and
|
||||||
* {@link #bodyToFlux(Class)}; this method does not check for a 4xx or 5xx status code before
|
* {@link #bodyToFlux(Class)}; this method does not check for a 4xx or 5xx status code before
|
||||||
|
|
|
||||||
|
|
@ -32,8 +32,10 @@ import reactor.core.publisher.Mono;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.http.ResponseCookie;
|
||||||
import org.springframework.http.client.reactive.ClientHttpResponse;
|
import org.springframework.http.client.reactive.ClientHttpResponse;
|
||||||
import org.springframework.http.codec.HttpMessageReader;
|
import org.springframework.http.codec.HttpMessageReader;
|
||||||
|
import org.springframework.util.MultiValueMap;
|
||||||
import org.springframework.web.reactive.function.BodyExtractor;
|
import org.springframework.web.reactive.function.BodyExtractor;
|
||||||
import org.springframework.web.reactive.function.BodyExtractors;
|
import org.springframework.web.reactive.function.BodyExtractors;
|
||||||
|
|
||||||
|
|
@ -68,6 +70,11 @@ class DefaultClientResponse implements ClientResponse {
|
||||||
return this.headers;
|
return this.headers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MultiValueMap<String, ResponseCookie> cookies() {
|
||||||
|
return this.response.getCookies();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T body(BodyExtractor<T, ? super ClientHttpResponse> extractor) {
|
public <T> T body(BodyExtractor<T, ? super ClientHttpResponse> extractor) {
|
||||||
return extractor.extract(this.response, new BodyExtractor.Context() {
|
return extractor.extract(this.response, new BodyExtractor.Context() {
|
||||||
|
|
|
||||||
|
|
@ -39,11 +39,15 @@ import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.HttpRange;
|
import org.springframework.http.HttpRange;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.http.ResponseCookie;
|
||||||
import org.springframework.http.client.reactive.ClientHttpResponse;
|
import org.springframework.http.client.reactive.ClientHttpResponse;
|
||||||
import org.springframework.http.codec.DecoderHttpMessageReader;
|
import org.springframework.http.codec.DecoderHttpMessageReader;
|
||||||
import org.springframework.http.codec.HttpMessageReader;
|
import org.springframework.http.codec.HttpMessageReader;
|
||||||
|
import org.springframework.util.LinkedMultiValueMap;
|
||||||
|
import org.springframework.util.MultiValueMap;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertSame;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
import static org.springframework.web.reactive.function.BodyExtractors.toMono;
|
import static org.springframework.web.reactive.function.BodyExtractors.toMono;
|
||||||
|
|
@ -96,6 +100,18 @@ public class DefaultClientResponseTests {
|
||||||
assertEquals(httpHeaders, headers.asHttpHeaders());
|
assertEquals(httpHeaders, headers.asHttpHeaders());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void cookies() throws Exception {
|
||||||
|
ResponseCookie cookie = ResponseCookie.from("foo", "bar").build();
|
||||||
|
MultiValueMap<String, ResponseCookie> cookies = new LinkedMultiValueMap<>();
|
||||||
|
cookies.add("foo", cookie);
|
||||||
|
|
||||||
|
when(mockResponse.getCookies()).thenReturn(cookies);
|
||||||
|
|
||||||
|
assertSame(cookies, defaultClientResponse.cookies());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void body() throws Exception {
|
public void body() throws Exception {
|
||||||
DefaultDataBufferFactory factory = new DefaultDataBufferFactory();
|
DefaultDataBufferFactory factory = new DefaultDataBufferFactory();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue