Example #1
0
        public async Task ValidationShouldBeExecutedOnce()
        {
            //Arrange
            var path            = @"c:\";
            var diskDriveConfig = new DiskDriveConfigBuilder()
                                  .WithEnabled(true)
                                  .WithPartitions(new List <DiskDriveConfig.Partition>()
            {
                new DiskDriveConfig.Partition()
                {
                    Path = path
                }
            })
                                  .Build();
            var appConfig = new AppConfigBuilder()
                            .WithDiskDrive(diskDriveConfig)
                            .Build();

            this.Context.ConfigMock.Mock_Config(appConfig);

            var service = this.Context.Build();

            //Act
            await service.ValidateAsync();

            //Assert
            this.Context.DiskDriveConfigValidatorMock.Verify_ValidateCalled(x => x.Enabled == true && x.Partitions.First().Path == path, Times.Once());
        }
Example #2
0
        public async Task WhenNoPartitionsProvided_ShouldRunWithoutDoingAnything()
        {
            //Arrange
            var diskDriveConfig = new DiskDriveConfigBuilder()
                                  .WithEnabled(true)
                                  .WithPartitions(new List <DiskDriveConfig.Partition>()
            {
            })
                                  .Build();
            var appConfig = new AppConfigBuilder()
                            .WithDiskDrive(diskDriveConfig)
                            .Build();

            this.Context.ConfigMock.Mock_Config(appConfig);

            var service = this.Context.Build();

            //Act
            await service.DoWorkAsync();

            //Assert
            this.Context.DiskDriveInfoMock.Verify_GetDiskDriveMetricsCalled(Times.Never());
            this.Context.MessageConverterMock.Verify_GetCalledForDiskDriveMetrics(Times.Never());
            this.Context.MessageQueueServiceMock.Verify_EnqueueCalled(Times.Never());
        }
        public void WhenNoMessageReturned_ShouldNotEnqueue()
        {
            //Arrange
            var maxPercentageUsage = 30;
            var total        = 100;
            var free         = 30;
            var memoryConfig = new MemoryConfigBuilder()
                               .WithEnabled(true)
                               .WithMaxPercentageUsage(maxPercentageUsage)
                               .Build();
            var appConfig = new AppConfigBuilder()
                            .WithMemory(memoryConfig)
                            .Build();

            this.Context.ConfigMock.Mock_Config(appConfig);

            var memoryMetrics = new MemoryMetricsBuilder()
                                .WithTotal(total)
                                .WithFree(free)
                                .Build();

            this.Context.MemoryInfoMock.Mock_GetMemoryMetrics(memoryMetrics);

            this.Context.MessageConverterMock.Mock_Get((Expression <Func <MemoryMetrics, bool> >)(x => x.Total == total && x.Free == free), null);

            var service = this.Context.Build();

            //Act
            service.DoWorkAsync();

            //Assert
            this.Context.MemoryInfoMock.Verify_GetMemoryMetricsCalled(Times.Once());
            this.Context.MessageConverterMock.Verify_GetCalled((Expression <Func <MemoryMetrics, bool> >)(x => x.Total == total && x.Free == free), Times.Once());
            this.Context.MessageQueueServiceMock.Verify_EnqueueCalled(Times.Never());
        }
Example #4
0
        public async Task WhenMemoryMetricsWithAppConfigProvidedWithoutReportModeWithoutWarningWithoutTest_ShouldReturnNull()
        {
            //Arrange
            var memoryConfig = new MemoryConfigBuilder()
                               .WithMaxPercentageUsage(90)
                               .WithReportMode(false)
                               .Build();

            var config = new AppConfigBuilder()
                         .WithMemory(memoryConfig)
                         .Build();

            var converter = this.Context
                            .WithAppConfig(config)
                            .Build();

            var memoryMetrics = new MemoryMetricsBuilder()
                                .WithTotal(10)
                                .WithFree(10)
                                .Build();

            //Act
            var message = await converter.GetAsync(memoryMetrics);

            //Assert
            Assert.IsNull(message);
        }
