public async Task HappyPathNewSetting() { var receiver = new FakeReceiver("fake"); MessagingConfigurationProvider provider = typeof(MessagingConfigurationProvider).New(receiver, null); var newSettings = @"{ ""foo"": ""abc"" }"; var message = new FakeReceiverMessage(newSettings); var reloaded = false; ChangeToken.OnChange(provider.GetReloadToken, () => reloaded = true); var dataBefore = GetData(provider); // Simulate the FakeReceiver receiving a message. await receiver.MessageHandler.OnMessageReceivedAsync(receiver, message); // The protected Data property should have been replaced. GetData(provider).Should().NotBeSameAs(dataBefore); // Data should contain the new settings. GetData(provider).Should().ContainKey("foo"); GetData(provider)["foo"].Should().Be("abc"); // It should report that it has been reloaded. reloaded.Should().BeTrue(); // The received message should have been handled by acknowledging it. message.Handled.Should().BeTrue(); message.HandledBy.Should().Be(nameof(message.AcknowledgeAsync)); }
public async Task InvalidMessage() { var receiver = new FakeReceiver("fake"); MessagingConfigurationProvider provider = typeof(MessagingConfigurationProvider).New(receiver, null); var reloaded = false; ChangeToken.OnChange(provider.GetReloadToken, () => reloaded = true); var newSettings = "This is {not] a [valid} JSON string: \""; var message = new FakeReceiverMessage(newSettings); var dataBefore = GetData(provider); // Simulate the FakeReceiver receiving a message. await receiver.MessageHandler.OnMessageReceivedAsync(receiver, message); // The protected Data property should not have been replaced. GetData(provider).Should().BeSameAs(dataBefore); // It should report that it has been reloaded. reloaded.Should().BeFalse(); // The received message should have been handled by acknowledging it. message.Handled.Should().BeTrue(); message.HandledBy.Should().Be(nameof(message.RejectAsync)); }
public void ConstructorSetsReceiverProperty() { var receiver = new FakeReceiver("fake"); var source = new MessagingConfigurationSource(receiver); source.Receiver.Should().BeSameAs(receiver); }
public void ConstructorLeavesDataEmpty() { var receiver = new FakeReceiver("fake"); MessagingConfigurationProvider provider = typeof(MessagingConfigurationProvider).New(receiver, null); GetData(provider).Should().BeEmpty(); }
public void ConstructorSetsReceiverProperty() { var receiver = new FakeReceiver("fake"); MessagingConfigurationProvider provider = typeof(MessagingConfigurationProvider).New(receiver, null); provider.Receiver.Should().BeSameAs(receiver); }
public void ConstructorSetsSettingFilterProperty() { var receiver = new FakeReceiver("fake"); var filter = new FakeSettingFilter(); MessagingConfigurationProvider provider = typeof(MessagingConfigurationProvider).New(receiver, filter); provider.SettingFilter.Should().BeSameAs(filter); }
public void ConstructorThrowsIfReceiverIsAlreadyStarted() { var receiver = new FakeReceiver("fake"); receiver.Start(m => m.AcknowledgeAsync()); Action action = () => new MessagingConfigurationSource(receiver); action.Should().ThrowExactly <ArgumentException>().WithMessage("The receiver is already started.*receiver*"); }
public void ConstructorStartsTheReceiver() { var receiver = new FakeReceiver("fake"); receiver.MessageHandler.Should().BeNull(); MessagingConfigurationProvider provider = typeof(MessagingConfigurationProvider).New(receiver, null); receiver.MessageHandler.Should().NotBeNull(); }
public void BuildMethodReturnsSameMessagingConfigurationProviderEachTime() { var receiver = new FakeReceiver("fake"); var source = new MessagingConfigurationSource(receiver); var provider1 = source.Build(null); var provider2 = source.Build(null); provider1.Should().BeSameAs(provider2); }
public void ConstructorThrowsIfReceiverIsUsedByAnotherMessagingConfigurationSource() { var receiver = new FakeReceiver("fake"); // Create a source with the receiver and throw it away. new MessagingConfigurationSource(receiver); // Passing the same receiver to another source causes it to throw. Action action = () => new MessagingConfigurationSource(receiver); action.Should().ThrowExactly <ArgumentException>().WithMessage("The same instance of IReceiver cannot be used to create multiple instances of MessagingConfigurationSource.*receiver*"); }
public void BuildMethodReturnsMessagingConfigurationProvider() { var receiver = new FakeReceiver("fake"); var filter = new FakeSettingFilter(); var source = new MessagingConfigurationSource(receiver, filter); var provider = source.Build(null); provider.Should().BeOfType <MessagingConfigurationProvider>(); var messagingProvider = (MessagingConfigurationProvider)provider; messagingProvider.Receiver.Should().BeSameAs(receiver); messagingProvider.SettingFilter.Should().BeSameAs(filter); }
public void AddRockLibMessagingProviderExtensionMethod2AddsAMessagingConfigurationSourceToTheConfigurationBuilder() { var receiver = new FakeReceiver("fake"); var filter = new FakeSettingFilter(); var builder = new ConfigurationBuilder(); builder.AddRockLibMessagingProvider(receiver, filter); builder.Sources.Should().HaveCount(1); builder.Sources[0].Should().BeOfType <MessagingConfigurationSource>(); var source = (MessagingConfigurationSource)builder.Sources[0]; source.Receiver.Should().BeSameAs(receiver); source.SettingFilter.Should().BeSameAs(filter); }