Esempio n. 1
0
        public void ShouldValidateUnsuccessfulySinceLowerRangeIsLargerThanHigherRange()
        {
            var expectedValidationResult = new ValidationResult("Configuration of application contains invalid definition of minimum and maximum donation amount.");

            var donationAmountValidationResult = AppSettingsValidator.ValidateDonationAmountRange(5, 2);

            Assert.AreEqual(expectedValidationResult.ErrorMessage, donationAmountValidationResult.ErrorMessage);
        }
Esempio n. 2
0
        private static void ValidateApiUrl(IConfiguration configuration)
        {
            AppSettingsValidator validatorHelper = new AppSettingsValidator(configuration, new ValidatorHelper());

            if (!validatorHelper.IsLocalApiUrlValid())
            {
                throw new ConfigurationValidationException(validatorHelper.ErrorMessageContainer);
            }
        }
Esempio n. 3
0
        private static void ValidateConfigurationSettings(IConfiguration configuration)
        {
            AppSettingsValidator validatorHelper = new AppSettingsValidator(configuration, new ValidatorHelper());

            if (!validatorHelper.IsConnectionStringValid() || !validatorHelper.IsFileStorePathValid() || !validatorHelper.IsLocalApiUrlValid() || !validatorHelper.IsDefaultAdminDetailsValid())
            {
                throw new ConfigurationValidationException(validatorHelper.ErrorMessageContainer);
            }
        }
Esempio n. 4
0
        public void RETURN_FALSE_IF_LOCAL_API_URL_IS_EMPTY()
        {
            IConfiguration configuration = CommonMethods.CreateMockConfigurationFromFile(APPSETTINGS_WITH_INVALID_DATA);

            var validatorHelperMock = new Mock <IValidatorHelper>();
            var objectUnderTest     = new AppSettingsValidator(configuration, validatorHelperMock.Object);
            var result = objectUnderTest.IsLocalApiUrlValid();

            Assert.IsNotNull(result);
            Assert.IsFalse(result);
        }
Esempio n. 5
0
        public void RETURN_FALSE_IF_FILESTORE_PATH_POINTS_NON_EXISTING_DIRECTORY()
        {
            IConfiguration configuration = CommonMethods.CreateConfigurationWithFileStorePath("/non/existing/directory");

            var validatorHelperMock = new Mock <IValidatorHelper>();
            var objectUnderTest     = new AppSettingsValidator(configuration, validatorHelperMock.Object);
            var result = objectUnderTest.IsFileStorePathValid();

            Assert.IsNotNull(result);
            Assert.IsFalse(result);
        }
Esempio n. 6
0
        public void RETURN_FALSE_WITH_EMPTY_CONNECTION_STRING()
        {
            IConfiguration configuration = CommonMethods.CreateMockConfigurationFromFile(APPSETTINGS_WITH_EMPTY_ENTITIES);

            var validatorHelperMock = new Mock <IValidatorHelper>();
            var objectUnderTest     = new AppSettingsValidator(configuration, validatorHelperMock.Object);
            var result = objectUnderTest.IsConnectionStringValid();

            Assert.IsNotNull(result);
            Assert.IsFalse(result);
        }
Esempio n. 7
0
        public void RETURN_FALSE_IF_CANNOT_CONNECT_TO_DATABASE()
        {
            IConfiguration configuration = CommonMethods.CreateMockConfigurationFromFile(APPSETTINGS_WITH_INVALID_DATA);

            var validatorHelperMock = new Mock <IValidatorHelper>();
            var objectUnderTest     = new AppSettingsValidator(configuration, validatorHelperMock.Object);
            var result = objectUnderTest.IsConnectionStringValid();

            Assert.IsNotNull(result);
            Assert.IsFalse(result);
        }
Esempio n. 8
0
        public void RETURN_TRUE_IF_DEFAULT_ADMIN_DETAILS_IS_VALID()
        {
            var configuration = CommonMethods.CreateMockConfigurationFromFile(APPSETTINGS_WITH_VALID_DATA);

            var validatorHelperMock = new Mock <IValidatorHelper>();
            var objectUnderTest     = new AppSettingsValidator(configuration, validatorHelperMock.Object);
            var result = objectUnderTest.IsDefaultAdminDetailsValid();

            Assert.IsNotNull(result);
            Assert.IsTrue(result);
        }