Example #5
0
        public async Task WhenMemoryMetricsWithAppConfigProvidedWithReportMode_ShouldReturnMessage()
        {
            //Arrange
            var memoryConfig = new MemoryConfigBuilder()
                               .WithMaxPercentageUsage(90)
                               .WithReportMode(true)
                               .Build();

            var config = new AppConfigBuilder()
                         .WithMemory(memoryConfig)
                         .Build();

            var converter = this.Context
                            .WithAppConfig(config)
                            .Build();

            var memoryMetrics = new MemoryMetricsBuilder()
                                .WithTotal(10)
                                .WithFree(10)
                                .Build();

            //Act
            var message = await converter.GetAsync(memoryMetrics);

            //Assert
            Assert.AreEqual("RAM Memory", message.Title);
            Assert.AreEqual("Total: 10B\r\nUsed: 0B\r\nFree: 10B", message.Content);
        }
        public async Task ValidationShouldBeExecutedOnce()
        {
            //Arrange
            var from                = "from";
            var limit               = 5;
            var display             = "display";
            var messageNotification = new MessageNotificationConfigBuilder()
                                      .WithEnabled(true)
                                      .WithFrom(from)
                                      .WithLimit(limit)
                                      .WithDisplay(display)
                                      .Build();

            var appConfig = new AppConfigBuilder()
                            .WithMessageNotification(messageNotification)
                            .Build();

            this.Context.ConfigMock.Mock_Config(appConfig);

            var service = this.Context.Build();

            //Act
            await service.ValidateAsync();

            //Assert
            this.Context.MessageNotificationValidatorMock.Verify_ValidateCalled(x => x.Enabled == true && x.From == from && x.Limit == limit && x.Display == display, Times.Once());
        }
        public async Task WhenNoMessages_ShouldNotSend()
        {
            //Arrange
            var from                = "from";
            var limit               = 5;
            var display             = "display";
            var messageNotification = new MessageNotificationConfigBuilder()
                                      .WithEnabled(true)
                                      .WithFrom(from)
                                      .WithLimit(limit)
                                      .WithDisplay(display)
                                      .Build();

            var appConfig = new AppConfigBuilder()
                            .WithMessageNotification(messageNotification)
                            .Build();

            this.Context.ConfigMock.Mock_Config(appConfig);
            this.Context.MessageQueueServiceMock.Mock_Dequeue(null);

            var service = this.Context.Build();

            //Act
            await service.DoWorkAsync();

            //Assert
            this.Context.MessageQueueServiceMock.Verify_DequeueCalled(Times.Once());
            this.Context.MessageSenderMock.Veirfy_SendMessageCalled(Times.Never());
        }
Example #8
0
        public async Task WhenMemoryMetricsWithAppConfigProvidedWithWarning_ShouldReturnMessage()
        {
            //Arrange
            var memoryConfig = new MemoryConfigBuilder()
                               .WithMaxPercentageUsage(10)
                               .Build();

            var config = new AppConfigBuilder()
                         .WithMemory(memoryConfig)
                         .Build();

            var converter = this.Context
                            .WithAppConfig(config)
                            .Build();

            var memoryMetrics = new MemoryMetricsBuilder()
                                .WithTotal(100)
                                .WithFree(30)
                                .Build();

            //Act
            var message = await converter.GetAsync(memoryMetrics);

            //Assert
            Assert.AreEqual("Warning - RAM Memory", message.Title);
            Assert.AreEqual("RAM memory 70% consumed!\r\n\r\n\r\nTotal: 100B\r\nUsed: 70B\r\nFree: 30B", message.Content);
        }
        public void AllowMultipleRegistrations_WhenTrue_AMethodCanBeRegisteredMultipleTimes()
        {
            var appConfig = new AppConfigBuilder(new AppSettings())
                            .UseMiddleware(Middleware1, MiddlewareStages.Tokenize, allowMultipleRegistrations: true)
                            .UseMiddleware(Middleware1, MiddlewareStages.Tokenize, allowMultipleRegistrations: true)
                            .Build();

            appConfig.Should().NotBeNull();
        }
Example #10
0
 private static void EnsureResourcesAreSet(AppRunner appRunner, AppConfigBuilder c)
 {
     if (appRunner.AppSettings.Localize != null)
     {
         var config = c.Services.GetOrCreate <SpectreAppConfig>();
         if (!config.ResourcesSet)
         {
             Resources.A         = new ResourcesProxy(appRunner.AppSettings.Localize);
             config.ResourcesSet = true;
         }
     }
 }
