package io.vertx.ext.web.handler.sse; import io.vertx.junit5.Timeout; import io.vertx.junit5.VertxExtension; import io.vertx.junit5.VertxTestContext; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import java.util.concurrent.TimeUnit; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; @ExtendWith(VertxExtension.class) class TestClose extends TestBase { private void waitSafely() { try { Thread.sleep(100); // NOSONAR } catch (InterruptedException ie) {} // NOSONAR } @Test @Timeout(value = 5, timeUnit = TimeUnit.SECONDS) void closeHandlerOnServer(VertxTestContext context) { final EventSource eventSource = eventSource(); eventSource.connect("/sse?token=" + TOKEN, handler -> { context.verify(() -> { assertTrue(handler.succeeded()); assertNotNull(connection); sseHandler.closeHandler(sse -> { context.completeNow(); }); waitSafely(); eventSource.close(); /* closed by client */ }); }); } @Test void closeHandlerOnClient(VertxTestContext context) { final EventSource eventSource = eventSource(); eventSource.onClose(handler -> context.completeNow()); eventSource.connect("/sse?token=" + TOKEN, handler -> { context.verify(() -> { assertNotNull(connection); }); connection.close(); }); } }