Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add FileSystemRuntimeConfigLoader #1587

Merged
merged 12 commits into from
Jul 18, 2023
10 changes: 5 additions & 5 deletions src/Cli.Tests/AddEntityTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ public void AddDuplicateEntity()
);

string initialConfiguration = AddPropertiesToJson(INITIAL_CONFIG, GetFirstEntityConfiguration());
Assert.IsTrue(RuntimeConfigLoader.TryParseConfig(initialConfiguration, out RuntimeConfig? runtimeConfig), "Loaded config");
Assert.IsTrue(FileSystemRuntimeConfigLoader.TryParseConfig(initialConfiguration, out RuntimeConfig? runtimeConfig), "Loaded config");

Assert.IsFalse(TryAddNewEntity(options, runtimeConfig, out RuntimeConfig updatedRuntimeConfig));

Expand Down Expand Up @@ -276,7 +276,7 @@ public void TestAddNewEntityWithSourceObjectHavingValidFields(
graphQLOperationForStoredProcedure: null
);

RuntimeConfigLoader.TryParseConfig(INITIAL_CONFIG, out RuntimeConfig? runtimeConfig);
FileSystemRuntimeConfigLoader.TryParseConfig(INITIAL_CONFIG, out RuntimeConfig? runtimeConfig);

Assert.AreEqual(expectSuccess, TryAddNewEntity(options, runtimeConfig!, out RuntimeConfig _));
}
Expand Down Expand Up @@ -366,7 +366,7 @@ public void TestAddStoredProcedureWithConflictingRestGraphQLOptions(
graphQLOperationForStoredProcedure: graphQLOperation
);

RuntimeConfigLoader.TryParseConfig(INITIAL_CONFIG, out RuntimeConfig? runtimeConfig);
FileSystemRuntimeConfigLoader.TryParseConfig(INITIAL_CONFIG, out RuntimeConfig? runtimeConfig);

Assert.IsFalse(TryAddNewEntity(options, runtimeConfig!, out RuntimeConfig _));
}
Expand Down Expand Up @@ -402,7 +402,7 @@ public void TestAddEntityPermissionWithInvalidOperation(IEnumerable<string> perm
graphQLOperationForStoredProcedure: null
);

RuntimeConfigLoader.TryParseConfig(INITIAL_CONFIG, out RuntimeConfig? runtimeConfig);
FileSystemRuntimeConfigLoader.TryParseConfig(INITIAL_CONFIG, out RuntimeConfig? runtimeConfig);

Assert.IsFalse(TryAddNewEntity(options, runtimeConfig!, out RuntimeConfig _));
}
Expand All @@ -427,7 +427,7 @@ private static string GetFirstEntityConfiguration()

