From ef9b74b78c7f8c0f67b09a45dfcf3f9cf7dce152 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Wed, 21 Jun 2023 16:00:35 +0530 Subject: [PATCH 1/9] fix init command with environment variable --- src/Cli.Tests/ConfigGeneratorTests.cs | 103 ++++++++++++++++++++++++++ src/Cli.Tests/TestHelper.cs | 17 +++++ src/Cli/ConfigGenerator.cs | 23 ++++-- src/Config/RuntimeConfigPath.cs | 5 ++ 4 files changed, 142 insertions(+), 6 deletions(-) create mode 100644 src/Cli.Tests/ConfigGeneratorTests.cs diff --git a/src/Cli.Tests/ConfigGeneratorTests.cs b/src/Cli.Tests/ConfigGeneratorTests.cs new file mode 100644 index 0000000000..3e13eedc59 --- /dev/null +++ b/src/Cli.Tests/ConfigGeneratorTests.cs @@ -0,0 +1,103 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +namespace Cli.Tests; + +/// +/// Config Generation Tests for CLI. +/// +[TestClass] +public class ConfigGeneratorTests +{ + /// + /// Setup the logger for CLI + /// + [ClassInitialize] + public static void Setup(TestContext context) + { + TestHelper.SetupTestLoggerForCLI(); + } + + /// + /// Tests that user provided config file is successfully generated when that file is not already present. + /// + [DataTestMethod] + [DataRow(true, false, DisplayName = "Failed to generate config file when user provided config file is present.")] + [DataRow(false, true, DisplayName = "Successfully generated config file when user provided config file is not present.")] + public void TryGenerateConfig_WithUserProvidedConfig( + bool isConfigFilePresentAlready, + bool isConfigGenerationSuccessful) + { + HandleConfigFileCreationAndDeletion(TEST_RUNTIME_CONFIG_FILE, isConfigFilePresentAlready); + Assert.AreEqual(isConfigFilePresentAlready, File.Exists(TEST_RUNTIME_CONFIG_FILE)); + + InitOptions options = CreateBasicInitOptionsForMsSql(config: TEST_RUNTIME_CONFIG_FILE); + + Assert.AreEqual(isConfigGenerationSuccessful, ConfigGenerator.TryGenerateConfig(options)); + + if (!isConfigFilePresentAlready) + { + Assert.AreEqual(isConfigGenerationSuccessful, File.Exists(TEST_RUNTIME_CONFIG_FILE)); + } + } + + /// + /// Tests that environment config file is successfully generated when that file is not already present. + /// When environment variable is not set, it should generate the default config file. + /// + [DataTestMethod] + [DataRow(true, false, "Test", "dab-config.Test.json", DisplayName = "Failed to generate the config file when environment config file is present.")] + [DataRow(false, true, "Test", "dab-config.Test.json", DisplayName = "Successfully generated the config file when environment config file is not present.")] + [DataRow(false, true, "", "dab-config.json", DisplayName = "Successfully generated the config file when environment config file is not present and environment variable is not set.")] + public void TryGenerateConfig_UsingEnvironmentVariable( + bool isConfigFilePresentAlready, + bool isConfigGenerationSuccessful, + string environmentValue, + string configFileName) + { + Environment.SetEnvironmentVariable(RUNTIME_ENVIRONMENT_VAR_NAME, environmentValue); + HandleConfigFileCreationAndDeletion(configFileName, isConfigFilePresentAlready); + Assert.AreEqual(isConfigFilePresentAlready, File.Exists(configFileName)); + + InitOptions options = CreateBasicInitOptionsForMsSql(); + + Assert.AreEqual(isConfigGenerationSuccessful, ConfigGenerator.TryGenerateConfig(options)); + if (!isConfigFilePresentAlready) + { + Assert.AreEqual(isConfigGenerationSuccessful, File.Exists(configFileName)); + } + } + + /// + /// This method handles the creation and deletion of a configuration file. + /// + private static void HandleConfigFileCreationAndDeletion(string configFilePath, bool configFilePresent) + { + if (File.Exists(configFilePath) && !configFilePresent) + { + File.Delete(configFilePath); + } + else if (!File.Exists(configFilePath) && configFilePresent) + { + File.Create(configFilePath).Dispose(); + } + } + + /// + /// Removes the generated configuration test files + /// to avoid affecting the results of future tests. + /// + [ClassCleanup] + public static void CleanUp() + { + if (File.Exists("dab-config.Test.json")) + { + File.Delete("dab-config.Test.json"); + } + + if (File.Exists("dab-config.json")) + { + File.Delete("dab-config.json"); + } + } +} diff --git a/src/Cli.Tests/TestHelper.cs b/src/Cli.Tests/TestHelper.cs index 3a2e4fdd2b..3559ff2652 100644 --- a/src/Cli.Tests/TestHelper.cs +++ b/src/Cli.Tests/TestHelper.cs @@ -1133,5 +1133,22 @@ public static void SetupTestLoggerForCLI() ConfigGenerator.SetLoggerForCliConfigGenerator(configGeneratorLogger.Object); Utils.SetCliUtilsLogger(utilsLogger.Object); } + + public static InitOptions CreateBasicInitOptionsForMsSql( + string? config = null + ) + { + return new( + databaseType: DatabaseType.mssql, + connectionString: "testconnectionstring", + cosmosNoSqlDatabase: null, + cosmosNoSqlContainer: null, + graphQLSchemaPath: null, + setSessionContext: true, + hostMode: HostModeType.Development, + corsOrigin: new List() { }, + authenticationProvider: EasyAuthType.StaticWebApps.ToString(), + config: config); + } } } diff --git a/src/Cli/ConfigGenerator.cs b/src/Cli/ConfigGenerator.cs index 076c0220a2..64550cfe36 100644 --- a/src/Cli/ConfigGenerator.cs +++ b/src/Cli/ConfigGenerator.cs @@ -32,24 +32,35 @@ public static void SetLoggerForCliConfigGenerator( /// public static bool TryGenerateConfig(InitOptions options) { - if (!TryGetConfigFileBasedOnCliPrecedence(options.Config, out string runtimeConfigFile)) + string runtimeConfigFile = RuntimeConfigPath.DefaultName; + string? environmentValue = Environment.GetEnvironmentVariable(RuntimeConfigPath.RUNTIME_ENVIRONMENT_VAR_NAME); + if (!string.IsNullOrWhiteSpace(options.Config)) + { + _logger.LogInformation("Generating user provided config file: {configFileName}", options.Config); + runtimeConfigFile = options.Config; + } + else if (!string.IsNullOrWhiteSpace(environmentValue)) + { + _logger.LogInformation("The environment variable {variableName} has a value of {variableValue}", RuntimeConfigPath.RUNTIME_ENVIRONMENT_VAR_NAME, environmentValue); + runtimeConfigFile = RuntimeConfigPath.GetEnvironmentFileName(RuntimeConfigPath.CONFIGFILE_NAME, environmentValue); + _logger.LogInformation("Generating environment config file: {config}", runtimeConfigFile); + } + else { - runtimeConfigFile = RuntimeConfigPath.DefaultName; - _logger.LogInformation($"Creating a new config file: {runtimeConfigFile}"); + _logger.LogInformation("Generating default config file: {config}", runtimeConfigFile); } // File existence checked to avoid overwriting the existing configuration. if (File.Exists(runtimeConfigFile)) { - _logger.LogError($"Config file: {runtimeConfigFile} already exists. " + - "Please provide a different name or remove the existing config file."); + _logger.LogError("Config file: {configFileName} already exists. Please provide a different name or remove the existing config file.", runtimeConfigFile); return false; } // Creating a new json file with runtime configuration if (!TryCreateRuntimeConfig(options, out string runtimeConfigJson)) { - _logger.LogError($"Failed to create the runtime config file."); + _logger.LogError("Failed to create the runtime config file."); return false; } diff --git a/src/Config/RuntimeConfigPath.cs b/src/Config/RuntimeConfigPath.cs index dd16cb22da..13eef9d5ae 100644 --- a/src/Config/RuntimeConfigPath.cs +++ b/src/Config/RuntimeConfigPath.cs @@ -233,6 +233,11 @@ private static string GetOverriddenName(string fileName) return $"{fileName}.overrides{CONFIG_EXTENSION}"; } + public static string GetEnvironmentFileName(string fileName, string environmentValue) + { + return $"{fileName}.{environmentValue}{CONFIG_EXTENSION}"; + } + public static string GetMergedFileNameForEnvironment(string fileName, string environmentValue) { return $"{fileName}.{environmentValue}.merged{CONFIG_EXTENSION}"; From 3751da5d11da3065cc72c2c2df3dfce71a644766 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Thu, 22 Jun 2023 09:25:14 +0530 Subject: [PATCH 2/9] fixing tests --- src/Cli.Tests/EndToEndTests.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Cli.Tests/EndToEndTests.cs b/src/Cli.Tests/EndToEndTests.cs index f9ff03f31b..c02bae03ec 100644 --- a/src/Cli.Tests/EndToEndTests.cs +++ b/src/Cli.Tests/EndToEndTests.cs @@ -18,7 +18,12 @@ public static void Setup(TestContext context) { if (!File.Exists(TEST_SCHEMA_FILE)) { - File.Create(TEST_SCHEMA_FILE); + File.Create(TEST_SCHEMA_FILE).Dispose(); + } + + if (File.Exists(TEST_RUNTIME_CONFIG_FILE)) + { + File.Delete(TEST_RUNTIME_CONFIG_FILE); } TestHelper.SetupTestLoggerForCLI(); From 79d4dc1ba835621b7e294eee5829f2a0cc1e485f Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Thu, 22 Jun 2023 10:16:54 +0530 Subject: [PATCH 3/9] fix formatting --- src/Cli.Tests/ConfigGeneratorTests.cs | 4 ++-- src/Cli.Tests/TestHelper.cs | 29 +++++++++++++++------------ 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/Cli.Tests/ConfigGeneratorTests.cs b/src/Cli.Tests/ConfigGeneratorTests.cs index 3e13eedc59..a01b92cd71 100644 --- a/src/Cli.Tests/ConfigGeneratorTests.cs +++ b/src/Cli.Tests/ConfigGeneratorTests.cs @@ -31,7 +31,7 @@ public void TryGenerateConfig_WithUserProvidedConfig( HandleConfigFileCreationAndDeletion(TEST_RUNTIME_CONFIG_FILE, isConfigFilePresentAlready); Assert.AreEqual(isConfigFilePresentAlready, File.Exists(TEST_RUNTIME_CONFIG_FILE)); - InitOptions options = CreateBasicInitOptionsForMsSql(config: TEST_RUNTIME_CONFIG_FILE); + InitOptions options = CreateBasicInitOptionsForMsSqlWithConfig(config: TEST_RUNTIME_CONFIG_FILE); Assert.AreEqual(isConfigGenerationSuccessful, ConfigGenerator.TryGenerateConfig(options)); @@ -59,7 +59,7 @@ public void TryGenerateConfig_UsingEnvironmentVariable( HandleConfigFileCreationAndDeletion(configFileName, isConfigFilePresentAlready); Assert.AreEqual(isConfigFilePresentAlready, File.Exists(configFileName)); - InitOptions options = CreateBasicInitOptionsForMsSql(); + InitOptions options = CreateBasicInitOptionsForMsSqlWithConfig(); Assert.AreEqual(isConfigGenerationSuccessful, ConfigGenerator.TryGenerateConfig(options)); if (!isConfigFilePresentAlready) diff --git a/src/Cli.Tests/TestHelper.cs b/src/Cli.Tests/TestHelper.cs index 3559ff2652..9ed86adc09 100644 --- a/src/Cli.Tests/TestHelper.cs +++ b/src/Cli.Tests/TestHelper.cs @@ -1134,21 +1134,24 @@ public static void SetupTestLoggerForCLI() Utils.SetCliUtilsLogger(utilsLogger.Object); } - public static InitOptions CreateBasicInitOptionsForMsSql( - string? config = null - ) + /// + /// Creates basic initialization options for MS SQL config. + /// + /// Optional config file name. + /// InitOptions + public static InitOptions CreateBasicInitOptionsForMsSqlWithConfig(string? config = null) { return new( - databaseType: DatabaseType.mssql, - connectionString: "testconnectionstring", - cosmosNoSqlDatabase: null, - cosmosNoSqlContainer: null, - graphQLSchemaPath: null, - setSessionContext: true, - hostMode: HostModeType.Development, - corsOrigin: new List() { }, - authenticationProvider: EasyAuthType.StaticWebApps.ToString(), - config: config); + databaseType: DatabaseType.mssql, + connectionString: "testconnectionstring", + cosmosNoSqlDatabase: null, + cosmosNoSqlContainer: null, + graphQLSchemaPath: null, + setSessionContext: true, + hostMode: HostModeType.Development, + corsOrigin: new List(), + authenticationProvider: EasyAuthType.StaticWebApps.ToString(), + config: config); } } } From 7879e1867e9ffac449c942a6d422a6cf50e7028b Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Fri, 7 Jul 2023 12:35:25 +0530 Subject: [PATCH 4/9] removing unnecessary comments --- src/Cli.Tests/TestHelper.cs | 76 ++++++++++--------------------------- 1 file changed, 19 insertions(+), 57 deletions(-) diff --git a/src/Cli.Tests/TestHelper.cs b/src/Cli.Tests/TestHelper.cs index 1ddef7b30f..ea7183976e 100644 --- a/src/Cli.Tests/TestHelper.cs +++ b/src/Cli.Tests/TestHelper.cs @@ -1096,62 +1096,24 @@ public static Process ExecuteDabCommand(string command, string flags) } }"; - // /// - // /// Helper method to create json string for runtime settings - // /// for json comparison in tests. - // /// - // public static string GetDefaultTestRuntimeSettingString( - // HostMode hostModeType = HostMode.Production, - // IEnumerable? corsOrigins = null, - // string authenticationProvider = "StaticWebApps", - // string? audience = null, - // string? issuer = null, - // string? restPath = RestRuntimeOptions.DEFAULT_PATH) - // { - // Dictionary runtimeSettingDict = new(); - // Dictionary defaultGlobalSetting = GetDefaultGlobalSettings( - // hostMode: hostModeType, - // corsOrigin: corsOrigins, - // authenticationProvider: authenticationProvider, - // audience: audience, - // issuer: issuer, - // restPath: restPath); - - // runtimeSettingDict.Add("runtime", defaultGlobalSetting); - - // return JsonSerializer.Serialize(runtimeSettingDict, Utils.GetSerializationOptions()); - // } - - // /// - // /// Helper method to setup Logger factory - // /// for CLI related classes. - // /// - // public static void SetupTestLoggerForCLI() - // { - // Mock> configGeneratorLogger = new(); - // Mock> utilsLogger = new(); - // ConfigGenerator.SetLoggerForCliConfigGenerator(configGeneratorLogger.Object); - // Utils.SetCliUtilsLogger(utilsLogger.Object); - // } - - /// - /// Creates basic initialization options for MS SQL config. - /// - /// Optional config file name. - /// InitOptions - public static InitOptions CreateBasicInitOptionsForMsSqlWithConfig(string? config = null) - { - return new( - databaseType: DatabaseType.MSSQL, - connectionString: "testconnectionstring", - cosmosNoSqlDatabase: null, - cosmosNoSqlContainer: null, - graphQLSchemaPath: null, - setSessionContext: true, - hostMode: HostMode.Development, - corsOrigin: new List(), - authenticationProvider: EasyAuthType.StaticWebApps.ToString(), - config: config); - } + /// + /// Creates basic initialization options for MS SQL config. + /// + /// Optional config file name. + /// InitOptions + public static InitOptions CreateBasicInitOptionsForMsSqlWithConfig(string? config = null) + { + return new( + databaseType: DatabaseType.MSSQL, + connectionString: "testconnectionstring", + cosmosNoSqlDatabase: null, + cosmosNoSqlContainer: null, + graphQLSchemaPath: null, + setSessionContext: true, + hostMode: HostMode.Development, + corsOrigin: new List(), + authenticationProvider: EasyAuthType.StaticWebApps.ToString(), + config: config); + } } } From d9956f223cea29a3254f9f88bf6be03dac364f0d Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Fri, 7 Jul 2023 12:36:02 +0530 Subject: [PATCH 5/9] fix formatting --- src/Cli.Tests/TestHelper.cs | 38 ++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/Cli.Tests/TestHelper.cs b/src/Cli.Tests/TestHelper.cs index ea7183976e..08e8ec7eb6 100644 --- a/src/Cli.Tests/TestHelper.cs +++ b/src/Cli.Tests/TestHelper.cs @@ -1096,24 +1096,24 @@ public static Process ExecuteDabCommand(string command, string flags) } }"; - /// - /// Creates basic initialization options for MS SQL config. - /// - /// Optional config file name. - /// InitOptions - public static InitOptions CreateBasicInitOptionsForMsSqlWithConfig(string? config = null) - { - return new( - databaseType: DatabaseType.MSSQL, - connectionString: "testconnectionstring", - cosmosNoSqlDatabase: null, - cosmosNoSqlContainer: null, - graphQLSchemaPath: null, - setSessionContext: true, - hostMode: HostMode.Development, - corsOrigin: new List(), - authenticationProvider: EasyAuthType.StaticWebApps.ToString(), - config: config); - } + /// + /// Creates basic initialization options for MS SQL config. + /// + /// Optional config file name. + /// InitOptions + public static InitOptions CreateBasicInitOptionsForMsSqlWithConfig(string? config = null) + { + return new( + databaseType: DatabaseType.MSSQL, + connectionString: "testconnectionstring", + cosmosNoSqlDatabase: null, + cosmosNoSqlContainer: null, + graphQLSchemaPath: null, + setSessionContext: true, + hostMode: HostMode.Development, + corsOrigin: new List(), + authenticationProvider: EasyAuthType.StaticWebApps.ToString(), + config: config); + } } } From 3125e3a9f8fbd16bb908deb454f9a974bbd917a2 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Fri, 7 Jul 2023 19:01:22 +0530 Subject: [PATCH 6/9] improving tests --- src/Cli.Tests/ConfigGeneratorTests.cs | 58 ++++++++++++++++++++++----- src/Cli/ConfigGenerator.cs | 10 ++--- src/Config/RuntimeConfigLoader.cs | 5 ++- 3 files changed, 56 insertions(+), 17 deletions(-) diff --git a/src/Cli.Tests/ConfigGeneratorTests.cs b/src/Cli.Tests/ConfigGeneratorTests.cs index 526c81feee..2ac1af8390 100644 --- a/src/Cli.Tests/ConfigGeneratorTests.cs +++ b/src/Cli.Tests/ConfigGeneratorTests.cs @@ -39,20 +39,38 @@ public void TestCleanup() [DataRow(true, false, DisplayName = "Failed to generate config file when user provided config file is present.")] [DataRow(false, true, DisplayName = "Successfully generated config file when user provided config file is not present.")] public void TryGenerateConfig_WithUserProvidedConfig( - bool isConfigFilePresentAlready, + bool isConfigFilePresent, bool isConfigGenerationSuccessful) { - HandleConfigFileCreationAndDeletion(TEST_RUNTIME_CONFIG_FILE, isConfigFilePresentAlready); - Assert.AreEqual(isConfigFilePresentAlready, _fileSystem!.File.Exists(TEST_RUNTIME_CONFIG_FILE)); + HandleConfigFileCreationAndDeletion(TEST_RUNTIME_CONFIG_FILE, isConfigFilePresent); + Assert.AreEqual(isConfigFilePresent, _fileSystem!.File.Exists(TEST_RUNTIME_CONFIG_FILE)); InitOptions options = CreateBasicInitOptionsForMsSqlWithConfig(config: TEST_RUNTIME_CONFIG_FILE); + // Mocking logger to assert on logs + Mock> loggerMock = new Mock>(); + ConfigGenerator.SetLoggerForCliConfigGenerator(loggerMock.Object); + Assert.AreEqual(isConfigGenerationSuccessful, ConfigGenerator.TryGenerateConfig(options, _runtimeConfigLoader!, _fileSystem!)); - if (!isConfigFilePresentAlready) + if (!isConfigFilePresent) { Assert.AreEqual(isConfigGenerationSuccessful, _fileSystem!.File.Exists(TEST_RUNTIME_CONFIG_FILE)); } + else + { + // Assert on the log message to verify the failure + loggerMock.Verify( + x => x.Log( + LogLevel.Error, + It.IsAny(), + It.Is((o, t) => o.ToString()!.Contains($"{TEST_RUNTIME_CONFIG_FILE} already exists.")), + It.IsAny(), + (Func)It.IsAny() + ), + Times.Once + ); + } } /// @@ -62,24 +80,43 @@ public void TryGenerateConfig_WithUserProvidedConfig( [DataTestMethod] [DataRow(true, false, "Test", "dab-config.Test.json", DisplayName = "Failed to generate the config file when environment config file is present.")] [DataRow(false, true, "Test", "dab-config.Test.json", DisplayName = "Successfully generated the config file when environment config file is not present.")] - [DataRow(false, true, "", "dab-config.json", DisplayName = "Successfully generated the config file when environment config file is not present and environment variable is not set.")] + [DataRow(false, true, "", "dab-config.json", DisplayName = "Successfully generated the config file when environment config file is not present and environment variable is set as empty.")] + [DataRow(false, true, null, "dab-config.json", DisplayName = "Successfully generated the config file when environment config file is not present and environment variable is not set.")] public void TryGenerateConfig_UsingEnvironmentVariable( - bool isConfigFilePresentAlready, + bool isConfigFilePresent, bool isConfigGenerationSuccessful, - string environmentValue, + string? environmentValue, string configFileName) { Environment.SetEnvironmentVariable(RUNTIME_ENVIRONMENT_VAR_NAME, environmentValue); - HandleConfigFileCreationAndDeletion(configFileName, isConfigFilePresentAlready); - Assert.AreEqual(isConfigFilePresentAlready, _fileSystem!.File.Exists(configFileName)); + HandleConfigFileCreationAndDeletion(configFileName, isConfigFilePresent); + Assert.AreEqual(isConfigFilePresent, _fileSystem!.File.Exists(configFileName)); InitOptions options = CreateBasicInitOptionsForMsSqlWithConfig(); + // Mocking logger to assert on logs + Mock> loggerMock = new Mock>(); + ConfigGenerator.SetLoggerForCliConfigGenerator(loggerMock.Object); + Assert.AreEqual(isConfigGenerationSuccessful, ConfigGenerator.TryGenerateConfig(options, _runtimeConfigLoader!, _fileSystem!)); - if (!isConfigFilePresentAlready) + if (!isConfigFilePresent) { Assert.AreEqual(isConfigGenerationSuccessful, _fileSystem!.File.Exists(configFileName)); } + else + { + // Assert on the log message to verify the failure + loggerMock.Verify( + x => x.Log( + LogLevel.Error, + It.IsAny(), + It.Is((o, t) => o.ToString()!.Contains($"{configFileName} already exists.")), + It.IsAny(), + (Func)It.IsAny() + ), + Times.Once + ); + } } /// @@ -90,7 +127,6 @@ private void HandleConfigFileCreationAndDeletion(string configFilePath, bool con if (!configFilePresent) { _fileSystem!.File.Delete(configFilePath); - // File.Delete(configFilePath); } else if (configFilePresent) { diff --git a/src/Cli/ConfigGenerator.cs b/src/Cli/ConfigGenerator.cs index d5d92fde94..47af5b4504 100644 --- a/src/Cli/ConfigGenerator.cs +++ b/src/Cli/ConfigGenerator.cs @@ -40,31 +40,31 @@ public static bool TryGenerateConfig(InitOptions options, RuntimeConfigLoader lo string? environmentValue = Environment.GetEnvironmentVariable(RuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME); if (!string.IsNullOrWhiteSpace(options.Config)) { - _logger.LogInformation("Generating user provided config file: {configFileName}", options.Config); + _logger.LogInformation("Generating user provided config file with name: {configFileName}", options.Config); runtimeConfigFile = options.Config; } else if (!string.IsNullOrWhiteSpace(environmentValue)) { _logger.LogInformation("The environment variable {variableName} has a value of {variableValue}", RuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME, environmentValue); runtimeConfigFile = RuntimeConfigLoader.GetEnvironmentFileName(RuntimeConfigLoader.CONFIGFILE_NAME, environmentValue); - _logger.LogInformation("Generating environment config file: {config}", runtimeConfigFile); + _logger.LogInformation("Generating environment config file: {configPath}", Path.GetFullPath(runtimeConfigFile)); } else { - _logger.LogInformation("Generating default config file: {config}", runtimeConfigFile); + _logger.LogInformation("Generating default config file: {config}", Path.GetFullPath(runtimeConfigFile)); } // File existence checked to avoid overwriting the existing configuration. if (fileSystem.File.Exists(runtimeConfigFile)) { - _logger.LogError("Config file: {runtimeConfigFile} already exists. Please provide a different name or remove the existing config file.", runtimeConfigFile); + _logger.LogError("Config file: {runtimeConfigFile} already exists. Please provide a different name or remove the existing config file.", + Path.GetFullPath(runtimeConfigFile)); return false; } // Creating a new json file with runtime configuration if (!TryCreateRuntimeConfig(options, loader, fileSystem, out RuntimeConfig? runtimeConfig)) { - _logger.LogError("Failed to create the runtime config file."); return false; } diff --git a/src/Config/RuntimeConfigLoader.cs b/src/Config/RuntimeConfigLoader.cs index 8d9b4f48fe..5444ce9a34 100644 --- a/src/Config/RuntimeConfigLoader.cs +++ b/src/Config/RuntimeConfigLoader.cs @@ -230,7 +230,10 @@ private static string GetOverriddenName(string fileName) return $"{fileName}.overrides{CONFIG_EXTENSION}"; } - // File name should not contain extension + /// + /// Generates the name of the file based on environment value. + /// NOTE: Input File name should not contain extension + /// public static string GetEnvironmentFileName(string fileName, string environmentValue) { return $"{fileName}.{environmentValue}{CONFIG_EXTENSION}"; From d2341eaa5dc45da0c61c8978f646eca87adde32d Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Fri, 7 Jul 2023 19:12:15 +0530 Subject: [PATCH 7/9] fix formatting --- src/Cli.Tests/ConfigGeneratorTests.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Cli.Tests/ConfigGeneratorTests.cs b/src/Cli.Tests/ConfigGeneratorTests.cs index 2ac1af8390..7adddcd4fd 100644 --- a/src/Cli.Tests/ConfigGeneratorTests.cs +++ b/src/Cli.Tests/ConfigGeneratorTests.cs @@ -48,7 +48,7 @@ public void TryGenerateConfig_WithUserProvidedConfig( InitOptions options = CreateBasicInitOptionsForMsSqlWithConfig(config: TEST_RUNTIME_CONFIG_FILE); // Mocking logger to assert on logs - Mock> loggerMock = new Mock>(); + Mock> loggerMock = new(); ConfigGenerator.SetLoggerForCliConfigGenerator(loggerMock.Object); Assert.AreEqual(isConfigGenerationSuccessful, ConfigGenerator.TryGenerateConfig(options, _runtimeConfigLoader!, _fileSystem!)); @@ -65,8 +65,8 @@ public void TryGenerateConfig_WithUserProvidedConfig( LogLevel.Error, It.IsAny(), It.Is((o, t) => o.ToString()!.Contains($"{TEST_RUNTIME_CONFIG_FILE} already exists.")), - It.IsAny(), - (Func)It.IsAny() + It.IsAny(), + (Func)It.IsAny() ), Times.Once ); @@ -95,7 +95,7 @@ public void TryGenerateConfig_UsingEnvironmentVariable( InitOptions options = CreateBasicInitOptionsForMsSqlWithConfig(); // Mocking logger to assert on logs - Mock> loggerMock = new Mock>(); + Mock> loggerMock = new(); ConfigGenerator.SetLoggerForCliConfigGenerator(loggerMock.Object); Assert.AreEqual(isConfigGenerationSuccessful, ConfigGenerator.TryGenerateConfig(options, _runtimeConfigLoader!, _fileSystem!)); @@ -111,8 +111,8 @@ public void TryGenerateConfig_UsingEnvironmentVariable( LogLevel.Error, It.IsAny(), It.Is((o, t) => o.ToString()!.Contains($"{configFileName} already exists.")), - It.IsAny(), - (Func)It.IsAny() + It.IsAny(), + (Func)It.IsAny() ), Times.Once ); From e5a3260c3d8ae3c89a8594fa5a65bea79bd191a5 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Sun, 9 Jul 2023 16:50:39 +0530 Subject: [PATCH 8/9] fix formatting --- src/Cli/ConfigGenerator.cs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/Cli/ConfigGenerator.cs b/src/Cli/ConfigGenerator.cs index 47af5b4504..e7dfb8a18b 100644 --- a/src/Cli/ConfigGenerator.cs +++ b/src/Cli/ConfigGenerator.cs @@ -37,21 +37,24 @@ public static void SetLoggerForCliConfigGenerator( public static bool TryGenerateConfig(InitOptions options, RuntimeConfigLoader loader, IFileSystem fileSystem) { string runtimeConfigFile = RuntimeConfigLoader.DEFAULT_CONFIG_FILE_NAME; - string? environmentValue = Environment.GetEnvironmentVariable(RuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME); if (!string.IsNullOrWhiteSpace(options.Config)) { _logger.LogInformation("Generating user provided config file with name: {configFileName}", options.Config); runtimeConfigFile = options.Config; } - else if (!string.IsNullOrWhiteSpace(environmentValue)) - { - _logger.LogInformation("The environment variable {variableName} has a value of {variableValue}", RuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME, environmentValue); - runtimeConfigFile = RuntimeConfigLoader.GetEnvironmentFileName(RuntimeConfigLoader.CONFIGFILE_NAME, environmentValue); - _logger.LogInformation("Generating environment config file: {configPath}", Path.GetFullPath(runtimeConfigFile)); - } else { - _logger.LogInformation("Generating default config file: {config}", Path.GetFullPath(runtimeConfigFile)); + string? environmentValue = Environment.GetEnvironmentVariable(RuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME); + if (!string.IsNullOrWhiteSpace(environmentValue)) + { + _logger.LogInformation("The environment variable {variableName} has a value of {variableValue}", RuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME, environmentValue); + runtimeConfigFile = RuntimeConfigLoader.GetEnvironmentFileName(RuntimeConfigLoader.CONFIGFILE_NAME, environmentValue); + _logger.LogInformation("Generating environment config file: {configPath}", Path.GetFullPath(runtimeConfigFile)); + } + else + { + _logger.LogInformation("Generating default config file: {config}", Path.GetFullPath(runtimeConfigFile)); + } } // File existence checked to avoid overwriting the existing configuration. From 1747af358ed7b5d5f27ffd9b1f463b361c3c7a18 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Mon, 10 Jul 2023 12:25:07 +0530 Subject: [PATCH 9/9] using right file system --- src/Cli/ConfigGenerator.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Cli/ConfigGenerator.cs b/src/Cli/ConfigGenerator.cs index e7dfb8a18b..10bee0cedd 100644 --- a/src/Cli/ConfigGenerator.cs +++ b/src/Cli/ConfigGenerator.cs @@ -49,11 +49,11 @@ public static bool TryGenerateConfig(InitOptions options, RuntimeConfigLoader lo { _logger.LogInformation("The environment variable {variableName} has a value of {variableValue}", RuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME, environmentValue); runtimeConfigFile = RuntimeConfigLoader.GetEnvironmentFileName(RuntimeConfigLoader.CONFIGFILE_NAME, environmentValue); - _logger.LogInformation("Generating environment config file: {configPath}", Path.GetFullPath(runtimeConfigFile)); + _logger.LogInformation("Generating environment config file: {configPath}", fileSystem.Path.GetFullPath(runtimeConfigFile)); } else { - _logger.LogInformation("Generating default config file: {config}", Path.GetFullPath(runtimeConfigFile)); + _logger.LogInformation("Generating default config file: {config}", fileSystem.Path.GetFullPath(runtimeConfigFile)); } } @@ -61,7 +61,7 @@ public static bool TryGenerateConfig(InitOptions options, RuntimeConfigLoader lo if (fileSystem.File.Exists(runtimeConfigFile)) { _logger.LogError("Config file: {runtimeConfigFile} already exists. Please provide a different name or remove the existing config file.", - Path.GetFullPath(runtimeConfigFile)); + fileSystem.Path.GetFullPath(runtimeConfigFile)); return false; }