public async Task Should_set_messageintent_to_reply() { var router = new UnicastReplyRouterConnector(); var context = new TestableOutgoingReplyContext(); context.Extensions.Set(new UnicastReplyRouterConnector.State { ExplicitDestination = "Fake" }); await router.Invoke(context, ctx => TaskEx.CompletedTask); Assert.AreEqual(1, context.Headers.Count); Assert.AreEqual(MessageIntentEnum.Reply.ToString(), context.Headers[Headers.MessageIntent]); }
public void Should_throw_if_incoming_message_has_no_reply_to_address() { var behavior = new UnicastReplyRouterConnector(); var context = CreateContext(new OutgoingLogicalMessage(typeof(MyReply), new MyReply())); context.Extensions.Set(new IncomingMessage( "id", new Dictionary <string, string>(), new byte[0])); Assert.That(async() => await behavior.Invoke(context, _ => TaskEx.CompletedTask), Throws.InstanceOf <Exception>().And.Message.Contains(typeof(MyReply).FullName)); }
public void Should_throw_if_incoming_message_has_no_reply_to_address() { var behavior = new UnicastReplyRouterConnector(); var context = CreateContext(new OutgoingLogicalMessage(typeof(MyReply), new MyReply())); context.Extensions.Set(new IncomingMessage( "id", new Dictionary<string, string>(), new byte[0])); Assert.That(async () => await behavior.Invoke(context, _ => TaskEx.CompletedTask), Throws.InstanceOf<Exception>().And.Message.Contains(typeof(MyReply).FullName)); }
public async Task Should_use_explicit_route_for_replies_if_present() { var behavior = new UnicastReplyRouterConnector(); var options = new ReplyOptions(); options.SetDestination("CustomReplyToAddress"); var context = CreateContext(new OutgoingLogicalMessage(typeof(MyReply), new MyReply())); context.Extensions = options.Context; UnicastAddressTag addressTag = null; await behavior.Invoke(context, c => { addressTag = (UnicastAddressTag) c.RoutingStrategies.Single().Apply(new Dictionary<string, string>()); return TaskEx.CompletedTask; }); Assert.AreEqual("CustomReplyToAddress", addressTag.Destination); }
public async Task Should_use_explicit_route_for_replies_if_present() { var behavior = new UnicastReplyRouterConnector(); var options = new ReplyOptions(); options.SetDestination("CustomReplyToAddress"); var context = CreateContext(new OutgoingLogicalMessage(typeof(MyReply), new MyReply())); context.Extensions = options.Context; UnicastAddressTag addressTag = null; await behavior.Invoke(context, c => { addressTag = (UnicastAddressTag)c.RoutingStrategies.Single().Apply(new Dictionary <string, string>()); return(TaskEx.CompletedTask); }); Assert.AreEqual("CustomReplyToAddress", addressTag.Destination); }
public async Task Should_default_to_reply_address_of_incoming_message_for_replies() { var behavior = new UnicastReplyRouterConnector(); var context = CreateContext(new OutgoingLogicalMessage(typeof(MyReply), new MyReply())); context.Extensions.Set(new IncomingMessage( "id", new Dictionary <string, string> { { Headers.ReplyToAddress, "ReplyAddressOfIncomingMessage" } }, new byte[0])); UnicastAddressTag addressTag = null; await behavior.Invoke(context, c => { addressTag = (UnicastAddressTag)c.RoutingStrategies.Single().Apply(new Dictionary <string, string>()); return(TaskEx.CompletedTask); }); Assert.AreEqual("ReplyAddressOfIncomingMessage", addressTag.Destination); }
public async Task Should_default_to_reply_address_of_incoming_message_for_replies() { var behavior = new UnicastReplyRouterConnector(); var context = CreateContext(new OutgoingLogicalMessage(typeof(MyReply), new MyReply())); context.Extensions.Set(new IncomingMessage( "id", new Dictionary<string, string> { {Headers.ReplyToAddress, "ReplyAddressOfIncomingMessage"} }, new byte[0])); UnicastAddressTag addressTag = null; await behavior.Invoke(context, c => { addressTag = (UnicastAddressTag) c.RoutingStrategies.Single().Apply(new Dictionary<string, string>()); return TaskEx.CompletedTask; }); Assert.AreEqual("ReplyAddressOfIncomingMessage", addressTag.Destination); }