overblog / GraphQLBundle

This bundle provides tools to build a complete GraphQL API server in your Symfony App.
MIT License
783 stars 221 forks source link

Multi level Input-object validation issue #1168

Open morkers opened 6 months ago

morkers commented 6 months ago
Q A
Bug report? yes
Feature request? no
BC Break report? no
RFC? no
Version/Branch 0.13.7

There seems to be an issue validating array of input-objects.

Having a simple mutation:

Mutation:
    type: object
    config:
        fields:
            testMutation:
                type: Boolean
                resolve: "@=mutation('testMutation', [args])"
                args:
                    fields:
                        type: '[TestInput]'
                        validation: cascade
TestInput:
    type: input-object
    config:
        fields:
            subField:
                type: SubTestInput
                validation: cascade

SubTestInput:
    type: input-object
    config:
        fields:
            price:
                type: Float
                validation:
                    -  Positive: ~

Then sending mutation i don't get the error i expect. The first SubTestInput is not validated.

mutation{
    testMutation(fields: [
        {
            subField: {
                price: -1
            }
        },
        {
        }
    ])
}

As the second/last TestInput does not have SubTestInput defined, validation metadata is overriden with metadata that doesn't have any constraints registered and validation for first SubTestInput is not done.

Vincz commented 6 months ago

I'm not familiar with the validator component. Maybe @murtukov can look into it?