Пример #1
0
        public void NameValidatorValueNameTest()
        {
            var culture = System.Globalization.CultureInfo.GetCultureInfoByIetfLanguageTag("EN");
            var tested  = new FileNameValidator();
            var result  = tested.Validate("qwertyuiop|", culture);

            Assert.IsFalse(result.IsValid);
            Assert.IsTrue(result.ErrorContent.ToString().Contains(tested.ValueName));
            tested.ValueName = "custom value name";
            result           = tested.Validate("qwertyuiop|", culture);
            Assert.IsFalse(result.IsValid);
            Assert.IsTrue(result.ErrorContent.ToString().Contains("custom value name"));
        }
Пример #2
0
        public void NameValidatorValidateTestInvariantCulture2()
        {
            var invalid = new string(Path.GetInvalidFileNameChars());
            var culture = System.Globalization.CultureInfo.InvariantCulture;
            var tested  = new FileNameValidator();
            var result  = tested.Validate("qwertyuiop|", culture);

            Assert.IsFalse(result.IsValid);
            result = tested.Validate("abc?2 ", culture);
            Assert.IsFalse(result.IsValid);
            result = tested.Validate("%21313!weq  ", culture);
            Assert.IsTrue(result.IsValid);
        }
Пример #3
0
        public void GithubHookConsumer_NothingInDb_WhenHandlingBadHook()
        {
            ISalesHandlerFactory fileHandlerFactory = new TestGithubSalesHandlerFactory(DependencyContainer.Container);
            IHookConsumer        hookConsumer       = DependencyContainer.Container.Resolve <IHookConsumer>(new ResolverOverride[]
            {
                new ParameterOverride(typeof(ISalesHandlerFactory), fileHandlerFactory),
                new ParameterOverride("githubRepoToken", Token),
                new ParameterOverride("hookParser", new GithubHookParser(f => FileNameValidator.Validate(f)))
            });

            using (ISalesUnitOfWork unitOfWork = DependencyContainer.Container.Resolve <ISalesUnitOfWork>())
            {
                lock (lockObject)
                {
                    int customersCount   = unitOfWork.Customers.Get().Count();
                    int productsCount    = unitOfWork.Products.Get().Count();
                    int sourceFilesCount = unitOfWork.SourceFiles.Get().Count();
                    int salesCount       = unitOfWork.Sales.Get().Count();
                    int errorsCount      = unitOfWork.ErrorFiles.Get().Count();

                    hookConsumer.ConsumeHookAsync("../../Data/bad_hook1.json").GetAwaiter().GetResult();

                    int customersCountAfter   = unitOfWork.Customers.Get().Count();
                    int productsCountAfter    = unitOfWork.Products.Get().Count();
                    int sourceFilesCountAfter = unitOfWork.SourceFiles.Get().Count();
                    int salesCountAfter       = unitOfWork.Sales.Get().Count();
                    int errorsCountAfter      = unitOfWork.ErrorFiles.Get().Count();
                    Assert.AreEqual(customersCount, customersCountAfter);
                    Assert.AreEqual(productsCount, productsCountAfter);
                    Assert.AreEqual(sourceFilesCount, sourceFilesCountAfter);
                    Assert.AreEqual(salesCount, salesCountAfter);
                    Assert.AreEqual(errorsCount, errorsCountAfter);
                }
            }
        }
		public void ReturnFailureForFileTooLong()
		{
			Validator validator = new FileNameValidator();
			ValidationResults validationResults = validator.Validate(new String('a',111));

			Assert.IsFalse(validationResults.IsValid);
			Assert.AreEqual(1, NumberOfErrors(validationResults));
		}
		public void ReturnFailureForEmptyFile()
		{
			Validator validator = new FileNameValidator();
			ValidationResults validationResults = validator.Validate(string.Empty);

			Assert.IsFalse(validationResults.IsValid);
			Assert.AreEqual(2, NumberOfErrors(validationResults));
		}