Example #11
0
        public async Task WhenPartitionProvided_ShouldQueueMessage()
        {
            //Arrange
            var total = 100;
            var free  = 50;
            var path  = @"c:\";
            var maxPercentageUsage = 10;
            var title   = "title";
            var content = "content";

            var diskDriveConfig = new DiskDriveConfigBuilder()
                                  .WithEnabled(true)
                                  .WithPartitions(new List <DiskDriveConfig.Partition>()
            {
                new DiskDriveConfig.Partition()
                {
                    Path = path, MaxPercentageUsage = maxPercentageUsage
                }
            })
                                  .Build();

            var appConfig = new AppConfigBuilder()
                            .WithDiskDrive(diskDriveConfig)
                            .Build();

            this.Context.ConfigMock.Mock_Config(appConfig);

            var metrics = new DiskDriveMetricsBuilder()
                          .WithPath(path)
                          .WithTotal(total)
                          .WithFree(free)
                          .Build();

            this.Context.DiskDriveInfoMock.Mock_GetDiskDriveMetrics(metrics);

            var message = new MessageBuilder()
                          .WithTitle(title)
                          .WithContent(content)
                          .Build();

            this.Context.MessageConverterMock.Mock_Get((Expression <Func <DiskDriveMetrics, bool> >)(x => x.Path == path && x.Total == total && x.Free == free), message);

            var service = this.Context.Build();

            //Act
            await service.DoWorkAsync();

            //Assert
            this.Context.DiskDriveInfoMock.Verify_GetDiskDriveMetricsCalled(x => x.Path == path && x.MaxPercentageUsage == maxPercentageUsage, Times.Once());
            this.Context.MessageConverterMock.Verify_GetCalled(x => x.Path == path && x.Total == total && x.Free == free, Times.Once());
            this.Context.MessageQueueServiceMock.Verify_EnqueueCalled(x => x.Title == title && x.Content == content, Times.Once());
        }
        public async Task WhenMessageWithAppConfigProvided_ShouldReturnMimeMessage()
        {
            //Arrange
            var title   = "title";
            var content = "content";
            var from    = "*****@*****.**";
            var display = "FromDisplay";
            var to      = "*****@*****.**";

            var messageNotificationConfig = new MessageNotificationConfigBuilder()
                                            .WithFrom(from)
                                            .WithDisplay(display)
                                            .WithMessageRecipients(new List <MessageRecipient>()
            {
                new MessageRecipient {
                    Address = to
                }
            })
                                            .Build();

            var config = new AppConfigBuilder()
                         .WithMessageNotification(messageNotificationConfig)
                         .Build();

            var converter = this.Context
                            .WithAppConfig(config)
                            .Build();

            var message = new MessageBuilder()
                          .WithTitle(title)
                          .WithContent(content)
                          .Build();

            //Act
            var mimeMessage = await converter.GetAsync(message);

            //Assert
            Assert.Multiple(() =>
            {
                Assert.AreEqual(title, mimeMessage.Subject);
                Assert.AreEqual(content, mimeMessage.TextBody);
                Assert.AreEqual(from, (mimeMessage.From.First() as MailboxAddress).Address);
                Assert.AreEqual(display, (mimeMessage.From.First() as MailboxAddress).Name);
                Assert.AreEqual(to, (mimeMessage.To.First() as MailboxAddress).Address);
            });
        }
        public async Task WhenMessageReturned_ShouldEnqueue()
        {
            //Arrange
            var maxPercentageUsage = 30;
            var total        = 100;
            var free         = 30;
            var memoryConfig = new MemoryConfigBuilder()
                               .WithEnabled(true)
                               .WithMaxPercentageUsage(maxPercentageUsage)
                               .Build();
            var appConfig = new AppConfigBuilder()
                            .WithMemory(memoryConfig)
                            .Build();

            this.Context.ConfigMock.Mock_Config(appConfig);

            var memoryMetrics = new MemoryMetricsBuilder()
                                .WithTotal(total)
                                .WithFree(free)
                                .Build();

            this.Context.MemoryInfoMock.Mock_GetMemoryMetrics(memoryMetrics);

            var title   = "title";
            var content = "content";
            var message = new MessageBuilder()
                          .WithTitle(title)
                          .WithContent(content)
                          .Build();

            this.Context.MessageConverterMock.Mock_Get((Expression <Func <MemoryMetrics, bool> >)(x => x.Total == total && x.Free == free), message);

            var service = this.Context.Build();

            //Act
            await service.DoWorkAsync();

            //Assert
            this.Context.MemoryInfoMock.Verify_GetMemoryMetricsCalled(Times.Once());
            this.Context.MessageConverterMock.Verify_GetCalled((Expression <Func <MemoryMetrics, bool> >)(x => x.Total == total && x.Free == free), Times.Once());
            this.Context.MessageQueueServiceMock.Verify_EnqueueCalled(x => x.Title == title && x.Content == content, Times.Once());
        }
        public void ValidationShouldBeExecutedOnce()
        {
            //Arrange
            var maxPercentageUsage = 30;
            var memoryConfig       = new MemoryConfigBuilder()
                                     .WithEnabled(true)
                                     .WithMaxPercentageUsage(maxPercentageUsage)
                                     .Build();
            var appConfig = new AppConfigBuilder()
                            .WithMemory(memoryConfig)
                            .Build();

            this.Context.ConfigMock.Mock_Config(appConfig);

            var service = this.Context.Build();

            //Act
            service.ValidateAsync();

            //Assert
            this.Context.MemoryConfigValidatorMock.Verify_ValidateCalled(x => x.Enabled == true && x.MaxPercentageUsage == maxPercentageUsage, Times.Once());
        }
