public async Task TestReceiveMessagingChannelAbandon() { IProtocolGatewayMessage msg = null; IMessageConverter <IProtocolGatewayMessage> messageConverter = ProtocolGatewayMessageConverter.Value; var dp = new DeviceProxy(Channel.Object, MockIdentity, messageConverter, ByteBufferConverter); var cloudProxy = new Mock <ICloudProxy>(); cloudProxy.Setup(d => d.SendFeedbackMessageAsync(It.IsAny <string>(), It.IsAny <FeedbackStatus>())).Callback <string, FeedbackStatus>( (mid, status) => { Assert.Equal(FeedbackStatus.Abandon, status); }); var connectionManager = new Mock <IConnectionManager>(); connectionManager.Setup(c => c.GetCloudConnection(It.IsAny <string>())) .Returns(Task.FromResult(Option.Some(cloudProxy.Object))); var deviceListner = new DeviceMessageHandler(MockIdentity, EdgeHub.Object, connectionManager.Object); var messagingServiceClient = new Mqtt.MessagingServiceClient(deviceListner, messageConverter, ByteBufferConverter); Channel.Setup(r => r.Handle(It.IsAny <IProtocolGatewayMessage>())) .Callback <IProtocolGatewayMessage>( m => { msg = m; messagingServiceClient.AbandonAsync(msg.Id); }); messagingServiceClient.BindMessagingChannel(Channel.Object); Core.IMessage message = new EdgeMessage.Builder(new byte[] { 1, 2, 3 }).Build(); await dp.SendC2DMessageAsync(message); Assert.NotNull(msg); }
public async Task TestAbandonAsyncDoesNothingWhenMessageIdIsInvalid(string messageId) { // Arrange IMessageConverter <IProtocolGatewayMessage> messageConverter = ProtocolGatewayMessageConverter.Value; var deviceListener = new Mock <IDeviceListener>(MockBehavior.Strict); // Act var messagingServiceClient = new Mqtt.MessagingServiceClient(deviceListener.Object, messageConverter, ByteBufferConverter); await messagingServiceClient.AbandonAsync(messageId); // Assert deviceListener.VerifyAll(); }
public async Task TestAbandonAsyncCallsDeviceListener() { // Arrange string messageId = Guid.NewGuid().ToString(); IMessageConverter <IProtocolGatewayMessage> messageConverter = ProtocolGatewayMessageConverter.Value; var deviceListener = new Mock <IDeviceListener>(MockBehavior.Strict); deviceListener.Setup(d => d.ProcessMessageFeedbackAsync( It.Is <string>(s => s.Equals(messageId, StringComparison.OrdinalIgnoreCase)), It.Is <FeedbackStatus>(f => f == FeedbackStatus.Abandon))) .Returns(TaskEx.Done); // Act var messagingServiceClient = new Mqtt.MessagingServiceClient(deviceListener.Object, messageConverter, ByteBufferConverter); await messagingServiceClient.AbandonAsync(messageId); // Assert deviceListener.VerifyAll(); }