Пример #6
0
        public void ReturnSuccessForValidFile()
        {
            Validator         validator         = new FileNameValidator();
            ValidationResults validationResults = validator.Validate("class.cs");

            Assert.IsTrue(validationResults.IsValid);
            Assert.AreEqual(0, NumberOfErrors(validationResults));
        }
Пример #7
0
        public void ReturnFailureForFileWithReservedSystemWords()
        {
            Validator         validator         = new FileNameValidator();
            ValidationResults validationResults = validator.Validate("PRN");

            Assert.IsFalse(validationResults.IsValid);
            Assert.AreEqual(1, NumberOfErrors(validationResults));
        }
Пример #8
0
        public void ReturnFailureForFileTooLong()
        {
            Validator         validator         = new FileNameValidator();
            ValidationResults validationResults = validator.Validate(new String('a', 111));

            Assert.IsFalse(validationResults.IsValid);
            Assert.AreEqual(1, NumberOfErrors(validationResults));
        }
Пример #9
0
        public void ReturnFailureForEmptyFile()
        {
            Validator         validator         = new FileNameValidator();
            ValidationResults validationResults = validator.Validate(string.Empty);

            Assert.IsFalse(validationResults.IsValid);
            Assert.AreEqual(2, NumberOfErrors(validationResults));
        }
		public void ReturnFailureForFileWithInvalidCharacters()
		{
			Validator validator = new FileNameValidator();
			ValidationResults validationResults = validator.Validate("?class.cs");

			Assert.IsFalse(validationResults.IsValid);
			Assert.AreEqual(1, NumberOfErrors(validationResults));
		}
		public void ReturnFailureForFileWithReservedSystemWords()
		{
			Validator validator = new FileNameValidator();
			ValidationResults validationResults = validator.Validate("PRN");

			Assert.IsFalse(validationResults.IsValid);
			Assert.AreEqual(1, NumberOfErrors(validationResults));
		}
Пример #12
0
        public void ReturnFailureForFileWithInvalidCharacters()
        {
            Validator         validator         = new FileNameValidator();
            ValidationResults validationResults = validator.Validate("?class.cs");

            Assert.IsFalse(validationResults.IsValid);
            Assert.AreEqual(1, NumberOfErrors(validationResults));
        }
