Merge branch '5.3.x'
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2021 the original author or authors.
|
* Copyright 2002-2022 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.springframework.test.web.servlet.result;
|
package org.springframework.test.web.servlet.result;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -27,6 +28,7 @@ import jakarta.servlet.http.HttpSession;
|
|||||||
|
|
||||||
import org.springframework.core.style.ToStringCreator;
|
import org.springframework.core.style.ToStringCreator;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.lang.Nullable;
|
import org.springframework.lang.Nullable;
|
||||||
import org.springframework.mock.web.MockHttpServletRequest;
|
import org.springframework.mock.web.MockHttpServletRequest;
|
||||||
import org.springframework.mock.web.MockHttpServletResponse;
|
import org.springframework.mock.web.MockHttpServletResponse;
|
||||||
@@ -248,7 +250,9 @@ public class PrintingResultHandler implements ResultHandler {
|
|||||||
this.printer.printValue("Error message", response.getErrorMessage());
|
this.printer.printValue("Error message", response.getErrorMessage());
|
||||||
this.printer.printValue("Headers", getResponseHeaders(response));
|
this.printer.printValue("Headers", getResponseHeaders(response));
|
||||||
this.printer.printValue("Content type", response.getContentType());
|
this.printer.printValue("Content type", response.getContentType());
|
||||||
this.printer.printValue("Body", response.getContentAsString());
|
String body = (MediaType.APPLICATION_JSON_VALUE.equals(response.getContentType()) ?
|
||||||
|
response.getContentAsString(StandardCharsets.UTF_8) : response.getContentAsString());
|
||||||
|
this.printer.printValue("Body", body);
|
||||||
this.printer.printValue("Forwarded URL", response.getForwardedUrl());
|
this.printer.printValue("Forwarded URL", response.getForwardedUrl());
|
||||||
this.printer.printValue("Redirected URL", response.getRedirectedUrl());
|
this.printer.printValue("Redirected URL", response.getRedirectedUrl());
|
||||||
printCookies(response.getCookies());
|
printCookies(response.getCookies());
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2021 the original author or authors.
|
* Copyright 2002-2022 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -22,10 +22,12 @@ import jakarta.servlet.http.Cookie;
|
|||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.test.web.servlet.result.PrintingResultHandler;
|
import org.springframework.test.web.servlet.result.PrintingResultHandler;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.fail;
|
import static org.assertj.core.api.Assertions.fail;
|
||||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
||||||
@@ -60,6 +62,22 @@ class PrintingResultHandlerIntegrationTests {
|
|||||||
.contains("Headers = [Set-Cookie:\"enigma=42\", Content-Type:\"text/plain;charset=ISO-8859-1\", Content-Length:\"14\"]");
|
.contains("Headers = [Set-Cookie:\"enigma=42\", Content-Type:\"text/plain;charset=ISO-8859-1\", Content-Length:\"14\"]");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void printMvcResultsToWriterWithJsonResponseBodyInterpretedAsUtf8() throws Exception {
|
||||||
|
StringWriter writer = new StringWriter();
|
||||||
|
|
||||||
|
standaloneSetup(new SimpleController()).build()
|
||||||
|
// "Hallöchen" is German slang for "hello".
|
||||||
|
.perform(get("/utf8").accept(MediaType.APPLICATION_JSON).content("Hallöchen, Welt!".getBytes()).characterEncoding(UTF_8))
|
||||||
|
.andDo(print(writer))
|
||||||
|
// "Grüß dich!" is German for "greetings to you".
|
||||||
|
.andExpect(content().bytes("Grüß dich!".getBytes()));
|
||||||
|
|
||||||
|
assertThat(writer).asString()
|
||||||
|
.contains("Body = Hallöchen, Welt!")
|
||||||
|
.contains("Body = Grüß dich!");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void printMvcResultsToWriterWithFailingGlobalResultMatcher() throws Exception {
|
void printMvcResultsToWriterWithFailingGlobalResultMatcher() throws Exception {
|
||||||
StringWriter writer = new StringWriter();
|
StringWriter writer = new StringWriter();
|
||||||
@@ -91,6 +109,11 @@ class PrintingResultHandlerIntegrationTests {
|
|||||||
response.addCookie(new Cookie("enigma", "42"));
|
response.addCookie(new Cookie("enigma", "42"));
|
||||||
return "Hello Response";
|
return "Hello Response";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/utf8")
|
||||||
|
String utf8(HttpServletResponse response) {
|
||||||
|
return "Grüß dich!";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user