public void Should_throw_friendly_exception_when_IMutateIncomingMessages_MutateIncoming_returns_null() { var behavior = new MutateIncomingMessageBehavior(hasIncomingMessageMutators: true); var logicalMessage = new LogicalMessage(new MessageMetadata(typeof(TestMessage)), new TestMessage()); var context = new TestableIncomingLogicalMessageContext { Message = logicalMessage }; context.Builder.Register<IMutateIncomingMessages>(() => new MutateIncomingMessagesReturnsNull()); Assert.That(async () => await behavior.Invoke(context, ctx => TaskEx.CompletedTask), Throws.Exception.With.Message.EqualTo("Return a Task or mark the method as async.")); }
public async Task Incoming_databus_properties_should_be_hydrated() { var propertyKey = Guid.NewGuid().ToString(); var databusKey = Guid.NewGuid().ToString(); var message = new LogicalMessage(new MessageMetadata(typeof(MessageWithDataBusProperty)), new MessageWithDataBusProperty { DataBusProperty = new DataBusProperty<string>("not used in this test") { Key = propertyKey } }); var fakeDatabus = new FakeDataBus(); var receiveBehavior = new DataBusReceiveBehavior(fakeDatabus, new DefaultDataBusSerializer(), new Conventions()); using (var stream = new MemoryStream()) { new BinaryFormatter().Serialize(stream, "test"); stream.Position = 0; fakeDatabus.StreamsToReturn[databusKey] = stream; await receiveBehavior.Invoke( new IncomingLogicalMessageContext( message, "messageId", "replyToAddress", new Dictionary<string, string> { {"NServiceBus.DataBus." + propertyKey, databusKey} }, null), ctx => TaskEx.CompletedTask); } var instance = (MessageWithDataBusProperty)message.Instance; Assert.AreEqual(instance.DataBusProperty.Value, "test"); }