diff --git a/tests/unit/test_activities.py b/tests/unit/test_activities.py index 9d209ae..fed967a 100644 --- a/tests/unit/test_activities.py +++ b/tests/unit/test_activities.py @@ -70,15 +70,15 @@ class TestActivitiesList(TestActivities): @mock.patch.object(trovebox.Trovebox, 'get') def test_options(self, mock_get): - """Check that the activity list optionss are applied properly""" + """Check that the activity list options are applied properly""" mock_get.return_value = self._return_value(self.test_activities_dict) self.client.activities.list(options={"foo": "bar", - "test1": "test2"}, + "test1": "\xfcmlaut"}, foo="bar") # Dict element can be any order self.assertIn(mock_get.call_args[0], - [("/activities/foo-bar/test1-test2/list.json",), - ("/activities/test1-test2/foo-bar/list.json",)]) + [("/activities/foo-bar/test1-%C3%BCmlaut/list.json",), + ("/activities/test1-%C3%BCmlaut/foo-bar/list.json",)]) self.assertEqual(mock_get.call_args[1], {"foo": "bar"}) class TestActivitiesPurge(TestActivities): diff --git a/tests/unit/test_photos.py b/tests/unit/test_photos.py index 9b10a77..6466a9b 100644 --- a/tests/unit/test_photos.py +++ b/tests/unit/test_photos.py @@ -57,27 +57,27 @@ class TestPhotosList(TestPhotos): @mock.patch.object(trovebox.Trovebox, 'get') def test_options(self, mock_get): - """Check that the activity list options are applied properly""" + """Check that the photo list options are applied properly""" mock_get.return_value = self._return_value(self.test_photos_dict) self.client.photos.list(options={"foo": "bar", - "test1": "test2"}, + "test1": "\xfcmlaut"}, foo="bar") # Dict element can be any order self.assertIn(mock_get.call_args[0], - [("/photos/foo-bar/test1-test2/list.json",), - ("/photos/test1-test2/foo-bar/list.json",)]) + [("/photos/foo-bar/test1-%C3%BCmlaut/list.json",), + ("/photos/test1-%C3%BCmlaut/foo-bar/list.json",)]) self.assertEqual(mock_get.call_args[1], {"foo": "bar"}) class TestPhotosShare(TestPhotos): @mock.patch.object(trovebox.Trovebox, 'post') def test_photos_share(self, mock_post): self.client.photos.share(options={"foo": "bar", - "test1": "test2"}, + "test1": "\xfcmlaut"}, foo="bar") # Dict element can be any order self.assertIn(mock_post.call_args[0], - [("/photos/foo-bar/test1-test2/share.json",), - ("/photos/test1-test2/foo-bar/share.json",)]) + [("/photos/foo-bar/test1-%C3%BCmlaut/share.json",), + ("/photos/test1-%C3%BCmlaut/foo-bar/share.json",)]) self.assertEqual(mock_post.call_args[1], {"foo": "bar"}) class TestPhotosUpdate(TestPhotos): @@ -363,12 +363,12 @@ class TestPhotoView(TestPhotos): mock_get.return_value = self._return_value(self.test_photos_dict[1]) result = self.client.photo.view(self.test_photos[0], options={"foo": "bar", - "test1": "test2"}, + "test1": "\xfcmlaut"}, returnSizes="20x20") # Dict elemet can be in any order self.assertIn(mock_get.call_args[0], - [("/photo/1a/foo-bar/test1-test2/view.json",), - ("/photo/1a/test1-test2/foo-bar/view.json",)]) + [("/photo/1a/foo-bar/test1-%C3%BCmlaut/view.json",), + ("/photo/1a/test1-%C3%BCmlaut/foo-bar/view.json",)]) self.assertEqual(mock_get.call_args[1], {"returnSizes": "20x20"}) self.assertEqual(result.get_fields(), self.test_photos_dict[1]) @@ -378,13 +378,13 @@ class TestPhotoView(TestPhotos): mock_get.return_value = self._return_value(self.test_photos_dict[1]) result = self.client.photo.view("1a", options={"foo": "bar", - "test1": "test2"}, + "test1": "\xfcmlaut"}, returnSizes="20x20") # Dict elemet can be in any order self.assertIn(mock_get.call_args[0], - [("/photo/1a/foo-bar/test1-test2/view.json",), - ("/photo/1a/test1-test2/foo-bar/view.json",)]) + [("/photo/1a/foo-bar/test1-%C3%BCmlaut/view.json",), + ("/photo/1a/test1-%C3%BCmlaut/foo-bar/view.json",)]) self.assertEqual(mock_get.call_args[1], {"returnSizes": "20x20"}) self.assertEqual(result.get_fields(), self.test_photos_dict[1]) @@ -455,12 +455,12 @@ class TestPhotoNextPrevious(TestPhotos): "previous": [self.test_photos_dict[1]]}) result = self.client.photo.next_previous(self.test_photos[0], options={"foo": "bar", - "test1": "test2"}, + "test1": "\xfcmlaut"}, foo="bar") # Dict elemet can be in any order self.assertIn(mock_get.call_args[0], - [("/photo/1a/nextprevious/foo-bar/test1-test2.json",), - ("/photo/1a/nextprevious/test1-test2/foo-bar.json",)]) + [("/photo/1a/nextprevious/foo-bar/test1-%C3%BCmlaut.json",), + ("/photo/1a/nextprevious/test1-%C3%BCmlaut/foo-bar.json",)]) self.assertEqual(mock_get.call_args[1], {"foo": "bar"}) self.assertEqual(result["next"][0].get_fields(), self.test_photos_dict[0]) @@ -478,12 +478,12 @@ class TestPhotoNextPrevious(TestPhotos): "previous": [self.test_photos_dict[1]]}) result = self.client.photo.next_previous("1a", options={"foo": "bar", - "test1": "test2"}, + "test1": "\xfcmlaut"}, foo="bar") # Dict elemet can be in any order self.assertIn(mock_get.call_args[0], - [("/photo/1a/nextprevious/foo-bar/test1-test2.json",), - ("/photo/1a/nextprevious/test1-test2/foo-bar.json",)]) + [("/photo/1a/nextprevious/foo-bar/test1-%C3%BCmlaut.json",), + ("/photo/1a/nextprevious/test1-%C3%BCmlaut/foo-bar.json",)]) self.assertEqual(mock_get.call_args[1], {"foo": "bar"}) self.assertEqual(result["next"][0].get_fields(), self.test_photos_dict[0]) @@ -500,12 +500,12 @@ class TestPhotoNextPrevious(TestPhotos): {"next": [self.test_photos_dict[0]], "previous": [self.test_photos_dict[1]]}) result = self.test_photos[0].next_previous(options={"foo": "bar", - "test1": "test2"}, + "test1": "\xfcmlaut"}, foo="bar") # Dict elemet can be in any order self.assertIn(mock_get.call_args[0], - [("/photo/1a/nextprevious/foo-bar/test1-test2.json",), - ("/photo/1a/nextprevious/test1-test2/foo-bar.json",)]) + [("/photo/1a/nextprevious/foo-bar/test1-%C3%BCmlaut.json",), + ("/photo/1a/nextprevious/test1-%C3%BCmlaut/foo-bar.json",)]) self.assertEqual(mock_get.call_args[1], {"foo": "bar"}) self.assertEqual(result["next"][0].get_fields(), self.test_photos_dict[0]) diff --git a/trovebox/api/api_base.py b/trovebox/api/api_base.py index 52b06e8..ef62607 100644 --- a/trovebox/api/api_base.py +++ b/trovebox/api/api_base.py @@ -12,8 +12,7 @@ class ApiBase(object): def __init__(self, client): self._client = client - @staticmethod - def _build_option_string(options): + def _build_option_string(self, options): """ :param options: dictionary containing the options :returns: option_string formatted for an API endpoint @@ -22,7 +21,7 @@ class ApiBase(object): if options is not None: for key in options: option_string += "/%s-%s" % (key, options[key]) - return option_string + return self._quote_url(option_string) @staticmethod def _extract_id(obj):