package cn.iocoder.yudao.framework.web.core.handler;
|
|
import jakarta.servlet.http.HttpServletResponse;
|
import org.junit.jupiter.api.Test;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.context.request.async.AsyncRequestNotUsableException;
|
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
|
import java.io.IOException;
|
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
|
class GlobalExceptionHandlerClientAbortTest {
|
|
@Test
|
void doesNotSerializeJsonAfterZipResponseBecomesUnusable() throws Exception {
|
MockMvcBuilders.standaloneSetup(new ZipController())
|
.setControllerAdvice(new GlobalExceptionHandler("test", null))
|
.build()
|
.perform(get("/zip"))
|
.andExpect(status().isOk())
|
.andExpect(content().bytes(new byte[0]));
|
}
|
|
@RestController
|
static class ZipController {
|
|
@GetMapping("/zip")
|
public void download(HttpServletResponse response) throws IOException {
|
response.setContentType("application/zip");
|
response.flushBuffer();
|
throw new AsyncRequestNotUsableException("client disconnected");
|
}
|
|
}
|
|
}
|