public void ProcessEnvHigherThanUserConfig() { const string retryKey = "Retry"; const string envName = "ENV_FOR_RETRY"; var config = new SimpleTypedConfig <int>(retryKey, "", -1, envName); var path = Path.GetRandomFileName(); var dataStore = new MockDataStore(); dataStore.WriteFile(path, @"{ ""Az"": { ""Retry"": 100 } }"); var env = new MockEnvironmentVariableProvider(); env.Set(envName, "10", System.EnvironmentVariableTarget.Process); IConfigManager icm = GetConfigManager( new InitSettings() { DataStore = dataStore, Path = path, EnvironmentVariableProvider = env }, config); Assert.Equal(10, icm.GetConfigValue <int>(retryKey)); }
public void ProcessConfigHigherThanProcessEnv() { const string retryKey = "Retry"; const string envName = "ENV_FOR_RETRY"; var config = new SimpleTypedConfig <int>(retryKey, "", -1, envName); var env = new MockEnvironmentVariableProvider(); env.Set(envName, "10", System.EnvironmentVariableTarget.Process); IConfigManager icm = GetConfigManager( new InitSettings() { EnvironmentVariableProvider = env }, config); icm.UpdateConfig(new UpdateConfigOptions(retryKey, 100, ConfigScope.Process)); Assert.Equal(100, icm.GetConfigValue <int>(retryKey)); }
public void ShouldNotThrowWhenEnvVarIsWrong() { const string key = "FromEnv"; const string envKey = "ENV_VAR_FOR_CONFIG"; const int defaultValue = -1; var config = new SimpleTypedConfig <int>(key, "", defaultValue, envKey); const bool valueWithWrongType = true; IEnvironmentVariableProvider env = new MockEnvironmentVariableProvider(); env.Set(envKey, valueWithWrongType.ToString()); var configurationManager = GetConfigManager( new InitSettings() { EnvironmentVariableProvider = env }, config); Assert.Equal(defaultValue, configurationManager.GetConfigValue <int>(key)); }
public void CanGetFromEnvironmentVar() { const string key = "FromEnv"; const string envKey = "ENV_VAR_FOR_CONFIG"; var config = new SimpleTypedConfig <int>(key, "", -1, envKey); const int value = 20; IEnvironmentVariableProvider env = new MockEnvironmentVariableProvider(); env.Set(envKey, value.ToString()); var configurationManager = GetConfigManager( new InitSettings() { EnvironmentVariableProvider = env }, config); Assert.Equal(value, configurationManager.GetConfigValue <int>(key)); }
/// <summary> /// Initializes and returns an <see cref="IConfigManager"/> with the specified configs registered with initial state. /// </summary> /// <param name="configFileWriter">An action to set up the config file before config manager initializes.</param> /// <param name="envVarWriter">An action to set up the environments before config manager initializes.</param> /// <param name="config">Definitions of configs to be registered to the config manager.</param> /// <returns>A config manager with initial state, ready to use.</returns> protected IConfigManager GetConfigManagerWithInitState(Action <MockDataStore, string> configFileWriter, Action <MockEnvironmentVariableProvider> envVarWriter, params ConfigDefinition[] config) { if (configFileWriter == null) { configFileWriter = _noopFileWriter; } if (envVarWriter == null) { envVarWriter = _noopEnvVarWriter; } string configPath = Path.GetRandomFileName(); var mockDataStore = new MockDataStore(); configFileWriter(mockDataStore, configPath); var environmentVariables = new MockEnvironmentVariableProvider(); envVarWriter(environmentVariables); ConfigInitializer ci = new ConfigInitializer(new List <string>() { configPath }) { DataStore = mockDataStore, EnvironmentVariableProvider = environmentVariables }; IConfigManager icm = ci.GetConfigManager(); foreach (var configDefinition in config) { icm.RegisterConfig(configDefinition); } icm.BuildConfig(); return(icm); }