From c2b03afe559c4af1c77d40c02bfc7d7d01e039c9 Mon Sep 17 00:00:00 2001 From: Ivan Malison Date: Mon, 5 Jan 2015 15:55:45 -0800 Subject: [PATCH] Don't encode strings as 'utf-8' twice in _get_cache_key. Closes #109. --- pylast/__init__.py | 2 +- tests/request_test.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 tests/request_test.py diff --git a/pylast/__init__.py b/pylast/__init__.py index 8005c71..7020eee 100644 --- a/pylast/__init__.py +++ b/pylast/__init__.py @@ -1070,7 +1070,7 @@ class _Request(object): for key in keys: if key != "api_sig" and key != "api_key" and key != "sk": - cache_key += key + _string(self.params[key]) + cache_key += key + self.params[key] return hashlib.sha1(cache_key.encode("utf-8")).hexdigest() diff --git a/tests/request_test.py b/tests/request_test.py new file mode 100644 index 0000000..fb18091 --- /dev/null +++ b/tests/request_test.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +import mock +import pytest + +import pylast + + +def mock_network(): + return mock.Mock( + _get_ws_auth=mock.Mock(return_value=("", "", "")) + ) + +@pytest.mark.parametrize('unicode_artist', [u'\xe9lafdasfdsafdsa', u'éééééééé']) +def test_get_cache_key(unicode_artist): + request = pylast._Request(mock_network(), 'some_method', + params={'artist': unicode_artist}) + request._get_cache_key()