@Test
public void manageConnectionWith2Clients() throws Exception {

    startSecondActorSystemAndJoinCluster();
    new TestKit(actorSystem) {{
        final TestProbe probe = TestProbe.apply(actorSystem);
        final ActorRef underTest =
                TestConstants.createConnectionSupervisorActor(connectionId, actorSystem, pubSubMediator,
                        proxyActor,
                        (connection, concierge, connectionActor) -> MockClientActor.props(probe.ref()));
        watch(underTest);
        // create closed connection
        underTest.tell(createClosedConnectionWith2Clients, getRef());
        expectMsgClass(CreateConnectionResponse.class);
        // open connection: only local client actor is asked for a response.
        underTest.tell(openConnection, getRef());
        probe.expectMsg(openConnection);
        expectMsgClass(OpenConnectionResponse.class);
        // forward signal once
        underTest.tell(thingModified, getRef());
        final Object outboundSignal = probe.expectMsgClass(Object.class);
        assertThat(outboundSignal).isInstanceOf(OutboundSignal.class);
        // probe.expectMsg(OutboundSignal.class); // does not work for some reason
        // close connection: at least 1 client actor gets the command; the other may or may not be started.
        underTest.tell(closeConnection, getRef());
        probe.expectMsg(closeConnection);
        expectMsg(closeConnectionResponse);
        // delete connection
        underTest.tell(deleteConnection, getRef());
        expectMsg(deleteConnectionResponse);
        expectTerminated(underTest);
    }};
}