// Tests_SRS_AMQPSIOTHUBCONNECTIONBASEHANDLER_14_017: [The event handler shall get the Sender // (Proton) object from the link.] // Tests_SRS_AMQPSIOTHUBCONNECTIONBASEHANDLER_14_018: [The event handler shall encode the message // and copy the contents to the byte buffer.] // Tests_SRS_AMQPSIOTHUBCONNECTIONBASEHANDLER_14_019: [The event handler shall set the delivery // tag on the Sender (Proton) object.] // Tests_SRS_AMQPSIOTHUBCONNECTIONBASEHANDLER_14_020: [The event handler shall send the encoded // bytes.] // Tests_SRS_AMQPSIOTHUBCONNECTIONBASEHANDLER_14_021: [The event handler shall advance the Sender // and complete the sent message CompletableFuture using the Delivery (Proton) object hash code.] @Test public void onLinkFlowFullTest(@Mocked final CompletableFuture<Integer> mockFuture) { final String hostName = "test.host.name"; final String deviceId = "test-deviceId"; final String userName = "******"; final String sasToken = "test-token"; final byte[] msgBody = {0x61, 0x62, 0x63}; final int tag = 0; new NonStrictExpectations() { { mockMessage.encode(msgBody, 0, msgBody.length); result = 3; mockEvent.getLink(); result = mockSender; mockSender.getCredit(); result = 1; mockSender.getUnsettled(); result = 0; } }; AmqpsIotHubConnectionBaseHandler handler = new AmqpsIotHubConnectionBaseHandler( hostName, userName, sasToken, deviceId, mockIotHubConnection); Deencapsulation.setField(handler, "sender", mockSender); Deencapsulation.setField(handler, "currentSentMessageFuture", mockFuture); handler.createBinaryMessage(msgBody, null); handler.onLinkFlow(mockEvent); new Verifications() { { mockEvent.getLink(); byte[] buffer = new byte[1024]; int length = mockMessage.encode(buffer, 0, buffer.length); byte[] deliveryTag = String.valueOf(tag).getBytes(); Delivery d = mockSender.delivery(deliveryTag); mockSender.send((byte[]) any, 0, length); mockSender.advance(); mockFuture.complete(d.hashCode()); } }; }