🥕[Bug]: Dab validation issues
When I run dab validate.
The purpose of validate is help the developer find and fix configuration errors.
Inconsistent output
c:\Temp\demo>dab validate -c dab-config.json
Information: Microsoft.DataApiBuilder 1.3.19
Information: User provided config file: dab-config.json
Information: Validating config file: dab-config.json
Loading config file from c:\Temp\demo\dab-config.json.
Information: The config satisfies the schema requirements.
Information: Validating entity relationships.
Information: [Actor] REST path: /api//Actor
Information: [Character] REST path: /api//Character
Information: Config is valid.
Problem
Loading config file from c:\Temp\demo\dab-config.json.
Incorrect output: Loading config file from c:\Temp\demo\dab-config.json.
Correct output: Information: Loading config file from c:\Temp\demo\dab-config.json.
Assuming this is not using the same logging mechanism and should.
Invalid output
c:\Temp\demo>dab validate -c dab-config.json
Information: Microsoft.DataApiBuilder 1.3.19
Information: User provided config file: dab-config.json
Information: Validating config file: dab-config.json
Loading config file from c:\Temp\demo\dab-config.json.
Information: The config satisfies the schema requirements.
Information: Validating entity relationships.
Information: [Actor] REST path: /api//Actor
Information: [Character] REST path: /api//Character
Information: Config is valid.
Problem
Information: [Actor] REST path: /api//Actor
Information: [Character] REST path: /api//Character
Incorrect path: /api//Actor (double slash)
Correct path: /api/Actor
Misleading output
c:\Temp\demo>dab validate -c dab-config.json
Information: Microsoft.DataApiBuilder 1.3.19
Information: User provided config file: dab-config.json
Information: Validating config file: dab-config.json
Loading config file from c:\Temp\demo\dab-config.json.
Deserialization of the configuration file failed during a post-processing step.
Message:
A valid Connection String should be provided.
Stack Trace:
at Azure.DataApiBuilder.Config.RuntimeConfigLoader.GetConnectionStringWithApplicationName(String connectionString) in /_/src/Config/RuntimeConfigLoader.cs:line 279
at Azure.DataApiBuilder.Config.RuntimeConfigLoader.TryParseConfig(String json, RuntimeConfig& config, ILogger logger, String connectionString, Boolean replaceEnvVar, EnvironmentVariableReplacementFailureMode replacementFailureMode) in /_/src/Config/RuntimeConfigLoader.cs:line 173
Information: Failed to parse the config file
Error: Config is invalid. Check above logs for details.
Problem
Loading config file from c:\Temp\demo\dab-config.json.
Deserialization of the configuration file failed during a post-processing step.
Message: Deserialization of the configuration file failed during a post-processing step.
This configuration deserialized fine. This message is an error. The connection string was simply invalid.
Misleading output
c:\Temp\demo>dab validate -c dab-config.json
Information: Microsoft.DataApiBuilder 1.3.19
Information: User provided config file: dab-config.json
Information: Validating config file: dab-config.json
Loading config file from c:\Temp\demo\dab-config.json.
Deserialization of the configuration file failed.
Message:
The value mssqal is not a valid enum value of Azure.DataApiBuilder.Config.ObjectModel.DatabaseType
Stack Trace:
at Azure.DataApiBuilder.Config.Converters.EnumMemberJsonEnumConverterFactory.JsonStringEnumConverterEx`1.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) in /_/src/Config/Converters/EnumMemberJsonEnumConverterFactory.cs:line 129
at Azure.DataApiBuilder.Config.Converters.EnumExtensions.Deserialize[T](String value) in /_/src/Config/Converters/EnumMemberJsonEnumConverterFactory.cs:line 31
at Azure.DataApiBuilder.Config.Converters.DataSourceConverterFactory.DataSourceConverter.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) in /_/src/Config/Converters/DataSourceConverterFactory.cs:line 63
at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
at System.Text.Json.Serialization.JsonConverter`1.TryReadAsObject(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, Object& value)
at System.Text.Json.Serialization.Converters.LargeObjectWithParameterizedConstructorConverter`1.ReadAndCacheConstructorArgument(ReadStack& state, Utf8JsonReader& reader, JsonParameterInfo jsonParameterInfo)
at System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value)
at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
at System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 utf8Json, JsonTypeInfo`1 jsonTypeInfo, Nullable`1 actualByteCount)
at System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 json, JsonTypeInfo`1 jsonTypeInfo)
at System.Text.Json.JsonSerializer.Deserialize[TValue](String json, JsonSerializerOptions options)
at Azure.DataApiBuilder.Config.RuntimeConfigLoader.TryParseConfig(String json, RuntimeConfig& config, ILogger logger, String connectionString, Boolean replaceEnvVar, EnvironmentVariableReplacementFailureMode replacementFailureMode) in /_/src/Config/RuntimeConfigLoader.cs:line 142
Information: Failed to parse the config file
Error: Config is invalid. Check above logs for details.
Problem
Information: Failed to parse the config file
Error: Config is invalid. Check above logs for details.
Incorrect message: Information: Failed to parse the config file
Correct message: The value mssqal is not a valid enum value
Also
Incorrect message: Information: Failed to parse the config file
Correct message: Error: Failed to parse the config file
Invalid validation
c:\Temp\demo>dab validate -c dab-config.json
Information: Microsoft.DataApiBuilder 1.3.19
Information: User provided config file: dab-config.json
Information: Validating config file: dab-config.json
Loading config file from c:\Temp\demo\dab-config.json.
Information: The config satisfies the schema requirements.
Information: Validating entity relationships.
Information: [Actor] REST path: /api//Character
Information: Config is valid.
Problem
Information: Config is valid.
This configuation has to entities with the identical name. (both called Actor)