Esempio n. 9
0
        public void ShouldValidateTaxRatePercentage()
        {
            _optionsMonitorMock.Setup(o => o.CurrentValue).Returns(new AppSettings()
            {
                TaxRatePercentage = "20"
            });

            var donationAmountValidationResult = AppSettingsValidator.ValidateTaxRatePercentage(_optionsMonitorMock.Object);

            Assert.AreEqual(ValidationResult.Success, donationAmountValidationResult);
        }
Esempio n. 10
0
        public void ShouldValidateUnsuccessfulyWhenTaxRateIsNotPresentInAppSettings()
        {
            _optionsMonitorMock.Setup(o => o.CurrentValue).Returns(new AppSettings()
            {
            });

            var expectedValidationResult = new ValidationResult("Configuration of application does not contain tax rate percentage.");

            var donationAmountValidationResult = AppSettingsValidator.ValidateTaxRatePercentage(_optionsMonitorMock.Object);

            Assert.AreEqual(expectedValidationResult.ErrorMessage, donationAmountValidationResult.ErrorMessage);
        }
Esempio n. 11
0
        public void RETURN_FALSE_WITHOUT_READ_WRITE_ACCESS_TO_FILESTORE()
        {
            IConfiguration configuration = CommonMethods.CreateConfigurationWithFileStorePath(TEST_DIRECTORY_PATH);
            var            fileStorePath = configuration.GetValue <string>("DefaultFileStorePath");

            var validatorHelperMock = new Mock <IValidatorHelper>();

            validatorHelperMock.Setup(x => x.HaveRequiredPermissionsToFileStore(fileStorePath)).Returns(false);
            var objectUnderTest = new AppSettingsValidator(configuration, validatorHelperMock.Object);
            var result          = objectUnderTest.IsFileStorePathValid();

            Assert.IsNotNull(result);
            Assert.IsFalse(result);
        }
Esempio n. 12
0
        public void RETURN_TRUE_IF_FILESTORE_PATH_IS_VALID()
        {
            IConfiguration configuration = CommonMethods.CreateConfigurationWithFileStorePath();
            var            fileStorePath = configuration.GetValue <string>("DefaultFileStorePath");

            var validatorHelperMock = new Mock <IValidatorHelper>();

            validatorHelperMock.Setup(x => x.HaveRequiredPermissionsToFileStore(fileStorePath)).Returns(true);
            var objectUnderTest = new AppSettingsValidator(configuration, validatorHelperMock.Object);
            var result          = objectUnderTest.IsFileStorePathValid();

            Assert.IsNotNull(result);
            Assert.IsTrue(result);
        }
Esempio n. 13
0
        public void RETURN_TRUE_IF_CONNECTION_STRING_IS_VALID()
        {
            IConfiguration configuration       = CommonMethods.CreateMockConfigurationFromFile(APPSETTINGS_WITH_VALID_DATA);
            var            connectionString    = configuration.GetConnectionString("CQuerDB");
            var            validatorHelperMock = new Mock <IValidatorHelper>();

            validatorHelperMock.Setup(x => x.CanEstablishConnectionWithDatabase(connectionString)).Returns(true);

            var objectUnderTest = new AppSettingsValidator(configuration, validatorHelperMock.Object);
            var result          = objectUnderTest.IsConnectionStringValid();

            Assert.IsNotNull(result);
            Assert.IsTrue(result);
        }
Esempio n. 14
0
        public void RETURN_TRUE_IF_LOCAL_API_URL_IS_VALID()
        {
            IConfiguration configuration = CommonMethods.CreateMockConfigurationFromFile(APPSETTINGS_WITH_VALID_DATA);
            var            localApiUrl   = configuration.GetValue <string>("CQuerLocalAPIURL");

            var validatorHelperMock = new Mock <IValidatorHelper>();

            validatorHelperMock.Setup(x => x.IsLocalAddress(localApiUrl)).Returns(true);
            var objectUnderTest = new AppSettingsValidator(configuration, validatorHelperMock.Object);
            var result          = objectUnderTest.IsLocalApiUrlValid();

            Assert.IsNotNull(result);
            Assert.IsTrue(result);
        }
Esempio n. 15
0
        public void ShouldValidateAppSettingsSuccessfuly()
        {
            _optionsMonitorMock.Setup(o => o.CurrentValue).Returns(new AppSettings()
            {
                MinimumDonationAmount = "2",
                MaximumDonationAmount = "100000",
                TaxRatePercentage     = "20"
            });

            var expectedValidationResult = new List <ValidationResult>();

            var donationAmountValidationResult = AppSettingsValidator.ValidateAppSettings(_optionsMonitorMock.Object);

            Assert.AreEqual(expectedValidationResult, donationAmountValidationResult);
        }
