public async Task SendAsync_NullNotification_ThrowsException() { // Arrange var serviceBusSenderMock = new Mock <ServiceBusSender>(); var serviceBusSessionReceiverMock = new Mock <ServiceBusSessionReceiver>(); await using var mockedServiceBusClient = new MockedServiceBusClient( string.Empty, string.Empty, serviceBusSenderMock.Object, serviceBusSessionReceiverMock.Object); var serviceBusClientFactory = new Mock <IServiceBusClientFactory>(); serviceBusClientFactory.Setup(x => x.Create()).Returns(mockedServiceBusClient); await using var messageBusFactory = new AzureServiceBusFactory(serviceBusClientFactory.Object); var config = new MessageHubConfig("fake_value", "fake_value"); var target = new DataAvailableNotificationSender(messageBusFactory, config); // Act + Assert await Assert .ThrowsAsync <ArgumentNullException>(() => target.SendAsync("F9A5115D-44EB-4AD4-BC7E-E8E8A0BC425E", null !)) .ConfigureAwait(false); }
public async Task SendAsync_NullCorrelationId_ThrowsException() { // Arrange var serviceBusSenderMock = new Mock <ServiceBusSender>(); var serviceBusSessionReceiverMock = new Mock <ServiceBusSessionReceiver>(); await using var mockedServiceBusClient = new MockedServiceBusClient( string.Empty, string.Empty, serviceBusSenderMock.Object, serviceBusSessionReceiverMock.Object); var serviceBusClientFactory = new Mock <IServiceBusClientFactory>(); serviceBusClientFactory.Setup(x => x.Create()).Returns(mockedServiceBusClient); await using var messageBusFactory = new AzureServiceBusFactory(serviceBusClientFactory.Object); var config = new MessageHubConfig("fake_value", "fake_value"); var target = new DataAvailableNotificationSender(messageBusFactory, config); var dataAvailable = new DataAvailableNotificationDto( Guid.Parse("F9A5115D-44EB-4AD4-BC7E-E8E8A0BC425E"), new ActorIdDto(Guid.NewGuid()), new MessageTypeDto("fake_value"), "RSM??", DomainOrigin.TimeSeries, true, 1); // Act + Assert await Assert .ThrowsAsync <ArgumentNullException>(() => target.SendAsync(null !, dataAvailable)) .ConfigureAwait(false); }
public async Task SendAsync_NullDto_ThrowsException() { // Arrange var serviceBusSenderMock = new Mock <ServiceBusSender>(); var serviceBusSessionReceiverMock = new Mock <ServiceBusSessionReceiver>(); await using var mockedServiceBusClient = new MockedServiceBusClient( string.Empty, string.Empty, serviceBusSenderMock.Object, serviceBusSessionReceiverMock.Object); var serviceBusClientFactory = new Mock <IServiceBusClientFactory>(); serviceBusClientFactory.Setup(x => x.Create()).Returns(mockedServiceBusClient); await using var messageBusFactory = new AzureServiceBusFactory(serviceBusClientFactory.Object); var config = new MessageHubConfig("fake_value", "fake_value"); var target = new DataBundleResponseSender( new ResponseBundleParser(), messageBusFactory, config); // Act + Assert await Assert .ThrowsAsync <ArgumentNullException>(() => target.SendAsync(null !)) .ConfigureAwait(false); }
public static async Task Main(string[] args) { var configuration = BuildConfiguration(args); var configurationSection = configuration.GetSection("Values"); var connectionString = configurationSection["ServiceBusConnectionString"]; var dataAvailableQueueName = configurationSection["DATAAVAILABLE_QUEUE_NAME"]; var domainReplyQueueName = configurationSection["DOMAIN_REPLY_QUEUE_NAME"]; var recipient = configurationSection["recipient"]; var origin = configurationSection["origin"]; var messageType = configurationSection["type"]; var interval = int.TryParse(configurationSection["interval"], out var intervalParsed) ? intervalParsed : 1; var workers = int.TryParse(configurationSection["workers"], out var workersParsed) ? workersParsed : 1; var domainOrigin = origin != null?Enum.Parse <DomainOrigin>(origin, true) : DomainOrigin.TimeSeries; var serviceBusClientFactory = new ServiceBusClientFactory(connectionString); await using var azureServiceFactory = new AzureServiceBusFactory(serviceBusClientFactory); var messageHubConfig = new MessageHubConfig(dataAvailableQueueName, domainReplyQueueName); var dataAvailableNotificationSender = new DataAvailableNotificationSender(azureServiceFactory, messageHubConfig); await Task.WhenAll( Enumerable.Range(0, workers).Select(_ => Task.WhenAll(Enumerable.Range(0, interval / workers).Select(_ => { var msgDto = CreateDto(domainOrigin, messageType, recipient); var correlationId = Guid.NewGuid().ToString(); return(dataAvailableNotificationSender.SendAsync(correlationId, msgDto)); })))).ConfigureAwait(false); Console.WriteLine("Message sender completed."); }
public DataBundleResponseSender( IResponseBundleParser responseBundleParser, IMessageBusFactory messageBusFactory, MessageHubConfig messageHubConfig) { _responseBundleParser = responseBundleParser; _messageBusFactory = messageBusFactory; _messageHubConfig = messageHubConfig; }
public async Task SendAsync_ValidInput_AddsCorrectIntegrationEvents() { // Arrange var serviceBusSenderMock = new Mock <ServiceBusSender>(); var serviceBusSessionReceiverMock = new Mock <ServiceBusSessionReceiver>(); const string sbqTimeseriesReply = "sbq-TimeSeries-reply"; await using var mockedServiceBusClient = new MockedServiceBusClient( sbqTimeseriesReply, string.Empty, serviceBusSenderMock.Object, serviceBusSessionReceiverMock.Object); var serviceBusClientFactory = new Mock <IServiceBusClientFactory>(); serviceBusClientFactory.Setup(x => x.Create()).Returns(mockedServiceBusClient); await using var messageBusFactory = new AzureServiceBusFactory(serviceBusClientFactory.Object); var config = new MessageHubConfig("fake_value", sbqTimeseriesReply); // ServiceBusMessage var target = new DataBundleResponseSender( new ResponseBundleParser(), messageBusFactory, config); var requestMock = new DataBundleRequestDto( Guid.NewGuid(), "A9D032EB-4AAC-44F3-BE1C-8584B8533875", "42D509CB-1D93-430D-A2D4-7DBB9AE56771", new MessageTypeDto("80BB9BB8-CDE8-4C77-BE76-FDC886FD75A3")); var response = requestMock.CreateResponse(new Uri("https://test.dk/test")); // Act await target.SendAsync(response).ConfigureAwait(false); // Assert serviceBusSenderMock.Verify( x => x.SendMessageAsync( It.Is <ServiceBusMessage>( message => message.ApplicationProperties.ContainsKey("OperationTimestamp") && message.ApplicationProperties.ContainsKey("OperationCorrelationId") && message.ApplicationProperties.ContainsKey("MessageVersion") && message.ApplicationProperties.ContainsKey("MessageType") && message.ApplicationProperties.ContainsKey("EventIdentification")), default), Times.Once); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { //TODO: //if (env.IsDevelopment()) // app.UseDeveloperExceptionPage(); BackgroundServiceConfig.Configure(app, env, loggerFactory, Configuration); DataConfig.Configure(app, env, loggerFactory, Configuration); LogConfig.Configure(app, env, loggerFactory, Configuration); AuthConfig.Configure(app, env, loggerFactory, Configuration); MvcConfig.Configure(app, env, loggerFactory, Configuration); ReportServiceConfig.Configure(app, env, loggerFactory, Configuration); MessageHubConfig.Configure(app, env, loggerFactory, Configuration); }
public async Task SendAsync_ValidInput_AddsCorrectIntegrationEvents() { // Arrange var serviceBusSenderMock = new Mock <ServiceBusSender>(); var serviceBusSessionReceiverMock = new Mock <ServiceBusSessionReceiver>(); const string dataAvailableQueue = "sbq-dataavailable"; await using var mockedServiceBusClient = new MockedServiceBusClient( dataAvailableQueue, string.Empty, serviceBusSenderMock.Object, serviceBusSessionReceiverMock.Object); var serviceBusClientFactory = new Mock <IServiceBusClientFactory>(); serviceBusClientFactory.Setup(x => x.Create()).Returns(mockedServiceBusClient); await using var messageBusFactory = new AzureServiceBusFactory(serviceBusClientFactory.Object); var config = new MessageHubConfig(dataAvailableQueue, "fake_value"); var target = new DataAvailableNotificationSender(messageBusFactory, config); var dataAvailable = new DataAvailableNotificationDto( Guid.Parse("F9A5115D-44EB-4AD4-BC7E-E8E8A0BC425E"), new ActorIdDto(Guid.NewGuid()), new MessageTypeDto("fake_value"), "RSM??", DomainOrigin.TimeSeries, true, 1); // Act await target.SendAsync("F9A5115D-44EB-4AD4-BC7E-E8E8A0BC425E", dataAvailable).ConfigureAwait(false); // Assert serviceBusSenderMock.Verify( x => x.SendMessageAsync( It.Is <ServiceBusMessage>( message => message.ApplicationProperties.ContainsKey("OperationTimestamp") && message.ApplicationProperties.ContainsKey("OperationCorrelationId") && message.ApplicationProperties.ContainsKey("MessageVersion") && message.ApplicationProperties.ContainsKey("MessageType") && message.ApplicationProperties.ContainsKey("EventIdentification")), default), Times.Once); }
public static void AddMessageHubCommunication( this Container container, string serviceBusConnectionString, MessageHubConfig messageHubConfig, string storageServiceConnectionString, StorageConfig storageConfig) { ArgumentNullException.ThrowIfNull(container, nameof(container)); Guard.ThrowIfNullOrWhiteSpace(serviceBusConnectionString, nameof(serviceBusConnectionString)); ArgumentNullException.ThrowIfNull(messageHubConfig, nameof(messageHubConfig)); Guard.ThrowIfNullOrWhiteSpace(storageServiceConnectionString, nameof(storageServiceConnectionString)); ArgumentNullException.ThrowIfNull(storageConfig, nameof(storageConfig)); container.RegisterSingleton(() => messageHubConfig); container.RegisterSingleton(() => storageConfig); container.AddServiceBus(serviceBusConnectionString); container.AddApplicationServices(); container.AddStorageHandler(storageServiceConnectionString); }
public async Task SendAsync_ValidInput_SendsMessage() { // Arrange const string queueName = "sbq-MeteringPoints-reply"; var serviceBusSenderMock = new Mock <ServiceBusSender>(); var serviceBusSessionReceiverMock = new Mock <ServiceBusSessionReceiver>(); await using var mockedServiceBusClient = new MockedServiceBusClient( queueName, string.Empty, serviceBusSenderMock.Object, serviceBusSessionReceiverMock.Object); var serviceBusClientFactory = new Mock <IServiceBusClientFactory>(); serviceBusClientFactory.Setup(x => x.Create()).Returns(mockedServiceBusClient); await using var messageBusFactory = new AzureServiceBusFactory(serviceBusClientFactory.Object); var config = new MessageHubConfig("fake_value", queueName); var target = new DataBundleResponseSender( new ResponseBundleParser(), messageBusFactory, config); var requestMock = new DataBundleRequestDto( Guid.NewGuid(), "F3DE0389-AC26-4461-A11B-61077BF0CA32", "7E9D048D-F0D8-476D-8739-AAA83284C9C6", new MessageTypeDto("80BB9BB8-CDE8-4C77-BE76-FDC886FD75A3")); var response = requestMock.CreateResponse(new Uri("https://test.dk/test")); // Act await target.SendAsync(response).ConfigureAwait(false); // Assert serviceBusSenderMock.Verify(x => x.SendMessageAsync(It.IsAny <ServiceBusMessage>(), default), Times.Once); }
public DataAvailableNotificationSender(IMessageBusFactory messageBusFactory, MessageHubConfig messageHubConfig) { _messageBusFactory = messageBusFactory; _messageHubConfig = messageHubConfig; }