private Task ExecuteVerifyTest(AddOptions options, string config = INITIAL_CONFIG, VerifySettings? settings = null)
{
Assert.IsTrue(RuntimeConfigLoader.TryParseConfig(config, out RuntimeConfig? runtimeConfig), "Loaded base config.");
Assert.IsTrue(FileSystemRuntimeConfigLoader.TryParseConfig(config, out RuntimeConfig? runtimeConfig), "Loaded base config.");

Assert.IsTrue(TryAddNewEntity(options, runtimeConfig, out RuntimeConfig updatedRuntimeConfig), "Added entity to config.");

Expand Down
4 changes: 2 additions & 2 deletions src/Cli.Tests/ConfigGeneratorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ namespace Cli.Tests;
public class ConfigGeneratorTests
{
private IFileSystem? _fileSystem;
private RuntimeConfigLoader? _runtimeConfigLoader;
private FileSystemRuntimeConfigLoader? _runtimeConfigLoader;

[TestInitialize]
public void TestInitialize()
{
_fileSystem = FileSystemUtils.ProvisionMockFileSystem();

_runtimeConfigLoader = new RuntimeConfigLoader(_fileSystem);
_runtimeConfigLoader = new FileSystemRuntimeConfigLoader(_fileSystem);

ILoggerFactory loggerFactory = TestLoggerSupport.ProvisionLoggerFactory();

Expand Down
4 changes: 2 additions & 2 deletions src/Cli.Tests/EndToEndTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public class EndToEndTests
: VerifyBase
{
private IFileSystem? _fileSystem;
private RuntimeConfigLoader? _runtimeConfigLoader;
private FileSystemRuntimeConfigLoader? _runtimeConfigLoader;
private ILogger<Program>? _cliLogger;

[TestInitialize]
Expand All @@ -26,7 +26,7 @@ public void TestInitialize()

_fileSystem = fileSystem;

_runtimeConfigLoader = new RuntimeConfigLoader(_fileSystem);
_runtimeConfigLoader = new FileSystemRuntimeConfigLoader(_fileSystem);

ILoggerFactory loggerFactory = TestLoggerSupport.ProvisionLoggerFactory();

Expand Down
4 changes: 2 additions & 2 deletions src/Cli.Tests/InitTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@ public class InitTests
: VerifyBase
{
private IFileSystem? _fileSystem;
private RuntimeConfigLoader? _runtimeConfigLoader;
private FileSystemRuntimeConfigLoader? _runtimeConfigLoader;

[TestInitialize]
public void TestInitialize()
{
_fileSystem = FileSystemUtils.ProvisionMockFileSystem();

_runtimeConfigLoader = new RuntimeConfigLoader(_fileSystem);
_runtimeConfigLoader = new FileSystemRuntimeConfigLoader(_fileSystem);

ILoggerFactory loggerFactory = TestLoggerSupport.ProvisionLoggerFactory();

Expand Down
18 changes: 9 additions & 9 deletions src/Cli.Tests/UpdateEntityTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -522,7 +522,7 @@ public Task TestConversionOfSourceObject(
sourceKeyFields: keyFields);

string initialConfig = AddPropertiesToJson(INITIAL_CONFIG, initialSourceObjectEntity);
RuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig);
FileSystemRuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig);
Assert.AreEqual(expectSuccess, TryUpdateExistingEntity(options, runtimeConfig!, out RuntimeConfig updatedConfig));

if (expectSuccess)
Expand Down Expand Up @@ -578,7 +578,7 @@ bool isSuccess
sourceType: "stored-procedure");

string initialConfig = AddPropertiesToJson(INITIAL_CONFIG, SINGLE_ENTITY_WITH_STORED_PROCEDURE);
RuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig);
FileSystemRuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig);

Assert.AreEqual(isSuccess, TryUpdateExistingEntity(options, runtimeConfig!, out RuntimeConfig _));
}
Expand Down Expand Up @@ -644,7 +644,7 @@ public void TestUpdateActionOfStoredProcedureRole()
}
}";

RuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig);
FileSystemRuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig);

Assert.IsFalse(TryUpdateExistingEntity(options, runtimeConfig!, out RuntimeConfig _));
}
Expand Down Expand Up @@ -779,7 +779,7 @@ string graphQLType
graphQLOperationForStoredProcedure: graphQLOperation);

string initialConfig = AddPropertiesToJson(INITIAL_CONFIG, SP_DEFAULT_REST_METHODS_GRAPHQL_OPERATION);
RuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig);
FileSystemRuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig);

Assert.IsFalse(TryUpdateExistingEntity(options, runtimeConfig!, out RuntimeConfig _));
}
Expand Down Expand Up @@ -815,7 +815,7 @@ public void TestUpdateEntityPermissionWithWildcardAndOtherCRUDAction()
}
}";

RuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig);
FileSystemRuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig);

Assert.IsFalse(TryUpdateExistingEntity(options, runtimeConfig!, out RuntimeConfig _));
}
Expand Down Expand Up @@ -851,7 +851,7 @@ public void TestUpdateSourceObjectWithInvalidFields(

string initialConfig = AddPropertiesToJson(INITIAL_CONFIG, SINGLE_ENTITY_WITH_STORED_PROCEDURE);

RuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig);
FileSystemRuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig);

Assert.IsFalse(TryUpdateExistingEntity(options, runtimeConfig!, out RuntimeConfig _));
}
Expand Down Expand Up @@ -920,7 +920,7 @@ public void TestUpdateEntityWithInvalidMappings(string mappings)
}
}";

RuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig);
FileSystemRuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig);

Assert.IsFalse(TryUpdateExistingEntity(options, runtimeConfig!, out RuntimeConfig _));
}
Expand Down Expand Up @@ -958,7 +958,7 @@ public void TestUpdateEntityWithInvalidPermissionAndFields(
}
}
}";
RuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig);
FileSystemRuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig);