Esempio n. 16
0
        private ObjectResult ValidateOperation(decimal donationAmount)
        {
            var appSettingsValidationResult = AppSettingsValidator.ValidateAppSettings(_appSettings);

            if (appSettingsValidationResult.Count > 0)
            {
                return(StatusCode(500, new ValidationResult("Internal Server Error: Definition of one or more configuration settings of the application are invalid.")));
            }

            var requestValidationResult = AmountValidator.ValidateAmount(_appSettings, donationAmount);

            if (requestValidationResult != null)
            {
                return(StatusCode(400, requestValidationResult));
            }

            return(StatusCode(200, null));
        }
Esempio n. 17
0
        public void ValidateAppSettingsShouldReturnTaxRatePercentageValidationError()
        {
            _optionsMonitorMock.Setup(o => o.CurrentValue).Returns(new AppSettings()
            {
                MinimumDonationAmount = "2",
                MaximumDonationAmount = "100000"
            });

            var expectedValidationResult = new List <ValidationResult>()
            {
                new ValidationResult("Configuration of application does not contain tax rate percentage.")
            };

            var donationAmountValidationResult = AppSettingsValidator.ValidateAppSettings(_optionsMonitorMock.Object);

            Assert.AreEqual(1, donationAmountValidationResult.Count);
            Assert.AreEqual(expectedValidationResult[0].ErrorMessage, donationAmountValidationResult[0].ErrorMessage);
        }
Esempio n. 18
0
        public void ValidateAppSettingsShouldReturnAmountRangeValidationError()
        {
            _optionsMonitorMock.Setup(o => o.CurrentValue).Returns(new AppSettings()
            {
                TaxRatePercentage     = "20",
                MinimumDonationAmount = "2",
                MaximumDonationAmount = "1"
            });

            var expectedValidationResult = new List <ValidationResult>()
            {
                new ValidationResult("Configuration of application contains invalid definition of minimum and maximum donation amount.")
            };

            var donationAmountValidationResult = AppSettingsValidator.ValidateAppSettings(_optionsMonitorMock.Object);

            Assert.AreEqual(1, donationAmountValidationResult.Count);
            Assert.AreEqual(expectedValidationResult[0].ErrorMessage, donationAmountValidationResult[0].ErrorMessage);
        }
Esempio n. 19
0
        public void ThrowExceptionIfSecretNotValid(string invalidSecret)
        {
            // [Setup]
            // setup webhost using appsettings with specific path
            var appSettingsValidator = new AppSettingsValidator();
            var appSettings          = new AppSettings();

            appSettings.JwtSecret = invalidSecret;

            // [Verify]
            // we expect to have a appsettings invalid exception
            Assert.Throws <InvalidAppSettingsException>(() =>
            {
                appSettingsValidator.EnsureValid(appSettings);
            });

            // [Teardown]
            // nothing to tear down
        }
Esempio n. 20
0
        public void ThrowExceptionIfProductTypeNotValid(Type productType)
        {
            // [Setup]
            // setup webhost using appsettings with specific path
            var appSettingsValidator = new AppSettingsValidator();
            var appSettings          = new AppSettings();

            appSettings.ProductType = productType;

            // [Verify]
            // we expect to have a appsettings invalid exception
            var exception = Assert.Throws <InvalidAppSettingsException>(() =>
            {
                appSettingsValidator.EnsureValid(appSettings);
            });

            Assert.Equal(nameof(appSettings.ProductType), exception.PropertyName);

            // [Teardown]
            // nothing to tear down
        }
Esempio n. 21
0
        public void ShouldValidateSuccessfulyDonationAmountRangeWhenHigherRangeIsUndefined()
        {
            var donationAmountValidationResult = AppSettingsValidator.ValidateDonationAmountRange(2, 0);

            Assert.AreEqual(ValidationResult.Success, donationAmountValidationResult);
        }
Esempio n. 22
0
        public void ShouldValidateSuccessfulyDonationAmountRange()
        {
            var donationAmountValidationResult = AppSettingsValidator.ValidateDonationAmountRange(2, 100000);

            Assert.AreEqual(ValidationResult.Success, donationAmountValidationResult);
        }