Example #15
0
        public async Task WhenDiskDriveMetricsWithAppConfigProvidedWithReportMode_ShouldReturnMessage()
        {
            //Arrange
            string path            = @"c:\";
            var    diskDriveConfig = new DiskDriveConfigBuilder()
                                     .WithPartitions(new List <DiskDriveConfig.Partition>()
            {
                new DiskDriveConfig.Partition()
                {
                    Path = path,
                    MaxPercentageUsage = 10
                }
            })
                                     .WithReportMode(true)
                                     .Build();

            var config = new AppConfigBuilder()
                         .WithDiskDrive(diskDriveConfig)
                         .Build();

            var converter = this.Context
                            .WithAppConfig(config)
                            .Build();

            var diskDriveMetrics = new DiskDriveMetricsBuilder()
                                   .WithPath(path)
                                   .WithIsReady(true)
                                   .WithTotal(10)
                                   .WithFree(10)
                                   .Build();

            //Act
            var message = await converter.GetAsync(diskDriveMetrics);

            //Assert
            Assert.AreEqual($"DiskDrive - {path}", message.Title);
            Assert.AreEqual("Capacity: 10B\r\nFree space: 10B", message.Content);
        }
Example #16
0
        public async Task WhenDiskDriveMetricsWithNotIsReadyWithAppConfigProvided_ShouldReturnMessage()
        {
            //Arrange
            string path            = @"c:\";
            var    diskDriveConfig = new DiskDriveConfigBuilder()
                                     .WithPartitions(new List <DiskDriveConfig.Partition>()
            {
                new DiskDriveConfig.Partition()
                {
                    Path = path,
                    MaxPercentageUsage = 90
                }
            })
                                     .Build();

            var config = new AppConfigBuilder()
                         .WithDiskDrive(diskDriveConfig)
                         .WithTest(true)
                         .Build();

            var converter = this.Context
                            .WithAppConfig(config)
                            .Build();

            var diskDriveMetrics = new DiskDriveMetricsBuilder()
                                   .WithPath(path)
                                   .WithIsReady(false)
                                   .WithTotal(10)
                                   .WithFree(9)
                                   .Build();

            //Act
            var message = await converter.GetAsync(diskDriveMetrics);

            //Assert
            Assert.AreEqual($"Warning - DiskDrive - {path}", message.Title);
            Assert.AreEqual("Drive c:\\ is not ready!", message.Content);
        }
        public async Task WhenMessages_ShouldSend()
        {
            //Arrange
            string title   = "title";
            string content = "content";

            var from                = "from";
            var limit               = 5;
            var display             = "display";
            var messageNotification = new MessageNotificationConfigBuilder()
                                      .WithEnabled(true)
                                      .WithFrom(from)
                                      .WithLimit(limit)
                                      .WithDisplay(display)
                                      .Build();

            var appConfig = new AppConfigBuilder()
                            .WithMessageNotification(messageNotification)
                            .Build();

            this.Context.ConfigMock.Mock_Config(appConfig);
            var message = new MessageBuilder()
                          .WithTitle(title)
                          .WithContent(content)
                          .Build();

            this.Context.MessageQueueServiceMock.Mock_Dequeue(message);

            var service = this.Context.Build();

            //Act
            await service.DoWorkAsync();

            //Assert
            this.Context.MessageQueueServiceMock.Verify_DequeueCalled(Times.Exactly(limit));
            this.Context.MessageSenderMock.Verify_SendMessageCalled(x => x.Title == title && x.Content == content, Times.Exactly(limit));
        }
Example #18
0
        public async Task WhenDiskDriveMetricsWithAppConfigProvidedWithoutReportModeWithoutWarningWithoutTest_ShouldReturnNull()
        {
            //Arrange
            string path            = @"c:\";
            var    diskDriveConfig = new DiskDriveConfigBuilder()
                                     .WithPartitions(new List <DiskDriveConfig.Partition>()
            {
                new DiskDriveConfig.Partition()
                {
                    Path = path,
                    MaxPercentageUsage = 10
                }
            })
                                     .WithReportMode(false)
                                     .Build();

            var config = new AppConfigBuilder()
                         .WithDiskDrive(diskDriveConfig)
                         .Build();

            var converter = this.Context
                            .WithAppConfig(config)
                            .Build();

            var diskDriveMetrics = new DiskDriveMetricsBuilder()
                                   .WithPath(path)
                                   .WithIsReady(true)
                                   .WithTotal(10)
                                   .WithFree(10)
                                   .Build();

            //Act
            var message = await converter.GetAsync(diskDriveMetrics);

            //Assert
            Assert.IsNull(message);
        }