Example #1
0
    def test_required_method_put(self):
        from djsonapi import api
        from djsonapi import serial

        @api.required_method("PUT", debug=True)
        def view(request, put=None):
            self.assertIsNotNone(put)
            return api.ok(put=put)

        ## test put

        data = {"test": 123}
        json = serial.dumps(data)

        factory = RequestFactory()
        request = factory.put("/", content_type="application/json", data=json)
        response = view(request)
        response_data = serial.loads(response.content)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(data, response_data["body"]["put"])

        ## test debug

        factory = RequestFactory()
        request = factory.put("/",
                              content_type="application/json",
                              data="FAILJSON")
        response = view(request)
        response_data = serial.loads(response.content)

        self.assertEqual(response.status_code, 400)
        self.assertFalse(response_data["ok"])
        self.assertIsNotNone(response_data["body"]["exception"])
Example #2
0
    def test_required_method_put(self):
        from djsonapi import api
        from djsonapi import serial

        @api.required_method("PUT", debug=True)
        def view(request, put=None):
            self.assertIsNotNone(put)
            return api.ok(put=put)

        ## test put

        data = {"test": 123}
        json = serial.dumps(data)

        factory = RequestFactory()
        request = factory.put("/", content_type="application/json", data=json)
        response = view(request)
        response_data = serial.loads(response.content)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(data, response_data["body"]["put"])

        ## test debug

        factory = RequestFactory()
        request = factory.put("/", content_type="application/json", data="FAILJSON")
        response = view(request)
        response_data = serial.loads(response.content)

        self.assertEqual(response.status_code, 400)
        self.assertFalse(response_data["ok"])
        self.assertIsNotNone(response_data["body"]["exception"])
Example #3
0
    def test_form_valid(self):
        from django import forms
        from djsonapi import api
        from djsonapi import serial

        class SomeForm(forms.Form):
            field = forms.IntegerField()

        @api.required_method("GET", "POST", "PUT")
        @api.post_form(SomeForm)
        def view(request, form=None):
            return api.ok(form=form.cleaned_data if form else None,
                          method=request.method)

        ## Valid

        data = {"field": 123}
        json = serial.dumps(data)

        factory = RequestFactory()
        request = factory.post("/", content_type="application/json", data=json)
        response = view(request)
        response_data = serial.loads(response.content)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response_data["body"]["method"], "POST")
        self.assertEqual(response_data["body"]["form"]["field"], data["field"])

        ## Invalid

        data = {"xxx": 123}
        json = serial.dumps(data)

        factory = RequestFactory()
        request = factory.post("/", content_type="application/json", data=json)
        response = view(request)
        response_data = serial.loads(response.content)

        self.assertEqual(response.status_code, 400)
        self.assertIsNotNone(response_data["body"]["errors"]["field"])
Example #4
0
    def test_form_valid(self):
        from django import forms
        from djsonapi import api
        from djsonapi import serial

        class SomeForm(forms.Form):
            field = forms.IntegerField()

        @api.required_method("GET", "POST", "PUT")
        @api.post_form(SomeForm)
        def view(request, form=None):
            return api.ok(form=form.cleaned_data if form  else None, method=request.method)

        ## Valid

        data = {"field": 123}
        json = serial.dumps(data)

        factory = RequestFactory()
        request = factory.post("/", content_type="application/json", data=json)
        response = view(request)
        response_data = serial.loads(response.content)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response_data["body"]["method"], "POST")
        self.assertEqual(response_data["body"]["form"]["field"], data["field"])

        ## Invalid

        data = {"xxx": 123}
        json = serial.dumps(data)

        factory = RequestFactory()
        request = factory.post("/", content_type="application/json", data=json)
        response = view(request)
        response_data = serial.loads(response.content)

        self.assertEqual(response.status_code, 400)
        self.assertIsNotNone(response_data["body"]["errors"]["field"])
