public void ShouldAttachCorrelationId() { var messageOperatorMock = new Mock <IMessageOperator>(); messageOperatorMock.Setup(mo => mo.Apply(It.IsAny <IMessage>())) .Returns <IMessage>( m => new List <IMessage> { m }); var busContextMock = new Mock <IBusContext>(); busContextMock.Setup(bc => bc.Emit(It.IsAny <MessageLabel>(), It.IsAny <object>(), It.IsAny <IDictionary <string, object> >())); busContextMock.SetupGet(bc => bc.Endpoint) .Returns(new Endpoint(string.Empty)); var deliveryMock = new Mock <IDelivery>(); var consumingContextMock = new Mock <IConsumingContext <object> >(); consumingContextMock.As <IDeliveryContext>() .SetupGet(cc => cc.Delivery) .Returns(deliveryMock.Object); consumingContextMock.SetupGet(cc => cc.Bus) .Returns(busContextMock.Object); consumingContextMock.SetupGet(cc => cc.Message) .Returns(new Message <object>("label".ToMessageLabel(), new Dictionary <string, object>(), new object())); var sut = new OperatorConsumerOf <object>(messageOperatorMock.Object); sut.Handle(consumingContextMock.Object); busContextMock.Verify(bc => bc.Emit(It.IsAny <MessageLabel>(), It.IsAny <object>(), It.Is <IDictionary <string, object> >(value => value.ContainsKey(Headers.OriginalMessageId) && !string.IsNullOrEmpty(Headers.GetString(value, Headers.OriginalMessageId)))), Times.Once, "Должен быть установлен заголовок Headers.CorrelationId"); }
public void ShouldAttachBreadcrumb() { var address = "test"; var messageOperatorMock = new Mock<IMessageOperator>(); messageOperatorMock.Setup(mo => mo.Apply(It.IsAny<IMessage>())).Returns<IMessage>(m => new List<IMessage> { m }); var busContextMock = new Mock<IBusContext>(); busContextMock.Setup(bc => bc.Emit(It.IsAny<MessageLabel>(), It.IsAny<object>(), It.IsAny<IDictionary<string, object>>())); busContextMock.SetupGet(bc => bc.Endpoint).Returns(new Endpoint(address)); var deliveryMock = new Mock<IDelivery>(); var consumingContextMock = new Mock<IConsumingContext<object>>(); consumingContextMock.As<IDeliveryContext>().SetupGet(cc => cc.Delivery).Returns(deliveryMock.Object); consumingContextMock.SetupGet(cc => cc.Bus).Returns(busContextMock.Object); consumingContextMock.SetupGet(cc => cc.Message) .Returns(new Message<object>("label".ToMessageLabel(), new Dictionary<string, object>(), new object())); var sut = new OperatorConsumerOf<object>(messageOperatorMock.Object); sut.Handle(consumingContextMock.Object); busContextMock .Verify( bc => bc.Emit( It.IsAny<MessageLabel>(), It.IsAny<object>(), It.Is<IDictionary<string, object>>( value => value.ContainsKey(Headers.Breadcrumbs) && Headers.GetString(value, Headers.Breadcrumbs) == address)), Times.Once, "Должен быть установлен заголовок Headers.Breadcrumbs"); }
public void ShouldSetBusProcessingContext() { var messageOperatorMock = new Mock <IMessageOperator>(); IDelivery deliveryFromProcessingContext = null; IBusContext busContextFromProcessingContext = null; messageOperatorMock.Setup(mo => mo.Apply(It.IsAny <IMessage>())) .Returns <IMessage>(m => Enumerable.Empty <IMessage>()) .Callback( (IMessage m) => { deliveryFromProcessingContext = BusProcessingContext.Current.Delivery; busContextFromProcessingContext = BusProcessingContext.Current.BusContext; }); var busContextMock = new Mock <IBusContext>(); var deliveryMock = new Mock <IDelivery>(); var consumingContextMock = new Mock <IConsumingContext <object> >(); consumingContextMock.As <IDeliveryContext>() .SetupGet(cc => cc.Delivery) .Returns(deliveryMock.Object); consumingContextMock.SetupGet(cc => cc.Bus) .Returns(busContextMock.Object); consumingContextMock.SetupGet(cc => cc.Message) .Returns(new Message <object>("label".ToMessageLabel(), new Dictionary <string, object>(), new object())); var sut = new OperatorConsumerOf <object>(messageOperatorMock.Object); sut.Handle(consumingContextMock.Object); Assert.AreEqual(busContextMock.Object, busContextFromProcessingContext); Assert.AreEqual(deliveryMock.Object, deliveryFromProcessingContext); }