示例#1
0
        public void PeriodicTasks_YoutubeDown_DecoratorReportsErrors()
        {
            var errorableDownloadFactory = Substitute.For <IErrorableFactory <string, string, string, string> >();

            errorableDownloadFactory.Create(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>()).Returns("");
            var sender         = new TestableSerializer();
            var testableLogger = new TestableLogger();
            var container      = new TestContainerManager(c => {
                var senderRegistration = Lifestyle.Singleton.CreateRegistration(() => sender, c);
                c.RegisterConditional(typeof(IFactory <IEnumerable <ISendable <ITransmittable> >, IEnumerable <string> >), senderRegistration, _ => true);
                var errorableDownloadFactoryRegistration = Lifestyle.Singleton.CreateRegistration(() => errorableDownloadFactory, c);
                c.RegisterConditional(typeof(IErrorableFactory <string, string, string, string>), errorableDownloadFactoryRegistration, _ => true);
                var loggerRegistration = Lifestyle.Singleton.CreateRegistration(() => testableLogger, c);
                c.RegisterConditional(typeof(ILogger), loggerRegistration, pc => !pc.Handled);
            }, settings => settings.PeriodicMessageInterval = TimeSpan.FromMilliseconds(100))
                                 .InitializeAndIsolateRepository();
            var periodicTaskRunner = container.GetInstance <PeriodicTaskRunner>();

            periodicTaskRunner.Run();

            Task.Delay(900).Wait();
            Console.WriteLine(ObjectDumper.Dump(testableLogger.Outbox));
            Assert.IsTrue(testableLogger.Outbox.Any(x => x.Contains("Error occured in GenericClassFactoryTryCatchDecorator")));
            Assert.IsTrue(testableLogger.Outbox.Any(x => x.Contains("input1 is \"https://www.youtube.com/feeds/videos.xml?user=destiny\"")));
        }
示例#2
0
        public void BeginScope_ReturnsAWorkingDisposable()
        {
            var subject = new TestableLogger();
            var scope   = subject.BeginScope("");

            Assert.That(scope.Dispose, Throws.Nothing);
        }
示例#3
0
        public void OneTimeSetUp()
        {
            var logger = new TestableLogger();

            _player = new Player(new TestableLogger(), new CharacterCriticalStrikeRule());
            _player.EatTrollsEar(new TestableDice(1), logger.Log);
        }
示例#4
0
        public void ShouldLogNoStatusMessageWhenLicenseIsValid()
        {
            var logger         = new TestableLogger();
            var licenseManager = new LicenseManager();

            licenseManager.LogLicenseStatus(LicenseStatus.Valid, logger, new License());

            Assert.AreEqual(0, logger.Logs.Count);
        }
示例#5
0
        public void TimeExtensionMethod_NegativePrettyDeltaTime_LogsWarningWithCallingMethod()
        {
            var timespan = TimeSpan.FromMinutes(-1);
            var logger   = new TestableLogger();

            timespan.ToPretty(logger);

            Assert.IsTrue(logger.Outbox.First().Contains(nameof(TimeExtensionMethod_NegativePrettyDeltaTime_LogsWarningWithCallingMethod)));
        }
示例#6
0
        public void Log_GivenFormattedMessage_ThenMessageShouldBeFormatted()
        {
            var          subject = new TestableLogger();
            const string name    = "Fred";

            subject.LogInformation("My name is {Name}.", name);

            Assert.That(subject.LogEntries[0].Message, Is.EqualTo("My name is Fred."));
        }
示例#7
0
        public void Log_GivenErrorException_ThenExceptionIsSet()
        {
            var subject   = new TestableLogger();
            var exception = new Exception(TestData.WellKnownString);

            subject.LogError(exception, "An error occurred!");

            Assert.That(subject.LogEntries[0].Exception, Is.EqualTo(exception));
        }