Пример #13
0
        public void FileNameValidation_Correct()
        {
            foreach (var entry in fileNamesSource)
            {
                var validationResult = FileNameValidator.Validate(entry.Key);

                Assert.AreEqual(entry.Value, validationResult);
            }
        }
        public void Validate_RecognizesNotExistingFolderAsValid()
        {
            var tempDir = Path.GetFullPath(@".\temp\");

            var validator = new FileNameValidator(tempDir);

            var result = validator.Validate("newfolder");

            Assert.True(result.IsValid);
            Assert.True(result.Errors.Count == 0);
        }
        public void Validate_RecognizesNotExistingFileAsValid()
        {
            var tempDir = Path.GetFullPath(@".\temp\");

            Directory.CreateDirectory(Path.Combine(Environment.CurrentDirectory, "temp"));

            var validator = new FileNameValidator(tempDir);

            var result = validator.Validate("newfile");

            Assert.True(result.IsValid);
            Assert.True(result.Errors.Count == 0);
        }
Пример #16
0
        public void GithubHookConsumer_HandlingSameHookInParallelThreads_EachFileSavedOnlyOnce()
        {
            ISalesHandlerFactory fileHandlerFactory = new TestGithubSalesHandlerFactory(DependencyContainer.Container);
            IHookConsumer        hookConsumer       = DependencyContainer.Container.Resolve <IHookConsumer>(new ResolverOverride[]
            {
                new ParameterOverride(typeof(ISalesHandlerFactory), fileHandlerFactory),
                new ParameterOverride("githubRepoToken", Token),
                new ParameterOverride("hookParser", new GithubHookParser(f => FileNameValidator.Validate(f)))
            });
            IHookConsumer hookConsumer2 = DependencyContainer.Container.Resolve <IHookConsumer>(new ResolverOverride[]
            {
                new ParameterOverride(typeof(ISalesHandlerFactory), fileHandlerFactory),
                new ParameterOverride("githubRepoToken", Token),
                new ParameterOverride("hookParser", new GithubHookParser(f => FileNameValidator.Validate(f)))
            });

            using (ISalesUnitOfWork unitOfWork = DependencyContainer.Container.Resolve <ISalesUnitOfWork>())
            {
                lock (lockObject)
                {
                    unitOfWork.Customers.Delete(x => true);
                    unitOfWork.Products.Delete(x => true);
                    unitOfWork.SourceFiles.Delete(x => true);
                    unitOfWork.Sales.Delete(x => true);
                    unitOfWork.ErrorFiles.Delete(x => true);
                    unitOfWork.SaveChanges();
                    string hookJson = File.ReadAllText("../../Data/hook1.json");

                    var task1 = hookConsumer.ConsumeHookAsync(hookJson);
                    var task2 = hookConsumer2.ConsumeHookAsync(hookJson);
                    Task.WaitAll(task1, task2);

                    int customersCountAfter   = unitOfWork.Customers.Get().Count();
                    int productsCountAfter    = unitOfWork.Products.Get().Count();
                    int sourceFilesCountAfter = unitOfWork.SourceFiles.Get().Count();
                    int salesCountAfter       = unitOfWork.Sales.Get().Count();
                    int errorsCountAfter      = unitOfWork.ErrorFiles.Get().Count();
                    Assert.AreEqual(5, customersCountAfter);
                    Assert.AreEqual(4, productsCountAfter);
                    Assert.AreEqual(2, sourceFilesCountAfter);
                    Assert.AreEqual(10, salesCountAfter);
                    Assert.IsTrue(errorsCountAfter >= 2);
                }
            }
        }
        public void Validate_RecognizesExistingFileAsInvalid()
        {
            var tempDir = Path.GetFullPath(@".\temp\");

            Directory.CreateDirectory(Path.Combine(Environment.CurrentDirectory, "temp"));

            using (File.Create(Path.Combine(Environment.CurrentDirectory, "temp\\testfile.txt")))
            {
                var validator = new FileNameValidator(tempDir);

                var result = validator.Validate("testfile");

                Assert.False(result.IsValid);
                Assert.True(result.Errors.Count == 1);
                Assert.Equal(ValidationErrorType.AlreadyExists, result.Errors.FirstOrDefault()?.ErrorType);
                Assert.Equal(nameof(FileNameValidator), result.Errors.FirstOrDefault()?.ValidatorName);
            }

            Directory.Delete(tempDir, true);
        }
Пример #18
0
        public void GithubHookConsumer_DbHasCorrectData_WhenHandlingGoodHook()
        {
            ISalesHandlerFactory fileHandlerFactory = new TestGithubSalesHandlerFactory(DependencyContainer.Container);
            IHookConsumer        hookConsumer       = DependencyContainer.Container.Resolve <IHookConsumer>(new ResolverOverride[]
            {
                new ParameterOverride(typeof(ISalesHandlerFactory), fileHandlerFactory),
                new ParameterOverride("githubRepoToken", Token),
                new ParameterOverride("hookParser", new GithubHookParser(f => FileNameValidator.Validate(f)))
            });

            using (ISalesUnitOfWork unitOfWork = DependencyContainer.Container.Resolve <ISalesUnitOfWork>())
            {
                lock (lockObject)
                {
                    unitOfWork.Customers.Delete(x => true);
                    unitOfWork.Products.Delete(x => true);
                    unitOfWork.SourceFiles.Delete(x => true);
                    unitOfWork.Sales.Delete(x => true);
                    unitOfWork.ErrorFiles.Delete(x => true);
                    unitOfWork.SaveChanges();
                    string hookJson = File.ReadAllText("../../Data/hook1.json");

                    hookConsumer.ConsumeHookAsync(hookJson).GetAwaiter().GetResult();

                    int customersCountAfter   = unitOfWork.Customers.Get().Count();
                    int productsCountAfter    = unitOfWork.Products.Get().Count();
                    int sourceFilesCountAfter = unitOfWork.SourceFiles.Get().Count();
                    int salesCountAfter       = unitOfWork.Sales.Get().Count();
                    int errorsCountAfter      = unitOfWork.ErrorFiles.Get().Count();
                    Assert.AreEqual(5, customersCountAfter);
                    Assert.AreEqual(4, productsCountAfter);
                    Assert.AreEqual(2, sourceFilesCountAfter);
                    Assert.AreEqual(10, salesCountAfter);
                    Assert.AreEqual(2, errorsCountAfter);
                }
            }
        }
Пример #19
0
        public void NameValidatorValidateTestInvariantCulture()
        {
            var culture = System.Globalization.CultureInfo.InvariantCulture;
            var tested  = new FileNameValidator();
            var result  = tested.Validate(null, culture);

            Assert.IsFalse(result.IsValid);
            result = tested.Validate("", culture);
            Assert.IsFalse(result.IsValid);
            result = tested.Validate(" ", culture);
            Assert.IsFalse(result.IsValid);
            result = tested.Validate("      ", culture);
            Assert.IsFalse(result.IsValid);
            result = tested.Validate("\t\t\t", culture);
            Assert.IsFalse(result.IsValid);
            result = tested.Validate("sgfyiwegfiweg hfwuiegfi  ywegfygiw   gefoyweoryu123675887989091823", culture);
            Assert.IsTrue(result.IsValid);
        }
Пример #20
0
        public HookConsumerTestClass(string token)
        {
            ISalesHandlerFactory handlerFactory = new FileHandlerFactoryTestClass();

            hookConsumer = new HookConsumer(handlerFactory, token, new HookParserTestClass(fileName => FileNameValidator.Validate(fileName)));
        }
Пример #21
0
 private static void CreateRegistrations()
 {
     container.RegisterFactory <GithubHookParser>(cnt => new GithubHookParser(fileName => FileNameValidator.Validate(fileName)));
     container.RegisterType <ISalesUnitOfWork, SalesDbUnitOfWork>();
     container.RegisterType <ISalesDataManager, SaleDbDataManager>();
     container.RegisterType <SalesHandlerBase, GithubSalesHandler>();
     container.RegisterType <ISaleDataSource, GithubSaleDataSource>();
     container.RegisterType <ISalesHandlerFactory, SalesHandlerFactory>(Invoke.Constructor(Container));
 }
		public void ReturnSuccessForValidFile()
		{
			Validator validator = new FileNameValidator();
			ValidationResults validationResults = validator.Validate("class.cs");

			Assert.IsTrue(validationResults.IsValid);
			Assert.AreEqual(0, NumberOfErrors(validationResults));
		}
Пример #23
0
        /// <summary>
        /// Registers the type mappings with the Unity container.
        /// </summary>
        /// <param name="container">The unity container to configure.</param>
        /// <remarks>
        /// There is no need to register concrete types such as controllers or
        /// API controllers (unless you want to change the defaults), as Unity
        /// allows resolving a concrete type even if it was not previously
        /// registered.
        /// </remarks>
        public static void RegisterTypes(IUnityContainer container)
        {
            // NOTE: To load from web.config uncomment the line below.
            // Make sure to add a Unity.Configuration to the using statements.
            // container.LoadConfiguration();

            // TODO: Register your type's mappings here.
            // container.RegisterType<IProductRepository, ProductRepository>();

            string token = ConfigurationManager.AppSettings["token"];

            container.RegisterFactory <GithubHookParser>(cnt => new GithubHookParser(fileName => FileNameValidator.Validate(fileName)));
            container.RegisterType <ISalesUnitOfWork, SalesDbUnitOfWork>();
            container.RegisterType <ISalesDataManager, SaleDbDataManager>();
            container.RegisterType <SalesHandlerBase, GithubSalesHandler>();
            container.RegisterType <ISaleDataSource, GithubSaleDataSource>();
            container.RegisterType <ISalesHandlerFactory, SalesHandlerFactory>();
            container.RegisterType <IHookConsumer, GithubHookConsumer>(Invoke.Constructor(container.Resolve <ISalesHandlerFactory>(), token, container.Resolve <GithubHookParser>()));
        }