Skip to content

Commit ff68a33

Browse files
committed
Handle invalid enum values
1 parent 7e79d70 commit ff68a33

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

graphene/types/definitions.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,11 @@ def serialize(self, value):
4545
# Try and get enum by value
4646
value = enum(value)
4747
except ValueError:
48-
# Try ang get enum by name
49-
value = enum[value]
48+
# Try and get enum by name
49+
try:
50+
value = enum[value]
51+
except KeyError:
52+
value = None
5053
return super(GrapheneEnumType, self).serialize(value)
5154

5255

graphene/types/tests/test_enum.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,32 @@ def resolve_color_by_name(_, info):
321321
assert results.data["colorByName"] == Color.RED.name
322322

323323

324+
def test_enum_resolver_invalid():
325+
from enum import Enum as PyEnum
326+
327+
class Color(PyEnum):
328+
RED = 1
329+
GREEN = 2
330+
BLUE = 3
331+
332+
GColor = Enum.from_enum(Color)
333+
334+
class Query(ObjectType):
335+
color = GColor(required=True)
336+
337+
def resolve_color(_, info):
338+
return "BLACK"
339+
340+
schema = Schema(query=Query)
341+
342+
results = schema.execute("query { color }")
343+
assert results.errors
344+
assert (
345+
results.errors[0].message
346+
== "Expected a value of type 'Color' but received: 'BLACK'"
347+
)
348+
349+
324350
def test_enum_mutation():
325351
from enum import Enum as PyEnum
326352

0 commit comments

Comments
 (0)