data-api-builder icon indicating copy to clipboard operation
data-api-builder copied to clipboard

🥕[Bug]: Dab validation issues

Open JerryNixon opened this issue 11 months ago • 0 comments

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)

JerryNixon avatar Jan 24 '25 01:01 JerryNixon