class TestByHttpMethod(TestCase):
    def setUp(self):
        self.get_permission = Mock
        self.patch_permission = Mock
        self.post_permission = Mock
        self.put_permission = Mock
        self.permission = ByHttpMethod({
            'get': self.get_permission,
        })
        self.set_permission_mock('get', True)

    def set_permission_mock(self, method, value):
        mock = self.permission.method_permissions[method]
        mock.has_permission.return_value = value

    def set_object_permission_mock(self, method, value):
        mock = self.permission.method_permissions[method]
        mock.has_object_permission.return_value = value

    def test_get(self):
        self.request = RequestFactory().get('/')
        assert self.permission.has_permission(self.request, 'myview') is True
        self.set_permission_mock('get', False)
        assert self.permission.has_permission(self.request, 'myview') is False

    def test_get_obj(self):
        obj = Mock()
        self.request = RequestFactory().get('/')
        self.set_object_permission_mock('get', True)
        assert self.permission.has_object_permission(
            self.request, 'myview', obj) is True

        self.set_object_permission_mock('get', False)
        assert self.permission.has_object_permission(
            self.request, 'myview', obj) is False

    def test_missing_method(self):
        self.request = RequestFactory().post('/')
        assert self.permission.has_permission(self.request, 'myview') is False

        obj = Mock()
        self.request = RequestFactory().post('/')
        assert self.permission.has_object_permission(
            self.request, 'myview', obj) is False

        self.request = RequestFactory().options('/')
        assert self.permission.has_permission(self.request, 'myview') is False
Пример #2
0
class TestByHttpMethod(TestCase):
    def setUp(self):
        self.get_permission = Mock
        self.patch_permission = Mock
        self.post_permission = Mock
        self.put_permission = Mock
        self.permission = ByHttpMethod({
            'get': self.get_permission,
        })
        self.set_permission_mock('get', True)

    def set_permission_mock(self, method, value):
        mock = self.permission.method_permissions[method]
        mock.has_permission.return_value = value

    def set_object_permission_mock(self, method, value):
        mock = self.permission.method_permissions[method]
        mock.has_object_permission.return_value = value

    def test_get(self):
        self.request = RequestFactory().get('/')
        assert self.permission.has_permission(self.request, 'myview') is True
        self.set_permission_mock('get', False)
        assert self.permission.has_permission(self.request, 'myview') is False

    def test_get_obj(self):
        obj = Mock(spec=[])
        self.request = RequestFactory().get('/')
        self.set_object_permission_mock('get', True)
        assert self.permission.has_object_permission(self.request, 'myview',
                                                     obj) is True

        self.set_object_permission_mock('get', False)
        assert self.permission.has_object_permission(self.request, 'myview',
                                                     obj) is False

    def test_missing_method(self):
        self.request = RequestFactory().post('/')
        with self.assertRaises(MethodNotAllowed):
            self.permission.has_permission(self.request, 'myview')

        obj = Mock(spec=[])
        self.request = RequestFactory().post('/')
        with self.assertRaises(MethodNotAllowed):
            self.permission.has_object_permission(self.request, 'myview', obj)

        self.request = RequestFactory().options('/')
        with self.assertRaises(MethodNotAllowed):
            self.permission.has_permission(self.request, 'myview')