diff options
author | Kali Kaneko (leap communications) <kali@leap.se> | 2016-12-15 11:44:53 +0100 |
---|---|---|
committer | Kali Kaneko (leap communications) <kali@leap.se> | 2016-12-29 03:10:01 +0100 |
commit | d215cedd5efdbedbaaf9e62626b9178b364d55f7 (patch) | |
tree | 141718bbabd3de952d524df20db52cbfa53b6e7c | |
parent | 5481d60a470cd70be5a96b4e674987f41b4481b7 (diff) |
[bug] avoid unicode conversion bug
encode to ascii any parameter passed as unicode.
-rw-r--r-- | src/leap/bitmask/core/web/api.py | 2 | ||||
-rw-r--r-- | tests/unit/core/test_web_api.py | 8 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/leap/bitmask/core/web/api.py b/src/leap/bitmask/core/web/api.py index 6c386b5d..d31afa50 100644 --- a/src/leap/bitmask/core/web/api.py +++ b/src/leap/bitmask/core/web/api.py @@ -25,6 +25,8 @@ class Api(Resource): # expects strings. This 'str(param)' conversion can be removed # if we move to python3 for param in json.loads(params): + if isinstance(param, basestring): + param = param.encode('ascii', 'replace') command.append(str(param)) d = self.dispatcher.dispatch(command) diff --git a/tests/unit/core/test_web_api.py b/tests/unit/core/test_web_api.py index 6d61686c..f19505d0 100644 --- a/tests/unit/core/test_web_api.py +++ b/tests/unit/core/test_web_api.py @@ -142,7 +142,15 @@ class RESTApiTests(unittest.TestCase): def tearDown(self): return self.plainPort.stopListening() + @defer.inlineCallbacks + def test_param_encoding(self): + params = ['test_types', 1, True] + call = yield self.makeAPICall('core/version', + params=params) + self.assertCall(call, self.canned.backend.version) + # core commands + # TODO these tests can be generated dinamically @defer.inlineCallbacks def test_core_version(self): |