Search in sources :

Example 1 with MessageEvent

use of com.launchdarkly.eventsource.MessageEvent in project syndesis by syndesisio.

the class EventsITCase method sseEventsWithToken.

@Test
public void sseEventsWithToken() throws Exception {
    ResponseEntity<EventMessage> r1 = post("/api/v1/event/reservations", null, EventMessage.class);
    assertThat(r1.getBody().getEvent().get()).as("event").isEqualTo("uuid");
    String uuid = (String) r1.getBody().getData().get();
    assertThat(uuid).as("data").isNotNull();
    URI uri = resolveURI(EventBusToServerSentEvents.DEFAULT_PATH + "/" + uuid);
    // lets setup an event handler that we can inspect events on..
    EventHandler handler = recorder(mock(EventHandler.class), EventHandler.class);
    List<Recordings.Invocation> invocations = recordedInvocations(handler);
    CountDownLatch countDownLatch = resetRecorderLatch(handler, 2);
    try (EventSource eventSource = new EventSource.Builder(handler, uri).build()) {
        eventSource.start();
        assertThat(countDownLatch.await(1000, TimeUnit.SECONDS)).isTrue();
        // workaround issues in EventSource
        reorderEventSourceInvocations(invocations);
        assertThat(invocations.get(0).getMethod().getName()).isEqualTo("onOpen");
        // We auto get a message letting us know we connected.
        assertThat(invocations.get(1).getMethod().getName()).isEqualTo("onMessage");
        assertThat(invocations.get(1).getArgs()[0]).isEqualTo("message");
        assertThat(((MessageEvent) invocations.get(1).getArgs()[1]).getData()).isEqualTo("connected");
        // ///////////////////////////////////////////////////
        // Test that we get notified of created entities
        // ///////////////////////////////////////////////////
        invocations.clear();
        countDownLatch = resetRecorderLatch(handler, 1);
        Integration integration = new Integration.Builder().id("1001").name("test").build();
        post("/api/v1/integrations", integration, Integration.class);
        assertThat(countDownLatch.await(1000, TimeUnit.SECONDS)).isTrue();
        assertThat(invocations.get(0).getArgs()[0]).isEqualTo("change-event");
        assertThat(((MessageEvent) invocations.get(0).getArgs()[1]).getData()).isEqualTo(ChangeEvent.of("created", "integration", "1001").toJson());
    }
}
Also used : Integration(io.syndesis.common.model.integration.Integration) MessageEvent(com.launchdarkly.eventsource.MessageEvent) EventHandler(com.launchdarkly.eventsource.EventHandler) CountDownLatch(java.util.concurrent.CountDownLatch) URI(java.net.URI) EventSource(com.launchdarkly.eventsource.EventSource) EventMessage(io.syndesis.common.model.EventMessage) Test(org.junit.Test)

Aggregations

EventHandler (com.launchdarkly.eventsource.EventHandler)1 EventSource (com.launchdarkly.eventsource.EventSource)1 MessageEvent (com.launchdarkly.eventsource.MessageEvent)1 EventMessage (io.syndesis.common.model.EventMessage)1 Integration (io.syndesis.common.model.integration.Integration)1 URI (java.net.URI)1 CountDownLatch (java.util.concurrent.CountDownLatch)1 Test (org.junit.Test)1