Assert.IsFalse(TryUpdateExistingEntity(options, runtimeConfig!, out RuntimeConfig _));
}
Expand Down Expand Up @@ -1125,7 +1125,7 @@ private static UpdateOptions GenerateBaseUpdateOptions(

private Task ExecuteVerifyTest(string initialConfig, UpdateOptions options, VerifySettings? settings = null)
{
Assert.IsTrue(RuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig), "Parsed config file.");
Assert.IsTrue(FileSystemRuntimeConfigLoader.TryParseConfig(initialConfig, out RuntimeConfig? runtimeConfig), "Parsed config file.");

Assert.IsTrue(TryUpdateExistingEntity(options, runtimeConfig, out RuntimeConfig updatedRuntimeConfig), "Successfully added entity to config.");

Expand Down
2 changes: 1 addition & 1 deletion src/Cli.Tests/Usings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
global using Microsoft.VisualStudio.TestTools.UnitTesting;
global using Moq;
global using Newtonsoft.Json.Linq;
global using static Azure.DataApiBuilder.Config.RuntimeConfigLoader;
global using static Azure.DataApiBuilder.Config.FileSystemRuntimeConfigLoader;
global using static Cli.ConfigGenerator;
global using static Cli.Tests.TestHelper;
global using static Cli.Utils;
24 changes: 12 additions & 12 deletions src/Cli.Tests/UtilsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ public void ConstructGraphQLOptionsWithSingularAndPluralWillSetSingularAndPlural
[DataTestMethod]
[DataRow("", "my-config.json", "my-config.json", DisplayName = "user provided the config file and environment variable was not set.")]
[DataRow("Test", "my-config.json", "my-config.json", DisplayName = "user provided the config file and environment variable was set.")]
[DataRow("Test", null, $"{RuntimeConfigLoader.CONFIGFILE_NAME}.Test{RuntimeConfigLoader.CONFIG_EXTENSION}", DisplayName = "config not provided, but environment variable was set.")]
[DataRow("", null, $"{RuntimeConfigLoader.CONFIGFILE_NAME}{RuntimeConfigLoader.CONFIG_EXTENSION}", DisplayName = "neither config was provided, nor environment variable was set.")]
[DataRow("Test", null, $"{FileSystemRuntimeConfigLoader.CONFIGFILE_NAME}.Test{FileSystemRuntimeConfigLoader.CONFIG_EXTENSION}", DisplayName = "config not provided, but environment variable was set.")]
[DataRow("", null, $"{FileSystemRuntimeConfigLoader.CONFIGFILE_NAME}{FileSystemRuntimeConfigLoader.CONFIG_EXTENSION}", DisplayName = "neither config was provided, nor environment variable was set.")]
public void TestConfigSelectionBasedOnCliPrecedence(
string? environmentValue,
string? userProvidedConfigFile,
Expand All @@ -117,13 +117,13 @@ public void TestConfigSelectionBasedOnCliPrecedence(
MockFileSystem fileSystem = new();
fileSystem.AddFile(expectedRuntimeConfigFile, new MockFileData(""));

RuntimeConfigLoader loader = new(fileSystem);
FileSystemRuntimeConfigLoader loader = new(fileSystem);

string? envValueBeforeTest = Environment.GetEnvironmentVariable(RuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME);
Environment.SetEnvironmentVariable(RuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME, environmentValue);
string? envValueBeforeTest = Environment.GetEnvironmentVariable(FileSystemRuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME);
Environment.SetEnvironmentVariable(FileSystemRuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME, environmentValue);
Assert.IsTrue(TryGetConfigFileBasedOnCliPrecedence(loader, userProvidedConfigFile, out string? actualRuntimeConfigFile));
Assert.AreEqual(expectedRuntimeConfigFile, actualRuntimeConfigFile);
Environment.SetEnvironmentVariable(RuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME, envValueBeforeTest);
Environment.SetEnvironmentVariable(FileSystemRuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME, envValueBeforeTest);
}

/// <summary>
Expand Down Expand Up @@ -239,12 +239,12 @@ public void TestValidateAudienceAndIssuerForAuthenticationProvider(
public void TestMergeConfig()
{
MockFileSystem fileSystem = new();
fileSystem.AddFile(RuntimeConfigLoader.DEFAULT_CONFIG_FILE_NAME, new MockFileData(BASE_CONFIG));
fileSystem.AddFile(FileSystemRuntimeConfigLoader.DEFAULT_CONFIG_FILE_NAME, new MockFileData(BASE_CONFIG));
fileSystem.AddFile("dab-config.Test.json", new MockFileData(ENV_BASED_CONFIG));

RuntimeConfigLoader loader = new(fileSystem);
FileSystemRuntimeConfigLoader loader = new(fileSystem);

Environment.SetEnvironmentVariable(RuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME, "Test");
Environment.SetEnvironmentVariable(FileSystemRuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME, "Test");

Assert.IsTrue(Cli.ConfigMerger.TryMergeConfigsIfAvailable(fileSystem, loader, new StringLogger(), out string? mergedConfig), "Failed to merge config files");
Assert.AreEqual(mergedConfig, "dab-config.Test.merged.json");
Expand Down Expand Up @@ -282,7 +282,7 @@ public void TestMergeConfigAvailability(
MockFileSystem fileSystem = new();

// Setting up the test scenarios
Environment.SetEnvironmentVariable(RuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME, environmentValue);
Environment.SetEnvironmentVariable(FileSystemRuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME, environmentValue);
string baseConfig = "dab-config.json";
string envBasedConfig = "dab-config.Test.json";

Expand All @@ -296,15 +296,15 @@ public void TestMergeConfigAvailability(
fileSystem.AddFile(envBasedConfig, new("{}"));
}

RuntimeConfigLoader loader = new(fileSystem);
FileSystemRuntimeConfigLoader loader = new(fileSystem);

Assert.AreEqual(
expectedIsMergedConfigAvailable,
ConfigMerger.TryMergeConfigsIfAvailable(fileSystem, loader, new StringLogger(), out string? mergedConfigFile),
"Availability of merge config should match");
Assert.AreEqual(expectedMergedConfigFileName, mergedConfigFile, "Merge config file name should match expected");

Environment.SetEnvironmentVariable(RuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME, null);
Environment.SetEnvironmentVariable(FileSystemRuntimeConfigLoader.RUNTIME_ENVIRONMENT_VAR_NAME, null);
}
}

2 changes: 1 addition & 1 deletion src/Cli/Commands/AddOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public AddOptions(
[Option("permissions", Required = true, Separator = ':', HelpText = "Permissions required to access the source table or container.")]
public IEnumerable<string> Permissions { get; }

public void Handler(ILogger logger, RuntimeConfigLoader loader, IFileSystem fileSystem)
public void Handler(ILogger logger, FileSystemRuntimeConfigLoader loader, IFileSystem fileSystem)
{
logger.LogInformation($"{PRODUCT_NAME} {ProductInfo.GetProductVersion()}");
if (!IsEntityProvided(Entity, logger, command: "add"))
Expand Down
2 changes: 1 addition & 1 deletion src/Cli/Commands/InitOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ public InitOptions(
[Option("graphql.disabled", Default = false, Required = false, HelpText = "Disables GraphQL endpoint for all entities.")]
public bool GraphQLDisabled { get; }

public void Handler(ILogger logger, RuntimeConfigLoader loader, IFileSystem fileSystem)
public void Handler(ILogger logger, FileSystemRuntimeConfigLoader loader, IFileSystem fileSystem)
{
logger.LogInformation($"{PRODUCT_NAME} {ProductInfo.GetProductVersion()}");
bool isSuccess = ConfigGenerator.TryGenerateConfig(this, loader, fileSystem);
Expand Down
2 changes: 1 addition & 1 deletion src/Cli/Commands/StartOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public StartOptions(bool verbose, LogLevel? logLevel, bool isHttpsRedirectionDis
[Option("no-https-redirect", Required = false, HelpText = "Disables automatic https redirects.")]
public bool IsHttpsRedirectionDisabled { get; }

public void Handler(ILogger logger, RuntimeConfigLoader loader, IFileSystem fileSystem)
public void Handler(ILogger logger, FileSystemRuntimeConfigLoader loader, IFileSystem fileSystem)
{
logger.LogInformation($"{PRODUCT_NAME} {ProductInfo.GetProductVersion()}");
bool isSuccess = ConfigGenerator.TryStartEngineWithOptions(this, loader, fileSystem);
Expand Down
2 changes: 1 addition & 1 deletion src/Cli/Commands/UpdateOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ public UpdateOptions(
[Option('m', "map", Separator = ',', Required = false, HelpText = "Specify mappings between database fields and GraphQL and REST fields. format: --map \"backendName1:exposedName1,backendName2:exposedName2,...\".")]
public IEnumerable<string>? Map { get; }

public void Handler(ILogger logger, RuntimeConfigLoader loader, IFileSystem fileSystem)
public void Handler(ILogger logger, FileSystemRuntimeConfigLoader loader, IFileSystem fileSystem)
{
logger.LogInformation($"{PRODUCT_NAME} {ProductInfo.GetProductVersion()}");
if (!IsEntityProvided(Entity, logger, command: "update"))
Expand Down
Loading