示例#8
0
        public void IsEnabled_ReturnsTrue()
        {
            var subject = new TestableLogger();

            foreach (var logLevel in EnumUtil.GetValues <LogLevel>())
            {
                Assert.That(subject.IsEnabled(logLevel), Is.True);
            }
        }
 protected SendGridEmailServiceTests()
 {
     this.sendGridClient = new Mock <ISendGridClient>();
     this.configuration  = Options.Create(new SendGridConfiguration
     {
         ServiceEmail            = SendGridEmailServiceTests.ServiceEmail,
         RealContactEmail        = SendGridEmailServiceTests.RealContactEmail,
         RecordOfSalesTemplateId = SendGridEmailServiceTests.TemplateId,
     });
     this.logger = new TestableLogger <SendGridEmailService>();
 }
        public void WhenUpgradeProtectionExpiredForThisRelease()
        {
            var logger         = new TestableLogger();
            var licenseManager = new LicenseManager();

            licenseManager.LogLicenseStatus(LicenseStatus.InvalidDueToExpiredUpgradeProtection, logger, new License(), "fake-url");

            Assert.AreEqual(1, logger.Logs.Count);
            Assert.AreEqual(LogLevel.Error, logger.Logs[0].level);
            Assert.AreEqual("Upgrade protection expired. In order for us to continue to provide you with support and new versions of the Particular Service Platform, contact us to renew your license: [email protected]", logger.Logs[0].message);
        }
        public void WhenSubscriptionLicenseExpired()
        {
            var logger         = new TestableLogger();
            var licenseManager = new LicenseManager();

            licenseManager.LogLicenseStatus(LicenseStatus.InvalidDueToExpiredSubscription, logger, new License(), "fake-url");

            Assert.AreEqual(1, logger.Logs.Count);
            Assert.AreEqual(LogLevel.Error, logger.Logs[0].level);
            Assert.AreEqual("License expired. Contact us to renew your license: [email protected]", logger.Logs[0].message);
        }
示例#12
0
        public void WhenUpgradeProtectionExpiredForThisRelease()
        {
            var logger         = new TestableLogger();
            var licenseManager = new LicenseManager();

            licenseManager.LogLicenseStatus(LicenseStatus.InvalidDueToExpiredUpgradeProtection, logger, new License());

            Assert.AreEqual(1, logger.Logs.Count);
            Assert.AreEqual(LogLevel.Error, logger.Logs[0].level);
            Assert.AreEqual("Upgrade protection expired. In order for us to continue to provide you with support and new versions of the Particular Service Platform, please extend your upgrade protection by visiting http://go.particular.net/upgrade-protection-expired", logger.Logs[0].message);
        }
示例#13
0
        public void WhenTrialLicenseExpired()
        {
            var logger         = new TestableLogger();
            var licenseManager = new LicenseManager();

            licenseManager.LogLicenseStatus(LicenseStatus.InvalidDueToExpiredTrial, logger, new License());

            Assert.AreEqual(1, logger.Logs.Count);
            Assert.AreEqual(LogLevel.Error, logger.Logs[0].level);
            Assert.AreEqual("Trial license expired. To continue using the Particular Service Platform, please extend your trial or purchase a license by visiting http://go.particular.net/trial-expired", logger.Logs[0].message);
        }
示例#14
0
        public void SetUp()
        {
            _logger = new TestableLogger();
            var player = new Player(_logger, new CharacterCriticalStrikeRule());

            player.IncreaseHealth(10);
            player.IncreaseStrength(10);
            _firstFighter  = player;
            _secondFighter = new Troll(1, 1, _logger);
            var battle = new Battle(_firstFighter, _secondFighter, new TestableDice(10));

            _winner = battle.GetWinner();
        }
示例#15
0
        public void DownloadFactory_Never_Logs()
        {
            var testableLogger       = new TestableLogger();
            var testContainerManager = new TestContainerManager(c => {
                var loggerRegistration = Lifestyle.Singleton.CreateRegistration(() => testableLogger, c);
                c.RegisterConditional(typeof(ILogger), loggerRegistration, pc => !pc.Handled);
            });
            var downloadFactory = testContainerManager.Container.GetInstance <IFactory <string, string, string> >();

            TestHelper.AssertCatch <WebException>(() => downloadFactory.Create("https://httpbin.org/404", ""));

            Assert.AreEqual(0, testableLogger.Outbox.Count);
        }
        public void WhenTrialLicenseExpired(bool isDevLicenseRenewal, string expectedMessage)
        {
            var logger         = new TestableLogger();
            var licenseManager = new LicenseManager();
            var license        = new License {
                IsExtendedTrial = isDevLicenseRenewal
            };

            licenseManager.LogLicenseStatus(LicenseStatus.InvalidDueToExpiredTrial, logger, license, "fake-url");

            Assert.AreEqual(1, logger.Logs.Count);
            Assert.AreEqual(LogLevel.Error, logger.Logs[0].level);
            Assert.AreEqual(expectedMessage, logger.Logs[0].message);
        }
示例#17
0
        public void ErrorableDownloadFactory_Fake404UntilExceedsErrorLimit_Has1ErrorLog()
        {
            var testableLogger           = new TestableLogger();
            var testContainerManager     = _createTestContainerManager(testableLogger);
            var errorableDownloadFactory = testContainerManager.Container.GetInstance <IErrorableFactory <string, string, string, string> >();
            var settings = testContainerManager.Container.GetInstance <ISettings>();

            foreach (var i in Enumerable.Range(0, settings.DownloadErrorLimit + 1))
            {
                errorableDownloadFactory.Create("google.com", "", "");
            }

            Assert.AreEqual(1, testableLogger.ErrorOutbox.Count);
        }