Example #5
0
def json_response(status, ok, message, **body):
    """
    Return an HttpResponse with a content type of "application/json" and the given status code.
    The JSON will have an "ok" status, message, and optional body.
    """
    bag = {
        "ok": ok,
    }
    if body:
        bag["body"] = body
    if message:
        bag["message"] = message
    response = http.HttpResponse(serial.dumps(bag), status=status)
    response["Content-type"] = "application/json; charset=utf-8"
    return response
Example #6
0
    def test_dump(self):
        try:
            from cStringIO import StringIO
        except ImportError:
            from StringIO import StringIO
        from djsonapi import serial

        io = StringIO()

        data = {"test": "test"}
        serial.dump(data, io)
        io_out = io.getvalue()
        reg_out = serial.dumps(data)

        self.assertEqual(io_out, reg_out)
Example #7
0
    def test_dump(self):
        try:
            from cStringIO import StringIO
        except ImportError:
            from StringIO import StringIO
        from djsonapi import serial

        io = StringIO()

        data = {"test": "test"}
        serial.dump(data, io)
        io_out = io.getvalue()
        reg_out = serial.dumps(data)

        self.assertEqual(io_out, reg_out)
Example #8
0
def json_response(status, ok, message, **body):
    """
    Return an HttpResponse with a content type of "application/json" and the given status code.
    The JSON will have an "ok" status, message, and optional body.
    """
    bag = {
        "ok": ok,
    }
    if body:
        bag["body"] = body
    if message:
        bag["message"] = message
    response = http.HttpResponse(serial.dumps(bag), status=status)
    response["Content-type"] = "application/json; charset=utf-8"
    return response
Example #9
0
    def test_post_form_lambda_dict(self):
        from django import forms
        from djsonapi import api
        from djsonapi import serial

        class TestForm(forms.Form):
            field = forms.IntegerField()

        @api.required_method("POST")
        @api.post_form(lambda request, data: {"POST": TestForm(data=data)})
        def view(request, form=None):
            return api.ok(data=form.cleaned_data)

        factory = RequestFactory()
        request = factory.post("/", content_type="application/json", data=serial.dumps({"field": 123}))
        response = view(request)
        not_found = object()
        self.assertEqual(response.status_code, 200)
        response_data = serial.loads(response.content)
        self.assertEqual(response_data["ok"], True)
        self.assertEqual(response_data.get("message", not_found), not_found)
        self.assertEqual(response_data["body"]["data"]["field"], 123)
Example #10
0
    def test_post_form_lambda_dict(self):
        from django import forms
        from djsonapi import api
        from djsonapi import serial

        class TestForm(forms.Form):
            field = forms.IntegerField()

        @api.required_method("POST")
        @api.post_form(lambda request, data: {"POST": TestForm(data=data)})
        def view(request, form=None):
            return api.ok(data=form.cleaned_data)

        factory = RequestFactory()
        request = factory.post("/",
                               content_type="application/json",
                               data=serial.dumps({"field": 123}))
        response = view(request)
        not_found = object()
        self.assertEqual(response.status_code, 200)
        response_data = serial.loads(response.content)
        self.assertEqual(response_data["ok"], True)
        self.assertEqual(response_data.get("message", not_found), not_found)
        self.assertEqual(response_data["body"]["data"]["field"], 123)
Example #11
0
    def test_nowserializes(self):
        from django.utils import timezone
        from djsonapi import serial

        json = serial.dumps({"datetime": timezone.now()})
        self.assertIsInstance(json, (unicode, str))
Example #12
0
    def test_dateserializes(self):
        from datetime import date
        from djsonapi import serial

        json = serial.dumps({"datetime": date.today()})
        self.assertIsInstance(json, (unicode, str))
Example #13
0
    def test_nowserializes(self):
        from django.utils import timezone
        from djsonapi import serial

        json = serial.dumps({"datetime": timezone.now()})
        self.assertIsInstance(json, (unicode, str))
Example #14
0
    def test_dateserializes(self):
        from datetime import date
        from djsonapi import serial

        json = serial.dumps({"datetime": date.today()})
        self.assertIsInstance(json, (unicode, str))