Skip to content

Commit 4311b87

Browse files
authored
Merge pull request #44903 from dastrobu/test/sse-response-header-test
Take RestMulti headers and status into account when using SSE resource method
2 parents 2fdb9c5 + 0024c7f commit 4311b87

File tree

3 files changed

+264
-52
lines changed

3 files changed

+264
-52
lines changed

extensions/resteasy-reactive/rest/deployment/src/test/java/io/quarkus/resteasy/reactive/server/test/headers/ResponseHeaderTest.java

Lines changed: 147 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,105 @@ public void testReturnRestMulti5() {
225225
"header2", "h2"));
226226
}
227227

228+
@Test
229+
public void testReturnRestSse() {
230+
Map<String, String> expectedHeaders = Map.of(
231+
"Access-Control-Allow-Origin", "foo",
232+
"Keep-Alive", "bar");
233+
RestAssured
234+
.given()
235+
.get("/test/rest-sse")
236+
.then()
237+
.statusCode(200)
238+
.headers(expectedHeaders);
239+
}
240+
241+
@Test
242+
public void testReturnRestSse2() {
243+
RestAssured
244+
.given()
245+
.get("/test/rest-sse2")
246+
.then()
247+
.statusCode(200)
248+
.headers(Map.of(
249+
"Access-Control-Allow-Origin", "foo",
250+
"Keep-Alive", "bar"));
251+
252+
RestAssured
253+
.given()
254+
.get("/test/rest-sse2?keepAlive=dummy")
255+
.then()
256+
.statusCode(200)
257+
.headers(Map.of(
258+
"Access-Control-Allow-Origin", "foo",
259+
"Keep-Alive", "dummy"));
260+
}
261+
262+
@Test
263+
public void testReturnRestSse3() {
264+
RestAssured
265+
.given()
266+
.get("/test/rest-sse3")
267+
.then()
268+
.statusCode(200)
269+
.headers(Map.of(
270+
"header1", "foo",
271+
"header2", "bar"));
272+
273+
RestAssured
274+
.given()
275+
.get("/test/rest-sse3?h1=h1&h2=h2")
276+
.then()
277+
.statusCode(200)
278+
.headers(Map.of(
279+
"header1", "h1",
280+
"header2", "h2"));
281+
}
282+
283+
@Test
284+
public void testReturnRestSse4() {
285+
RestAssured
286+
.given()
287+
.get("/test/rest-sse2")
288+
.then()
289+
.statusCode(200)
290+
.contentType(MediaType.SERVER_SENT_EVENTS)
291+
.headers(Map.of(
292+
"Access-Control-Allow-Origin", "foo",
293+
"Keep-Alive", "bar"));
294+
295+
RestAssured
296+
.given()
297+
.get("/test/rest-sse2?keepAlive=dummy")
298+
.then()
299+
.statusCode(200)
300+
.contentType(MediaType.SERVER_SENT_EVENTS)
301+
.headers(Map.of(
302+
"Access-Control-Allow-Origin", "foo",
303+
"Keep-Alive", "dummy"));
304+
}
305+
306+
@Test
307+
public void testReturnRestSse5() {
308+
RestAssured
309+
.given()
310+
.get("/test/rest-sse3")
311+
.then()
312+
.statusCode(200)
313+
.headers(Map.of(
314+
"header1", "foo",
315+
"header2", "bar"));
316+
317+
RestAssured
318+
.given()
319+
.get("/test/rest-sse3?h1=h1&h2=h2")
320+
.then()
321+
.statusCode(200)
322+
.headers(Map.of(
323+
"header1", "h1",
324+
"header2", "h2"));
325+
}
326+
228327
@Path("/test")
229328
public static class TestResource {
230329

@@ -301,37 +400,80 @@ public String throwExceptionPlain() {
301400
@ResponseHeader(name = "Keep-Alive", value = "timeout=5, max=997")
302401
@GET
303402
@Path("/rest-multi")
304-
public RestMulti<String> getTestRestMulti() {
403+
public Multi<String> getTestRestMulti() {
305404
return RestMulti.fromMultiData(Multi.createFrom().item("test")).header("Access-Control-Allow-Origin", "foo")
306405
.header("Keep-Alive", "bar").build();
307406
}
308407

309408
@GET
310409
@Path("/rest-multi2")
311-
public RestMulti<String> getTestRestMulti2(@DefaultValue("bar") @RestQuery String keepAlive) {
410+
public Multi<String> getTestRestMulti2(@DefaultValue("bar") @RestQuery String keepAlive) {
312411
return RestMulti.fromMultiData(Multi.createFrom().item("test")).header("Access-Control-Allow-Origin", "foo")
313412
.header("Keep-Alive", keepAlive).build();
314413
}
315414

316415
@GET
317416
@Path("/rest-multi3")
318417
@Produces("application/octet-stream")
319-
public RestMulti<byte[]> getTestRestMulti3(@DefaultValue("foo") @RestQuery("h1") String header1,
418+
public Multi<byte[]> getTestRestMulti3(@DefaultValue("foo") @RestQuery("h1") String header1,
320419
@DefaultValue("bar") @RestQuery("h2") String header2) {
321420
return RestMulti.fromUniResponse(getWrapper(header1, header2), Wrapper::getData, Wrapper::getHeaders);
322421
}
323422

324423
@GET
325424
@Path("/rest-multi4")
326-
public RestMulti<byte[]> getTestRestMulti4(@DefaultValue("bar") @RestQuery String keepAlive) {
425+
public Multi<byte[]> getTestRestMulti4(@DefaultValue("bar") @RestQuery String keepAlive) {
327426
return RestMulti.fromMultiData(Multi.createFrom().item("test".getBytes(StandardCharsets.UTF_8)))
328427
.header("Access-Control-Allow-Origin", "foo")
329428
.header("Keep-Alive", keepAlive).header("Content-Type", MediaType.TEXT_PLAIN).build();
330429
}
331430

332431
@GET
333432
@Path("/rest-multi5")
334-
public RestMulti<byte[]> getTestRestMulti5(@DefaultValue("foo") @RestQuery("h1") String header1,
433+
public Multi<byte[]> getTestRestMulti5(@DefaultValue("foo") @RestQuery("h1") String header1,
434+
@DefaultValue("bar") @RestQuery("h2") String header2) {
435+
return RestMulti.fromUniResponse(getWrapper(header1, header2), Wrapper::getData, Wrapper::getHeaders);
436+
}
437+
438+
@ResponseHeader(name = "Access-Control-Allow-Origin", value = "*")
439+
@ResponseHeader(name = "Keep-Alive", value = "timeout=5, max=997")
440+
@GET
441+
@Path("/rest-sse")
442+
@Produces(MediaType.SERVER_SENT_EVENTS)
443+
public Multi<String> getTestRestSse() {
444+
return RestMulti.fromMultiData(Multi.createFrom().item("test")).header("Access-Control-Allow-Origin", "foo")
445+
.header("Keep-Alive", "bar").build();
446+
}
447+
448+
@GET
449+
@Path("/rest-sse2")
450+
@Produces(MediaType.SERVER_SENT_EVENTS)
451+
public Multi<String> getTestRestSse2(@DefaultValue("bar") @RestQuery String keepAlive) {
452+
return RestMulti.fromMultiData(Multi.createFrom().item("test")).header("Access-Control-Allow-Origin", "foo")
453+
.header("Keep-Alive", keepAlive).build();
454+
}
455+
456+
@GET
457+
@Path("/rest-sse3")
458+
@Produces(MediaType.SERVER_SENT_EVENTS)
459+
public Multi<byte[]> getTestRestSse3(@DefaultValue("foo") @RestQuery("h1") String header1,
460+
@DefaultValue("bar") @RestQuery("h2") String header2) {
461+
return RestMulti.fromUniResponse(getWrapper(header1, header2), Wrapper::getData, Wrapper::getHeaders);
462+
}
463+
464+
@GET
465+
@Path("/rest-sse4")
466+
@Produces(MediaType.SERVER_SENT_EVENTS)
467+
public Multi<byte[]> getTestRestSse4(@DefaultValue("bar") @RestQuery String keepAlive) {
468+
return RestMulti.fromMultiData(Multi.createFrom().item("test".getBytes(StandardCharsets.UTF_8)))
469+
.header("Access-Control-Allow-Origin", "foo")
470+
.header("Keep-Alive", keepAlive).header("Content-Type", MediaType.TEXT_PLAIN).build();
471+
}
472+
473+
@GET
474+
@Path("/rest-sse5")
475+
@Produces(MediaType.SERVER_SENT_EVENTS)
476+
public Multi<byte[]> getTestRestSse5(@DefaultValue("foo") @RestQuery("h1") String header1,
335477
@DefaultValue("bar") @RestQuery("h2") String header2) {
336478
return RestMulti.fromUniResponse(getWrapper(header1, header2), Wrapper::getData, Wrapper::getHeaders);
337479
}

0 commit comments

Comments
 (0)