From b105731ada4ef3e148e43feec4549ab2bdac5a61 Mon Sep 17 00:00:00 2001 From: Mateusz Bocian Date: Mon, 2 Oct 2017 17:33:38 -0400 Subject: [PATCH] Patching private variables --- graphene/types/tests/test_objecttype.py | 2 +- graphene/types/tests/test_query.py | 23 +++++++++++++++++++++-- graphene/types/utils.py | 2 ++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/graphene/types/tests/test_objecttype.py b/graphene/types/tests/test_objecttype.py index 5ff972de..c6e1db53 100644 --- a/graphene/types/tests/test_objecttype.py +++ b/graphene/types/tests/test_objecttype.py @@ -65,7 +65,7 @@ def test_generate_objecttype_with_fields(): def test_generate_objecttype_with_private_attributes(): class MyObjectType(ObjectType): - _private_state = None + _private_state = Field(MyType) assert '_private_state' not in MyObjectType._meta.fields assert hasattr(MyObjectType, '_private_state') diff --git a/graphene/types/tests/test_query.py b/graphene/types/tests/test_query.py index 95e626ef..3f6f578c 100644 --- a/graphene/types/tests/test_query.py +++ b/graphene/types/tests/test_query.py @@ -297,6 +297,27 @@ def test_query_middlewares(): assert executed.data == {'hello': 'dlroW', 'other': 'rehto'} +def test_query_private_values(): + class MyType(ObjectType): + _private = String() + public = String() + + class Query(ObjectType): + field = Field(MyType) + + hello_schema = Schema(Query) + + executed = hello_schema.execute('{ field { Private } }') + assert executed.errors + + executed = hello_schema.execute('{ field { _private } }') + assert executed.errors + + executed = hello_schema.execute('{ field { public } }') + assert not executed.errors + assert executed.data == {'field': None} + + def test_objecttype_on_instances(): class Ship: @@ -442,8 +463,6 @@ def test_big_list_of_containers_multiple_fields_custom_resolvers_query_benchmark def test_query_annotated_resolvers(): - import json - context = Context(key="context") class Query(ObjectType): diff --git a/graphene/types/utils.py b/graphene/types/utils.py index c4434199..0df0e7a0 100644 --- a/graphene/types/utils.py +++ b/graphene/types/utils.py @@ -28,6 +28,8 @@ def yank_fields_from_attrs(attrs, _as=None, sort=True): ''' fields_with_names = [] for attname, value in list(attrs.items()): + if attname.startswith('_'): + continue field = get_field_as(value, _as) if not field: continue