public static IUnleashServiceCollection WithMemoryToggleCollectionCache(this IUnleashServiceCollection serviceCollection, Action <MemoryToggleCollectionCacheSettings> settingsConfigurator = null) { if (serviceCollection == null) { throw new ArgumentNullException(nameof(serviceCollection)); } var settings = new MemoryToggleCollectionCacheSettings(); if (serviceCollection.UnleashConfiguration != null) { var section = serviceCollection.UnleashConfiguration.GetSection("Caching:Memory"); section.Bind(settings); } settingsConfigurator?.Invoke(settings); SettingsValidator.Validate(settings); serviceCollection.AddSingleton(settings); serviceCollection.AddMemoryCache(); serviceCollection.WithToggleCollectionCache <MemoryToggleCollectionCache>(); return(serviceCollection); }
public async Task UpdateAppSetting(AppSettingsKey key, string value) { var message = SettingsValidator.Validate(key, value); if (message != "") { throw new ArgumentException(message); } var keyStr = key.ToString(); var appSetting = await _context.AppSettings.FirstOrDefaultAsync(s => s.Key == keyStr).ConfigureAwait(false); if (appSetting == null) { await _context.AppSettings.AddAsync(new AppSetting { Key = keyStr, Value = value, ModifiedDate = DateTime.UtcNow }); await _context.SaveChangesAsync().ConfigureAwait(false); } else { if (appSetting.Value != value) { appSetting.Value = value; appSetting.ModifiedDate = DateTime.UtcNow; await _context.SaveChangesAsync().ConfigureAwait(false); } } }
public static IUnleashServiceCollection WithNewtonsoftJsonSerializer(this IUnleashServiceCollection serviceCollection, Action <NewtonsoftJsonSerializerSettings> settingsConfigurator = null) { if (serviceCollection == null) { throw new ArgumentNullException(nameof(serviceCollection)); } var settings = new NewtonsoftJsonSerializerSettings(); if (serviceCollection.UnleashConfiguration != null) { var section = serviceCollection.UnleashConfiguration.GetSection("Serialization:NewtonsoftJson"); section.Bind(settings); } settingsConfigurator?.Invoke(settings); SettingsValidator.Validate(settings); serviceCollection.AddSingleton(settings); serviceCollection.WithJsonSerializer <NewtonsoftJsonSerializer>(); return(serviceCollection); }
private ValidationResult DeserializeAndValidate(string json) { Settings settings = JsonConvert.DeserializeObject <Settings>(json); var settingsValidator = new SettingsValidator(); return(settingsValidator.Validate(settings)); }
private static void RunValidation(MockupJsonModel jsonConfig, Dictionary <string, HashSet <string> > requiredParameters = null, bool failureExpected = true) { IUserConfig userConfig = jsonConfig.GetUserConfig(); var settingsValidator = new SettingsValidator( userConfig, new MockupAdminConfig().GetFabricSettingsMetadata(), requiredParameters == null ? new Dictionary <string, HashSet <string> >() : requiredParameters, clusterManifestGeneratorSettings); if (failureExpected) { Verify.Throws <ValidationException>(() => settingsValidator.Validate(true)); } else { Verify.NoThrow(() => settingsValidator.Validate(true)); } }
public void validation_should_fail_for_no_options() { // Arrange var settings = new Settings(); var target = new SettingsValidator(settings); // Act var result = target.Validate(); // Assert Assert.NotNull(result.ErrorMessages); Assert.Equal(3, result.ErrorMessages.Count); }
private void OnExecute() { if (!File.Exists(SettingsFile)) { Console.WriteLine($"Can't find file {SettingsFile}"); return; } if (!File.Exists(MovesFile)) { Console.WriteLine($"Can't find file {MovesFile}"); return; } var settingsText = File.ReadAllText(SettingsFile); var movesText = File.ReadAllLines(MovesFile); Settings settings = null; FluentValidation.Results.ValidationResult settingsValidationResult = null; try { var settingsValidator = new SettingsValidator(); settings = JsonConvert.DeserializeObject <Settings>(settingsText); settingsValidationResult = settingsValidator.Validate(settings); if (!settingsValidationResult.IsValid) { foreach (var error in settingsValidationResult.Errors) { Console.WriteLine(error.ErrorMessage); } } } catch (JsonException ex) { Console.WriteLine("The settings file contains an invalid configuration."); Console.WriteLine(ex.Message); } if (settingsValidationResult?.IsValid != true) { return; } var turtleFactory = new TurtleFactory(settings); ProcessMoves(turtleFactory, settings, movesText); }
internal static IUnleashServiceCollection AddUnleash(this IServiceCollection serviceCollection, Action <UnleashSettings> settingsInitializer, IConfiguration configuration, Action <UnleashSettings> settingsOverrider) { if (serviceCollection == null) { throw new ArgumentNullException(nameof(serviceCollection)); } var result = new UnleashServiceCollection(serviceCollection, configuration); var settings = new UnleashSettings(); settingsInitializer?.Invoke(settings); configuration?.Bind(settings); settingsOverrider?.Invoke(settings); SettingsValidator.Validate(settings); var unleashApiClientRequestHeaders = new UnleashApiClientRequestHeaders { AppName = settings.AppName, CustomHttpHeaders = settings.CustomHttpHeaders, InstanceTag = settings.InstanceTag }; serviceCollection.AddSingleton(settings); serviceCollection.AddSingleton <IRandom>(new UnleashRandom()); serviceCollection.AddSingleton(serviceProvider => serviceProvider.GetService <IEnumerable <IStrategy> >()?.ToArray() ?? Array.Empty <IStrategy>()); // Internal services serviceCollection.AddSingleton <NewtonsoftJsonSerializerSettings>(); serviceCollection.AddSingleton <IJsonSerializer, NewtonsoftJsonSerializer>(); serviceCollection.AddSingleton(unleashApiClientRequestHeaders); serviceCollection.AddSingleton <IHttpClientFactory, DefaultHttpClientFactory>(); serviceCollection.AddSingleton <IUnleashApiClientFactory, DefaultUnleashApiClientFactory>(); serviceCollection.AddSingleton <IUnleashApiClient, UnleashApiClient>(); serviceCollection.AddSingleton <IUnleashServices, UnleashServices>(); // Default: SystemTimer scheduled task manager serviceCollection.AddSingleton <IUnleashScheduledTaskManager, SystemTimerScheduledTaskManager>(); // Default: Disk-based JSON toggle collection cache serviceCollection.AddSingleton <IFileSystem, FileSystem>(); serviceCollection.AddSingleton <IToggleCollectionCache, FileSystemToggleCollectionCache>(); serviceCollection.AddScoped <IUnleashContextProvider, DefaultUnleashContextProvider>(); serviceCollection.AddScoped <IUnleash, Unleash>(); return(result); }
public void InvalidSettingsNoMinesTest() { string json = @"{ 'board': { 'width': 7, 'height': 6 }, 'startTile':{'x':0,'y':0}, 'exitTile':{'x':6, 'y':5}, 'direction':'North' }"; Settings settings = JsonConvert.DeserializeObject <Settings>(json); var settingsValidator = new SettingsValidator(); Assert.False(settingsValidator.Validate(settings).IsValid); }
public void validation_should_pass_for_minimal_arguments() { // Arrange var settings = new Settings { InputDir = "C:\\", OutputDir = "C:\\", Width = 120 }; var target = new SettingsValidator(settings); // Act var result = target.Validate(); // Assert Assert.NotNull(result); Assert.Equal(0, result.ErrorMessages.Count); }
public void validation_should_pass_for_encrypt_option_input_filename_and_password() { // Arrange var settings = new Settings { EncryptAction = EncryptAction.Encrypt, InputFileName = "test", Password = "******" }; var target = new SettingsValidator(); // Act var result = target.Validate(settings); // Assert Assert.NotNull(result); Assert.Equal(0, result.Count); }
public void validation_should_fail_for_filename_which_does_not_follow_convention() { // Arrange var settings = new Settings { EncryptAction = EncryptAction.Decrypt, InputFileName = "wrongname", Password = "******" }; var target = new SettingsValidator(); // Act var result = target.Validate(settings); // Assert Assert.NotNull(result); Assert.Equal(1, result.Count); }
/// <summary> /// Send an Email to the customer when he/she is new /// </summary> private async void SendEmail(object arg) { bool again = false; do { try { SettingsValidator sv = new SettingsValidator(); var result = sv.Validate(settings); if (!result.IsValid) { throw new InvalidOperationException(result.Errors[0].ErrorMessage); } if (IsValid()) { view.Loading(true); view.Message("Enviando correo..."); IMailBuilder mailBuilder = new WelcomeMailBuilder(settings.Email, ViewModel.Customer.Email, ViewModel.Customer.Password); await Task.Run(() => ServiceLocator.Default.GetService <MailingService>().Send(mailBuilder.BuildMessage(), settings.EmailPwd)); view.Message("Correo enviado"); } else { view.Message("Ingrese los datos faltantes del cliente"); } } catch (Exception ex) { again = DialogResult.Yes == view.Message("Error de servicio", $"{ex.Message}{Environment.NewLine}¿Reintentar?", MessageBoxButtons.YesNo, MessageBoxIcon.Error); } finally { view.Message(string.Empty); view.Loading(false); } } while (again); }
public void Execute() { SettingsValidator.Validate(); var directory = SettingsEvaluator.GetApTwoDirectory(); var files = DirectoryDescendentFilesEvaluator.Evaluate(directory).OrderBy(x => x).ToList(); var loop = true; while (loop) { Ux.WriteLine(string.Format("Analysing: {0}", directory)); Ux.AddOption("Exit", () => loop = false); Ux.AddOptionWithHeadingSpace("View all file extensions", () => FileExtensionPresenter.Present(files)); Ux.AddOption("View all files", () => ListPresenter.Present(files)); Ux.AddOption("View filtered extensions", () => FilteredFilesPresenter.PresentFilteredExtensions()); Ux.AddOption("View filtered files", () => FilteredFilesPresenter.PresentFilteredFiles(files)); Ux.AddOption("View filtered file statistics", () => FilteredFilesStatsPresenter.Present(files)); Ux.AddOptionWithHeadingSpace("Count inline CSS on filtered files", () => { var results = CssStatsPresenter.Present(FilteredFilesEvaluator.Evaluate(files)); Ux.DisplayBoolOption("Store detailed CSS results to disk?", () => CssStatsStorageService.Store(results, string.Empty), null); }); Ux.AddOptionWithHeadingSpace("Count inline Javascript on filtered files", () => { var results = JavaScriptStatsPresenter.Present(FilteredFilesEvaluator.Evaluate(files)); Ux.DisplayBoolOption("Store detailed JavaScript results to disk?", () => JavaScriptStatsStorageService.Store(results, string.Empty), null); }); Ux.AddOptionWithHeadingSpace("Count inline Javascript and CSS on specific file...", () => JavaScriptFileStatsPresenter.Present()); Ux.DisplayOptions("Please choose an option"); } }