mirror of
https://github.com/graphql-python/graphene-django.git
synced 2025-04-25 11:23:45 +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
|
||||
|
||||
|
||||
|
@ -10,3 +10,23 @@ def test_get_model_fields_no_duplication():
|
|||
film_fields = get_model_fields(Film)
|
||||
film_name_set = set([field[0] for field in film_fields])
|
||||
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