diff --git a/monasca_api/tests/test_query_helpers.py b/monasca_api/tests/test_query_helpers.py index b099393c0..2843fcde3 100644 --- a/monasca_api/tests/test_query_helpers.py +++ b/monasca_api/tests/test_query_helpers.py @@ -90,3 +90,36 @@ class TestGetQueryDimension(unittest.TestCase): self.assertRaises( HTTPUnprocessableEntityError, helpers.get_query_dimensions, req) + + +class TestGetOldQueryParams(unittest.TestCase): + + def test_old_query_params(self): + uri = Mock() + uri.query = "foo=bar&spam=ham" + + result = helpers._get_old_query_params(uri) + self.assertEqual(result, ["foo=bar", "spam=ham"]) + + def test_old_query_params_with_equals(self): + uri = Mock() + uri.query = "foo=spam=ham" + + result = helpers._get_old_query_params(uri) + self.assertEqual(result, ["foo=spam%3Dham"]) + + def test_old_query_params_except_offset(self): + uri = Mock() + uri.query = "foo=bar&spam=ham" + result = [] + + helpers._get_old_query_params_except_offset(result, uri) + self.assertEqual(result, ["foo=bar", "spam=ham"]) + + def test_old_query_params_except_offset_with_equals(self): + uri = Mock() + uri.query = "foo=spam=ham&offset=bar" + result = [] + + helpers._get_old_query_params_except_offset(result, uri) + self.assertEqual(result, ["foo=spam%3Dham"]) diff --git a/monasca_api/v2/reference/helpers.py b/monasca_api/v2/reference/helpers.py index 69160785c..0f0e599ab 100644 --- a/monasca_api/v2/reference/helpers.py +++ b/monasca_api/v2/reference/helpers.py @@ -400,7 +400,7 @@ def _get_old_query_params(parsed_uri): if parsed_uri.query: for query_param in parsed_uri.query.split('&'): - query_param_name, query_param_val = query_param.split('=') + query_param_name, query_param_val = query_param.split('=', 1) old_query_params.append(urlparse.quote( query_param_name.encode('utf8'), safe='') @@ -414,7 +414,7 @@ def _get_old_query_params_except_offset(new_query_params, parsed_uri): if parsed_uri.query: for query_param in parsed_uri.query.split('&'): - query_param_name, query_param_val = query_param.split('=') + query_param_name, query_param_val = query_param.split('=', 1) if query_param_name.lower() != 'offset': new_query_params.append(urlparse.quote( query_param_name.encode(