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")); }
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); }
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)); }
public void ReturnSuccessForValidFile() { Validator validator = new FileNameValidator(); ValidationResults validationResults = validator.Validate("class.cs"); Assert.IsTrue(validationResults.IsValid); Assert.AreEqual(0, NumberOfErrors(validationResults)); }
public void ReturnFailureForFileWithReservedSystemWords() { Validator validator = new FileNameValidator(); ValidationResults validationResults = validator.Validate("PRN"); Assert.IsFalse(validationResults.IsValid); Assert.AreEqual(1, NumberOfErrors(validationResults)); }
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 ReturnFailureForFileWithInvalidCharacters() { Validator validator = new FileNameValidator(); ValidationResults validationResults = validator.Validate("?class.cs"); Assert.IsFalse(validationResults.IsValid); Assert.AreEqual(1, NumberOfErrors(validationResults)); }
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); }
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); }
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); } } }
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); }
public HookConsumerTestClass(string token) { ISalesHandlerFactory handlerFactory = new FileHandlerFactoryTestClass(); hookConsumer = new HookConsumer(handlerFactory, token, new HookParserTestClass(fileName => FileNameValidator.Validate(fileName))); }
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)); }
/// <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>())); }