Skip to content

Commit

Permalink
Remove string conversion from JsonSerializer, test decoding of Unicod…
Browse files Browse the repository at this point in the history
…e responses
  • Loading branch information
Renzo Lucioni committed May 14, 2015
1 parent a02e8ba commit 1337588
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 1 deletion.
2 changes: 1 addition & 1 deletion slumber/serialize.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class JsonSerializer(BaseSerializer):
key = "json"

def loads(self, data):
return json.loads(str(data))
return json.loads(data)

def dumps(self, data):
return json.dumps(data)
Expand Down
31 changes: 31 additions & 0 deletions tests/resource.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import sys
import mock
import requests
Expand Down Expand Up @@ -512,3 +513,33 @@ def test_post_201_does_get(self):
},
params=getparams,
data=None)

def test_unicode_decodable_response(self):
r = mock.Mock(spec=requests.Response)
r.status_code = 200
r.content = '{"result": "Préparatoire"}'
r.headers = {"content-type": "application/json"}

self.base_resource._store.update({
"session": mock.Mock(spec=requests.Session),
"serializer": slumber.serialize.Serializer(),
})
self.base_resource._store["session"].request.return_value = r

resp = self.base_resource._request("POST")

self.assertTrue(resp is r)
self.assertEqual(resp.content, r.content)

self.base_resource._store["session"].request.assert_called_once_with(
"POST",
"http://example/api/v1/test",
data=None,
files=None,
params=None,
headers={"content-type": self.base_resource._store["serializer"].get_content_type(), "accept": self.base_resource._store["serializer"].get_content_type()}
)

resp = self.base_resource.post(data={'foo': 'bar'})
expected = b'Pr\xc3\xa9paratoire'.decode('utf8')
self.assertEqual(resp['result'], expected)

0 comments on commit 1337588

Please sign in to comment.