@Test
public void testHandleSignalWithAcknowledgementRequest() {

    new TestKit(actorSystem) {{
        final TestKit probe = new TestKit(actorSystem);
        final ActorRef underTest =
                TestConstants.createConnectionSupervisorActor(connectionId, actorSystem, proxyActor,
                        (connection, connectionActor, proxyActor) -> TestActor.props(probe),
                        TestConstants.dummyDittoProtocolSub(pubSubMediator, dittoProtocolSubMock), pubSubMediator);
        watch(underTest);
        // create connection
        underTest.tell(createConnection, getRef());
        expectMsgClass(CreateConnectionResponse.class);
        // Wait until connection is established
        expectAnySubscribe();
        final AcknowledgementLabel acknowledgementLabel = AcknowledgementLabel.of("test-ack");
        final DittoHeaders dittoHeaders = DittoHeaders.newBuilder()
                .acknowledgementRequest(AcknowledgementRequest.of(acknowledgementLabel))
                .readGrantedSubjects(Collections.singleton(TestConstants.Authorization.SUBJECT))
                .timeout("2s")
                .randomCorrelationId()
                .build();
        final AttributeModified attributeModified = AttributeModified.of(
                TestConstants.Things.THING_ID, JsonPointer.of("hello"), JsonValue.of("world!"), 5L, dittoHeaders);
        underTest.tell(attributeModified, getRef());
        final OutboundSignal unmappedOutboundSignal = probe.expectMsgClass(OutboundSignal.class);
        assertThat(unmappedOutboundSignal.getSource()).isEqualTo(attributeModified);
        final Acknowledgement acknowledgement =
                Acknowledgement.of(acknowledgementLabel, TestConstants.Things.THING_ID, HttpStatusCode.OK,
                        dittoHeaders);
        underTest.tell(acknowledgement, getRef());
        expectMsg(acknowledgement);
    }};
}