Skip to content

[Bug]: StoredProcedureBuilderTests assume locale of en-US, and may cause problems with how we handle DateTime in stored procedure parameters #1469

Open
@aaronpowell

Description

@aaronpowell

What happened?

I was running the test suite of StoredProcedure_ParameterValueTypeResolution and had the three DateTime/DateTimeOffset tests:

https://github.com/Azure/data-api-builder/blob/main/src/Service.Tests/GraphQLBuilder/Sql/StoredProcedureBuilderTests.cs#L53-L55

The error is that it failed to parse the default value:

Assert.IsTrue failed. Failure: Did not expect error during stored procedure field creation: The parameter value 11/19/2012 10:57:11 AM -08:00 provided in configuration cannot be converted to the type DateTime

The reason this fails is that my machine locale is en-AU, whereas the date format in the test is en-US (denoted by MM/dd). As a result, these tests will never pass on my machine because of the locale set, unless I change my machine locale.

While failing unit tests is an annoyance, it's survivable as they pass on the build server, it highlights a potentially larger problem in a production environment - DateTime stored procedure params may fail due to locale assumptions.

We should probably clearly document that the default value should be in the same format as the locale of the DAB host (which is more difficult to know in the SWA hosted version) or state that we only support a known format, such as ISO 8601, and update the parser to have that explicitly set.

Version

N/A

What database are you using?

Azure SQL

What hosting model are you using?

Local (including CLI)

Which API approach are you accessing DAB through?

GraphQL

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinggraphqlmssql pgsql mysqlan issue that applies to all relational databases, same as labeling with `mssql` `mysql` and `pgsql`testingTest related issue.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions