Пример #1
0
class TestBase(test.TestCase):

    def setUp(self):
        self.request = test.RequestFactory().get(
            '/',
            CONTENT_TYPE='application/json')
        self.resource = Resource()

    @mock.patch('solitude.base._log_cef')
    def test_cef(self, log_cef):
        self.resource.method_check = mock.Mock()
        with self.assertRaises(ImmediateHttpResponse):
            self.resource.dispatch('POST', self.request, api_name='foo',
                                   resource_name='bar')
        args = log_cef.call_args[0]
        eq_(args[0], 'foo:bar')
        kw = log_cef.call_args[1]
        eq_(kw['msg'], 'foo:bar')
        eq_(kw['config']['cef.product'], 'Solitude')

    @mock.patch('solitude.base.log_cef')
    def test_unknowncef(self, log_cef):
        self.resource.method_check = mock.Mock()
        with self.assertRaises(ImmediateHttpResponse):
            self.resource.dispatch('POST', self.request)

        eq_(log_cef.call_args[0][0], 'unknown:unknown')

    def test_build_filters_fails(self):
        with self.assertRaises(InvalidFilterError):
            self.resource.build_filters({'foo': 'bar'})

    def test_build_filters_passes(self):
        check = mock.Mock()
        check.return_value = ['foo']
        self.resource.check_filtering = check
        self.resource.fields = ['foo']
        eq_(self.resource.build_filters({'foo': 'bar'}),
            {'foo__exact': 'bar'})

    def test_deserialize(self):
        self.request._body = ''
        eq_(self.resource.deserialize_body(self.request), {})
        self.request._body = json.dumps({'foo': 'bar'})
        eq_(self.resource.deserialize_body(self.request)['foo'], 'bar')

    def test_etag_func(self):
        assert etag_func(None, 'foo') is None
        etag_value = 123456789
        data = mock.Mock()
        data.obj.etag = etag_value
        eq_(etag_func(None, data), md5(str(etag_value)).hexdigest())
        data = {}
        data['objects'] = []
        eq_(etag_func(None, data), None)
        data = {}
        data['objects'] = [mock.Mock(etag=etag_value)]
        eq_(etag_func(None, data), md5(str(etag_value)).hexdigest())
Пример #2
0
class TestBase(test_utils.TestCase):
    def setUp(self):
        self.request = test_utils.RequestFactory().get(
            '/', CONTENT_TYPE='application/json')
        self.resource = Resource()

    @mock.patch('solitude.base._log_cef')
    def test_cef(self, log_cef):
        self.resource.method_check = mock.Mock()
        with self.assertRaises(ImmediateHttpResponse):
            self.resource.dispatch('POST',
                                   self.request,
                                   api_name='foo',
                                   resource_name='bar')
        args = log_cef.call_args[0]
        eq_(args[0], 'foo:bar')
        kw = log_cef.call_args[1]
        eq_(kw['msg'], 'foo:bar')
        eq_(kw['config']['cef.product'], 'Solitude')

    @mock.patch('solitude.base.log_cef')
    def test_unknowncef(self, log_cef):
        self.resource.method_check = mock.Mock()
        with self.assertRaises(ImmediateHttpResponse):
            self.resource.dispatch('POST', self.request)

        eq_(log_cef.call_args[0][0], 'unknown:unknown')

    def test_build_filters_fails(self):
        with self.assertRaises(InvalidFilterError):
            self.resource.build_filters({'foo': 'bar'})

    def test_build_filters_passes(self):
        check = mock.Mock()
        check.return_value = ['foo']
        self.resource.check_filtering = check
        self.resource.fields = ['foo']
        eq_(self.resource.build_filters({'foo': 'bar'}), {'foo__exact': 'bar'})

    def test_deserialize(self):
        self.request._body = ''
        eq_(self.resource.deserialize_body(self.request), {})
        self.request._body = json.dumps({'foo': 'bar'})
        eq_(self.resource.deserialize_body(self.request)['foo'], 'bar')

    def test_etag_func(self):
        assert etag_func(None, 'foo') is None
        etag_value = 123456789
        data = mock.Mock()
        data.obj.etag = etag_value
        eq_(etag_func(None, data), md5(str(etag_value)).hexdigest())
        data = {}
        data['objects'] = []
        eq_(etag_func(None, data), None)
        data = {}
        data['objects'] = [mock.Mock(etag=etag_value)]
        eq_(etag_func(None, data), md5(str(etag_value)).hexdigest())
Пример #3
0
class TestBase(test_utils.TestCase):
    def setUp(self):
        self.request = test_utils.RequestFactory().get("/", CONTENT_TYPE="application/json")
        self.resource = Resource()

    @mock.patch("solitude.base._log_cef")
    def test_cef(self, log_cef):
        self.resource.method_check = mock.Mock()
        with self.assertRaises(ImmediateHttpResponse):
            self.resource.dispatch("POST", self.request, api_name="foo", resource_name="bar")
        args = log_cef.call_args[0]
        eq_(args[0], "foo:bar")
        kw = log_cef.call_args[1]
        eq_(kw["msg"], "foo:bar")
        eq_(kw["config"]["cef.product"], "Solitude")

    @mock.patch("solitude.base.log_cef")
    def test_unknowncef(self, log_cef):
        self.resource.method_check = mock.Mock()
        with self.assertRaises(ImmediateHttpResponse):
            self.resource.dispatch("POST", self.request)

        eq_(log_cef.call_args[0][0], "unknown:unknown")

    def test_build_filters_fails(self):
        with self.assertRaises(InvalidFilterError):
            self.resource.build_filters({"foo": "bar"})

    def test_build_filters_passes(self):
        check = mock.Mock()
        check.return_value = ["foo"]
        self.resource.check_filtering = check
        self.resource.fields = ["foo"]
        eq_(self.resource.build_filters({"foo": "bar"}), {"foo__exact": "bar"})

    def test_deserialize(self):
        self.request._body = ""
        eq_(self.resource.deserialize_body(self.request), {})
        self.request._body = json.dumps({"foo": "bar"})
        eq_(self.resource.deserialize_body(self.request)["foo"], "bar")

    def test_etag_func(self):
        assert etag_func(None, "foo") is None
        etag_value = 123456789
        data = mock.Mock()
        data.obj.etag = etag_value
        eq_(etag_func(None, data), md5(str(etag_value)).hexdigest())
        data = {}
        data["objects"] = []
        eq_(etag_func(None, data), None)
        data = {}
        data["objects"] = [mock.Mock(etag=etag_value)]
        eq_(etag_func(None, data), md5(str(etag_value)).hexdigest())
Пример #4
0
class TestBase(test_utils.TestCase):

    def setUp(self):
        self.request = test_utils.RequestFactory().get('/',
            CONTENT_TYPE='application/json')
        self.resource = Resource()
        self.resource._meta.serializer = JWTSerializer()

    @mock.patch('solitude.base._log_cef')
    def test_cef(self, log_cef):
        self.resource.method_check = mock.Mock()
        with self.assertRaises(ImmediateHttpResponse):
            self.resource.dispatch('POST', self.request, api_name='foo',
                                   resource_name='bar')
        args = log_cef.call_args[0]
        eq_(args[0], 'foo:bar')
        kw = log_cef.call_args[1]
        eq_(kw['msg'], 'foo:bar')
        eq_(kw['config']['cef.product'], 'Solitude')

    @mock.patch('solitude.base.log_cef')
    def test_unknowncef(self, log_cef):
        self.resource.method_check = mock.Mock()
        with self.assertRaises(ImmediateHttpResponse):
            self.resource.dispatch('POST', self.request)

        eq_(log_cef.call_args[0][0], 'unknown:unknown')

    def test_build_filters_fails(self):
        with self.assertRaises(InvalidFilterError):
            self.resource.build_filters({'foo': 'bar'})

    def test_build_filters_passes(self):
        check = mock.Mock()
        check.return_value = ['foo']
        self.resource.check_filtering = check
        self.resource.fields = ['foo']
        eq_(self.resource.build_filters({'foo': 'bar'}),
            {'foo__exact': 'bar'})

    def test_deserialize(self):
        self.request._body = ''
        eq_(self.resource.deserialize_body(self.request), {})
        self.request._body = json.dumps({'foo': 'bar'})
        eq_(self.resource.deserialize_body(self.request)['foo'], 'bar')