mirror of
https://github.com/graphql-python/graphene-django.git
synced 2025-04-26 03:53:46 +03:00
Add tests to DjangoPermissionField
This commit is contained in:
parent
72b8493632
commit
d773e4232a
46
graphene_django/tests/test_fields.py
Normal file
46
graphene_django/tests/test_fields.py
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
from unittest import TestCase
|
||||||
|
from django.core.exceptions import PermissionDenied
|
||||||
|
from graphene_django.fields import DjangoPermissionField
|
||||||
|
|
||||||
|
|
||||||
|
class MyInstance(object):
|
||||||
|
value = "value"
|
||||||
|
|
||||||
|
def resolver(self):
|
||||||
|
return "resolver method"
|
||||||
|
|
||||||
|
|
||||||
|
class PermissionFieldTests(TestCase):
|
||||||
|
|
||||||
|
def test_permission_field(self):
|
||||||
|
MyType = object()
|
||||||
|
field = DjangoPermissionField(MyType, permissions=['perm1', 'perm2'], source='resolver')
|
||||||
|
resolver = field.get_resolver(field.resolver)
|
||||||
|
|
||||||
|
class Viewer(object):
|
||||||
|
def has_perm(self, perm):
|
||||||
|
return perm == 'perm2'
|
||||||
|
|
||||||
|
class Info(object):
|
||||||
|
class Context(object):
|
||||||
|
user = Viewer()
|
||||||
|
context = Context()
|
||||||
|
|
||||||
|
self.assertEqual(resolver(MyInstance(), Info()), MyInstance().resolver())
|
||||||
|
|
||||||
|
def test_permission_field_without_permission(self):
|
||||||
|
MyType = object()
|
||||||
|
field = DjangoPermissionField(MyType, permissions=['perm1', 'perm2'], source='resolver')
|
||||||
|
resolver = field.get_resolver(field.resolver)
|
||||||
|
|
||||||
|
class Viewer(object):
|
||||||
|
def has_perm(self, perm):
|
||||||
|
return False
|
||||||
|
|
||||||
|
class Info(object):
|
||||||
|
class Context(object):
|
||||||
|
user = Viewer()
|
||||||
|
context = Context()
|
||||||
|
|
||||||
|
with self.assertRaises(PermissionDenied):
|
||||||
|
resolver(MyInstance(), Info())
|
|
@ -1,4 +1,4 @@
|
||||||
from ..utils import get_model_fields
|
from ..utils import get_model_fields, has_permissions
|
||||||
from .models import Film, Reporter
|
from .models import Film, Reporter
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,3 +10,23 @@ def test_get_model_fields_no_duplication():
|
||||||
film_fields = get_model_fields(Film)
|
film_fields = get_model_fields(Film)
|
||||||
film_name_set = set([field[0] for field in film_fields])
|
film_name_set = set([field[0] for field in film_fields])
|
||||||
assert len(film_fields) == len(film_name_set)
|
assert len(film_fields) == len(film_name_set)
|
||||||
|
|
||||||
|
|
||||||
|
def test_has_permissions():
|
||||||
|
class Viewer(object):
|
||||||
|
@staticmethod
|
||||||
|
def has_perm(permission):
|
||||||
|
return permission
|
||||||
|
|
||||||
|
viewer_as_perm = has_permissions(Viewer(), [False, True, False])
|
||||||
|
assert viewer_as_perm
|
||||||
|
|
||||||
|
|
||||||
|
def test_viewer_without_permissions():
|
||||||
|
class Viewer(object):
|
||||||
|
@staticmethod
|
||||||
|
def has_perm(permission):
|
||||||
|
return permission
|
||||||
|
|
||||||
|
viewer_as_perm = has_permissions(Viewer(), [False, False, False])
|
||||||
|
assert not viewer_as_perm
|
||||||
|
|
Loading…
Reference in New Issue
Block a user