public void PublishingSuccessfully() { const String messageId = "one-id"; var message = NewMessage(); const UInt64 deliveryTag = 0uL; var model = new Mock <IModel>(); model.Setup(_ => _.NextPublishSeqNo).Returns(deliveryTag); var configuration = new EnvironmentConfiguration(); var resolver = new Mock <IMessageTypeResolver>(); resolver.Setup(_ => _.Resolve <Foo>()) .Returns(new MessageBinding(String.Empty, typeof(Foo).GetTypeInfo())); configuration.ResolveMessageTypeBy(resolver.Object); configuration.GeneratesMessageIdBy(StubNewId(messageId).Object); var channel = new OutboundChannelWrapper(model.Object, configuration, StubDateTimeProvider().Object, null); var task = channel.PublishAsync(message, new Exchange("target_exchange", "direct"), String.Empty); channel.CallOnModelBasicAcks(new BasicAckEventArgs { DeliveryTag = deliveryTag }); var result = Assert.IsType <SuccessfulPublishing>(task.Result); Assert.Equal(messageId, result.MessageId); }
public void NegativeAck() { var message = NewMessage(); const UInt64 deliveryTag = 0uL; var model = new Mock <IModel>(); model.Setup(_ => _.NextPublishSeqNo).Returns(deliveryTag); var configuration = new EnvironmentConfiguration(); var resolver = new Mock <IMessageTypeResolver>(); resolver.Setup(_ => _.Resolve <Foo>()) .Returns(new MessageBinding(String.Empty, typeof(Foo).GetTypeInfo())); configuration.ResolveMessageTypeBy(resolver.Object); var channel = new OutboundChannelWrapper(model.Object, configuration, StubDateTimeProvider().Object, null); var task = channel.PublishAsync(message, new Exchange("target_exchange", "direct"), String.Empty); channel.CallOnModelBasicNacks(new BasicNackEventArgs { DeliveryTag = deliveryTag }); var result = Assert.IsType <FailurePublishing>(task.Result); Assert.IsType <NegativeAcknowledgeException>(result.Exception); }
public void ModelShutdown() { var message = NewMessage(); const UInt64 deliveryTag = 0uL; var model = new Mock <IModel>(); model.Setup(_ => _.NextPublishSeqNo).Returns(deliveryTag); var fallbackHandled = false; var configuration = new EnvironmentConfiguration(); var resolver = new Mock <IMessageTypeResolver>(); resolver.Setup(_ => _.Resolve <Foo>()) .Returns(new MessageBinding(String.Empty, typeof(Foo).GetTypeInfo())); configuration.ResolveMessageTypeBy(resolver.Object); var channel = new OutboundChannelWrapper(model.Object, configuration, StubDateTimeProvider().Object, _ => { fallbackHandled = true; }); var task = channel.PublishAsync(message, new Exchange("target_exchange", "direct"), String.Empty); channel.CallOnModelShutdown(new ShutdownEventArgs(ShutdownInitiator.Application, 3, "boom")); var result = Assert.IsType <FailurePublishing>(task.Result); Assert.IsType <MessageNotConfirmedException>(result.Exception); Assert.True(fallbackHandled); }