From e8e6e437001efe332c5b2cc0348267c3efa348fe Mon Sep 17 00:00:00 2001 From: Zhenbo Xu Date: Wed, 30 Dec 2015 17:26:47 +0800 Subject: [PATCH 1/2] Fix npe when enum name is invalid. --- src/main/java/graphql/schema/GraphQLEnumType.java | 1 + .../groovy/graphql/validation/ValidationUtilTest.groovy | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/graphql/schema/GraphQLEnumType.java b/src/main/java/graphql/schema/GraphQLEnumType.java index ef82173e92..0457c969c4 100644 --- a/src/main/java/graphql/schema/GraphQLEnumType.java +++ b/src/main/java/graphql/schema/GraphQLEnumType.java @@ -33,6 +33,7 @@ public Object coerceLiteral(Object input) { if (!(input instanceof EnumValue)) return null; EnumValue enumValue = (EnumValue) input; GraphQLEnumValueDefinition enumValueDefinition = valueDefinitionMap.get(enumValue.getName()); + if (enumValueDefinition == null) return null; if (enumValueDefinition.getValue() != null) return enumValueDefinition.getValue(); return enumValueDefinition.getValue(); } diff --git a/src/test/groovy/graphql/validation/ValidationUtilTest.groovy b/src/test/groovy/graphql/validation/ValidationUtilTest.groovy index 62ef20fa13..63533a147f 100644 --- a/src/test/groovy/graphql/validation/ValidationUtilTest.groovy +++ b/src/test/groovy/graphql/validation/ValidationUtilTest.groovy @@ -98,13 +98,20 @@ class ValidationUtilTest extends Specification { validationUtil.isValidLiteralValue(new EnumValue("PLUTO"), enumType) } - def "invalid enum"() { + def "invalid enum value"() { given: def enumType = GraphQLEnumType.newEnum().name("enumType").value("PLUTO").build() expect: !validationUtil.isValidLiteralValue(new StringValue("MARS"), enumType) } + def "invalid enum name"() { + given: + def enumType = GraphQLEnumType.newEnum().name("enumType").value("PLUTO").build() + expect: + !validationUtil.isValidLiteralValue(new EnumValue("MARS"), enumType) + } + def "a valid ObjectValue"() { given: def inputObjectType = GraphQLInputObjectType.newInputObject() From 67981cb4b4edcd5919f2cc986d3107e0eec6ae76 Mon Sep 17 00:00:00 2001 From: Zhenbo Xu Date: Wed, 30 Dec 2015 17:27:05 +0800 Subject: [PATCH 2/2] Fix npe when input object field has a wrong name. --- src/main/java/graphql/validation/TraversalContext.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/graphql/validation/TraversalContext.java b/src/main/java/graphql/validation/TraversalContext.java index dce6470131..489b28b302 100644 --- a/src/main/java/graphql/validation/TraversalContext.java +++ b/src/main/java/graphql/validation/TraversalContext.java @@ -127,7 +127,8 @@ private void enterImpl(ObjectField objectField) { GraphQLInputType inputType = null; if (objectType instanceof GraphQLInputObjectType) { GraphQLInputObjectField inputField = ((GraphQLInputObjectType) objectType).getField(objectField.getName()); - inputType = inputField.getType(); + if (inputField != null) + inputType = inputField.getType(); } addInputType(inputType); }