async Task Multiple_plugins_should_run_in_order() { var messageSender = new MessageSender(TestUtility.NamespaceConnectionString, TestConstants.NonPartitionedQueueName); var messageReceiver = new MessageReceiver(TestUtility.NamespaceConnectionString, TestConstants.NonPartitionedQueueName, ReceiveMode.ReceiveAndDelete); try { var firstPlugin = new FirstSendPlugin(); var secondPlugin = new SecondSendPlugin(); messageSender.RegisterPlugin(firstPlugin); messageSender.RegisterPlugin(secondPlugin); var sendMessage = new Message(Encoding.UTF8.GetBytes("Test message")); await messageSender.SendAsync(sendMessage); var receivedMessage = await messageReceiver.ReceiveAsync(1, TimeSpan.FromMinutes(1)); var firstSendPluginUserProperty = receivedMessage.First().UserProperties["FirstSendPlugin"]; var secondSendPluginUserProperty = receivedMessage.First().UserProperties["SecondSendPlugin"]; Assert.True((bool)firstSendPluginUserProperty); Assert.True((bool)secondSendPluginUserProperty); } finally { await messageSender.CloseAsync(); await messageReceiver.CloseAsync(); } }
async Task Unregistering_plugin_should_complete_with_plugin_set() { var messageReceiver = new MessageReceiver(TestUtility.NamespaceConnectionString, TestConstants.NonPartitionedQueueName, ReceiveMode.ReceiveAndDelete); var firstPlugin = new FirstSendPlugin(); messageReceiver.RegisterPlugin(firstPlugin); messageReceiver.UnregisterPlugin(firstPlugin.Name); await messageReceiver.CloseAsync(); }
async Task Registering_plugin_multiple_times_should_throw() { var messageReceiver = new MessageReceiver(TestUtility.NamespaceConnectionString, TestConstants.NonPartitionedQueueName, ReceiveMode.ReceiveAndDelete); var firstPlugin = new FirstSendPlugin(); var secondPlugin = new FirstSendPlugin(); messageReceiver.RegisterPlugin(firstPlugin); Assert.Throws <ArgumentException>(() => messageReceiver.RegisterPlugin(secondPlugin)); await messageReceiver.CloseAsync(); }
async Task Unregistering_plugin_should_complete_with_plugin_set() { await ServiceBusScope.UsingQueueAsync(partitioned : false, sessionEnabled : false, async queueName => { var messageReceiver = new MessageReceiver(TestUtility.NamespaceConnectionString, queueName, ReceiveMode.ReceiveAndDelete); try { var firstPlugin = new FirstSendPlugin(); messageReceiver.RegisterPlugin(firstPlugin); messageReceiver.UnregisterPlugin(firstPlugin.Name); } finally { await messageReceiver.CloseAsync(); } }); }
async Task Registering_plugin_multiple_times_should_throw() { await ServiceBusScope.UsingQueueAsync(partitioned : false, sessionEnabled : false, async queueName => { var messageReceiver = new MessageReceiver(TestUtility.NamespaceConnectionString, queueName, ReceiveMode.ReceiveAndDelete); try { var firstPlugin = new FirstSendPlugin(); var secondPlugin = new FirstSendPlugin(); messageReceiver.RegisterPlugin(firstPlugin); Assert.Throws <ArgumentException>(() => messageReceiver.RegisterPlugin(secondPlugin)); } finally { await messageReceiver.CloseAsync(); } }); }