示例#18
0
        public void ErrorableDownloadFactory_Fake404_ReturnsErrorTextNoErrorLogsAndOneWarningLog()
        {
            var testableLogger           = new TestableLogger();
            var testContainerManager     = _createTestContainerManager(testableLogger);
            var errorableDownloadFactory = testContainerManager.Container.GetInstance <IErrorableFactory <string, string, string, string> >();
            var errorText = Guid.NewGuid().ToString();

            var html = errorableDownloadFactory.Create("", "", errorText);

            testableLogger.ErrorOutbox.WriteDump();
            Assert.AreEqual(errorText, html);
            Assert.AreEqual(0, testableLogger.ErrorOutbox.Count);
            Assert.AreEqual(1, testableLogger.WarningOutbox.Count);
        }
        public Task InitializeAsync()
        {
            Logger        = new TestableLogger();
            LoggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(c =>
            {
                c.AddConsole();
                c.ConfigureTestableLogger(Logger);
            });

            LogoHardwareMock = new LogoHardwareMock();
            Logo             = CreateLogo();
            Logo.Connect();

            return(Task.CompletedTask);
        }
示例#20
0
        private static TestContainerManager _createTestContainerManager(TestableLogger testableLogger, ITimeService timeService = null, Action <TestSettings> setSettings = null)
        {
            var downloadFactory = Substitute.For <IFactory <string, string, string> >();

            downloadFactory.Create(Arg.Any <string>(), Arg.Any <string>()).Throws(_ => new WebException());
            return(new TestContainerManager(c => {
                var timeServiceRegistration = Lifestyle.Singleton.CreateRegistration(() => timeService, c);
                if (timeService != null)
                {
                    c.RegisterConditional(typeof(ITimeService), timeServiceRegistration, pc => !pc.Handled);
                }
                var downloadFactoryRegistration = Lifestyle.Singleton.CreateRegistration(() => downloadFactory, c);
                c.RegisterConditional(typeof(IFactory <string, string, string>), downloadFactoryRegistration, _ => true);
                var loggerRegistration = Lifestyle.Singleton.CreateRegistration(() => testableLogger, c);
                c.RegisterConditional(typeof(ILogger), loggerRegistration, pc => !pc.Handled);
            }, settings => setSettings?.Invoke(settings)));
        }
示例#21
0
        public void WhenSubscriptionAboutToExpire(int daysRemaining, string expectedMessage)
        {
            var logger         = new TestableLogger();
            var licenseManager = new LicenseManager();
            var today          = new DateTime(2012, 12, 12);
            var license        = new License
            {
                utcDateTimeProvider = () => today,
                ExpirationDate      = today.AddDays(daysRemaining)
            };

            licenseManager.LogLicenseStatus(LicenseStatus.ValidWithExpiringSubscription, logger, license);

            Assert.AreEqual(1, logger.Logs.Count);
            Assert.AreEqual(LogLevel.Warn, logger.Logs[0].level);
            Assert.AreEqual(expectedMessage, logger.Logs[0].message);
        }
        public void WhenTrialLicenseAboutToExpire(int daysRemaining, bool isDevLicenseRenewal, string expectedMessage)
        {
            var logger         = new TestableLogger();
            var licenseManager = new LicenseManager();
            var today          = new DateTime(2012, 12, 12);
            var license        = new License
            {
                utcDateTimeProvider = () => today,
                ExpirationDate      = today.AddDays(daysRemaining),
                IsExtendedTrial     = isDevLicenseRenewal
            };

            licenseManager.LogLicenseStatus(LicenseStatus.ValidWithExpiringTrial, logger, license, "fake-url");

            Assert.AreEqual(1, logger.Logs.Count);
            Assert.AreEqual(LogLevel.Warn, logger.Logs[0].level);
            Assert.AreEqual(expectedMessage, logger.Logs[0].message);
        }
示例#23
0
        public void WhenUpgradeProtectionExpiredForFutureVersions()
        {
            var logger         = new TestableLogger();
            var licenseManager = new LicenseManager();
            var today          = new DateTime(2012, 12, 12);
            var license        = new License
            {
                utcDateTimeProvider         = () => today,
                releaseDateProvider         = () => today.AddDays(-20),
                UpgradeProtectionExpiration = today.AddDays(-10)
            };

            licenseManager.LogLicenseStatus(LicenseStatus.ValidWithExpiredUpgradeProtection, logger, license);

            Assert.AreEqual(1, logger.Logs.Count);
            Assert.AreEqual(LogLevel.Warn, logger.Logs[0].level);
            Assert.AreEqual("Upgrade protection expired. In order for us to continue to provide you with support and new versions of the Particular Service Platform, please extend your upgrade protection by visiting http://go.particular.net/upgrade-protection-expired", logger.Logs[0].message);
        }
