From d41e2b6fa9458e2d61dbfee7a9d92998b582ff8a Mon Sep 17 00:00:00 2001 From: Ivan Goncharov Date: Fri, 1 Oct 2021 12:28:11 +0300 Subject: [PATCH] VariablesAreInputTypesRule: add test for ignoring unknown types Fixes #3282 --- src/validation/__tests__/KnownTypeNamesRule-test.ts | 4 ++-- .../__tests__/VariablesAreInputTypesRule-test.ts | 8 ++++++++ src/validation/rules/VariablesAreInputTypesRule.ts | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/validation/__tests__/KnownTypeNamesRule-test.ts b/src/validation/__tests__/KnownTypeNamesRule-test.ts index f56ef4ceab..b271fe7af3 100644 --- a/src/validation/__tests__/KnownTypeNamesRule-test.ts +++ b/src/validation/__tests__/KnownTypeNamesRule-test.ts @@ -53,7 +53,7 @@ describe('Validate: Known type names', () => { it('unknown type names are invalid', () => { expectErrors(` - query Foo($var: JumbledUpLetters) { + query Foo($var: [JumbledUpLetters!]!) { user(id: 4) { name pets { ... on Badger { name }, ...PetFields } @@ -65,7 +65,7 @@ describe('Validate: Known type names', () => { `).to.deep.equal([ { message: 'Unknown type "JumbledUpLetters".', - locations: [{ line: 2, column: 23 }], + locations: [{ line: 2, column: 24 }], }, { message: 'Unknown type "Badger".', diff --git a/src/validation/__tests__/VariablesAreInputTypesRule-test.ts b/src/validation/__tests__/VariablesAreInputTypesRule-test.ts index 5a19fca650..9e4e673b5b 100644 --- a/src/validation/__tests__/VariablesAreInputTypesRule-test.ts +++ b/src/validation/__tests__/VariablesAreInputTypesRule-test.ts @@ -13,6 +13,14 @@ function expectValid(queryStr: string) { } describe('Validate: Variables are input types', () => { + it('unknown types are ignored', () => { + expectValid(` + query Foo($a: Unknown, $b: [[Unknown!]]!) { + field(a: $a, b: $b) + } + `); + }); + it('input types are valid', () => { expectValid(` query Foo($a: String, $b: [Boolean!]!, $c: ComplexInput) { diff --git a/src/validation/rules/VariablesAreInputTypesRule.ts b/src/validation/rules/VariablesAreInputTypesRule.ts index 0dc9daa250..61fce41e8a 100644 --- a/src/validation/rules/VariablesAreInputTypesRule.ts +++ b/src/validation/rules/VariablesAreInputTypesRule.ts @@ -23,7 +23,7 @@ export function VariablesAreInputTypesRule( VariableDefinition(node: VariableDefinitionNode) { const type = typeFromAST(context.getSchema(), node.type); - if (type && !isInputType(type)) { + if (type !== undefined && !isInputType(type)) { const variableName = node.variable.name.value; const typeName = print(node.type);