Add tests to DjangoPermissionField

This commit is contained in:
Olivia Rodriguez Valdes 2019-01-04 14:24:55 -05:00
parent 72b8493632
commit d773e4232a
2 changed files with 67 additions and 1 deletions

View 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())

View File

@ -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