示例#24
0
        public async Task InitializeAsync()
        {
            Logger        = new TestableLogger();
            LoggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(c => c.ConfigureTestableLogger(Logger));

            LogoHardwareMock = new LogoHardwareMock();

            var brokerIpAddress = IPAddress.Loopback;
            var brokerPort      = 1889;

            var mqttFactory = new MqttFactory();

            mqttServer = mqttFactory.CreateMqttServer();
            MqttClient = mqttFactory.CreateMqttClient();
            MqttClient.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(args => MqttMessageReceived?.Invoke(this, args));

            var mqttServerOptions = new MqttServerOptionsBuilder()
                                    .WithClientId(nameof(IntegrationTestEnvironment) + "Broker")
                                    .WithDefaultEndpointBoundIPAddress(brokerIpAddress)
                                    .WithDefaultEndpointPort(brokerPort)
                                    .Build();

            var mqttClientOptions = new MqttClientOptionsBuilder()
                                    .WithClientId(nameof(IntegrationTestEnvironment) + "Client")
                                    .WithTcpServer(brokerIpAddress.ToString(), brokerPort)
                                    .Build();

            await mqttServer
            .StartAsync(mqttServerOptions)
            .ConfigureAwait(false);

            await MqttClient
            .ConnectAsync(mqttClientOptions)
            .ConfigureAwait(false);

            var config = IntegrationTests.GetConfig(brokerIpAddress.ToString(), brokerPort);

            config.Validate();
            appContext = Logic
                         .Initialize(LoggerFactory, config);
            await appContext
            .Connect()
            .ConfigureAwait(false);
        }
示例#25
0
        public void OneTimeSetUp()
        {
            _logger = new TestableLogger();
            _dice   = new TestableDice(1);

            _game = new TrollSlayerStoryGame(
                _logger,
                _dice,
                new TrollFactory(
                    new TrollStartupRule(),
                    new TrollStatsChangeRule(),
                    _dice,
                    _logger),
                new Player(
                    _logger,
                    new CharacterCriticalStrikeRule()),
                new PlayerEquipmentRule());

            _game.Run();
        }
示例#26
0
        public void Log_GivenLogEntries_ThenAllAreSavedInOutput(LogLevel logLevel, string expected)
        {
            var subject = new TestableLogger();

            switch (logLevel)
            {
            case LogLevel.Critical:
                subject.LogCritical("Critical error occurred.");
                break;

            case LogLevel.Trace:
                subject.LogTrace("Starting the test.");
                break;

            case LogLevel.Debug:
                subject.LogDebug("Additional information.");
                break;

            case LogLevel.Information:
                subject.LogInformation("Finished test.");
                break;

            case LogLevel.Warning:
                subject.LogWarning("Test results inconclusive.");
                break;

            case LogLevel.Error:
                subject.LogError("An error occurred.");
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(logLevel), logLevel, null);
            }

            Assert.That(subject.LogEntries.Count, Is.EqualTo(1));
            Assert.That(subject.LogEntries[0].LogLevel, Is.EqualTo(logLevel));
            Assert.That(subject.LogEntries[0].Message, Is.EqualTo(expected));
        }
示例#27
0
        public void ErrorableDownloadFactory_Fake404InsideWindow_Has1ErrorLogAndTwoWarningLogs()
        {
            var testableLogger = new TestableLogger();
            var timeService    = Substitute.For <ITimeService>();
            var window         = TimeSpan.FromHours(1);
            var time0          = DateTime.Today;

            timeService.UtcNow.Returns(time0);
            var testContainerManager = _createTestContainerManager(testableLogger, timeService, s => {
                s.DownloadErrorLimit  = 2;
                s.DownloadErrorWindow = window;
            });
            var errorableDownloadFactory = testContainerManager.Container.GetInstance <IErrorableFactory <string, string, string, string> >();
            var settings = testContainerManager.Container.GetInstance <ISettings>();

            foreach (var i in Enumerable.Range(0, settings.DownloadErrorLimit + 1))
            {
                errorableDownloadFactory.Create("google.com", "", "");
            }

            Assert.AreEqual(1, testableLogger.ErrorOutbox.Count);
            Assert.AreEqual(3, testableLogger.WarningOutbox.Count);
        }