From b0cd9aecf0f3a85882f1c9a8bc2c3762858fe110 Mon Sep 17 00:00:00 2001 From: Alastair Porter Date: Mon, 26 Mar 2018 16:34:02 +0200 Subject: [PATCH] Correctly test unicode/byte values in both python2 and python3 Add mock for testing --- brainzutils/test/test_cache.py | 26 ++++++++++++++++++++------ requirements_dev.txt | 1 + 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/brainzutils/test/test_cache.py b/brainzutils/test/test_cache.py index 6626abd..ca77ccb 100644 --- a/brainzutils/test/test_cache.py +++ b/brainzutils/test/test_cache.py @@ -155,21 +155,35 @@ class CacheKeyTestCase(unittest.TestCase): @mock.patch('brainzutils.cache.redis.StrictRedis', autospec=True) def test_set_key(self, mock_redis): + """Test setting a bytes value""" cache.init(host='host', port=2, namespace=self.namespace) - cache.set('key', 'value') + cache.set('key', u'value'.encode('utf-8')) - expected_key = 'NS_TEST:a62f2225bf70bfaccbc7f1ef2a397836717377de' + # Keys are encoded into bytes always + expected_key = 'NS_TEST:a62f2225bf70bfaccbc7f1ef2a397836717377de'.encode('utf-8') # msgpack encoded value - expected_value = '\xc4\x05value' + expected_value = b'\xc4\x05value' + mock_redis.return_value.mset.assert_called_with({expected_key: expected_value}) + mock_redis.return_value.pexpire.assert_not_called() + + @mock.patch('brainzutils.cache.redis.StrictRedis', autospec=True) + def test_set_key_unicode(self, mock_redis): + """Test setting a unicode value""" + cache.init(host='host', port=2, namespace=self.namespace) + cache.set('key', u'value') + + expected_key = 'NS_TEST:a62f2225bf70bfaccbc7f1ef2a397836717377de'.encode('utf-8') + # msgpack encoded value + expected_value = b'\xa5value' mock_redis.return_value.mset.assert_called_with({expected_key: expected_value}) mock_redis.return_value.pexpire.assert_not_called() @mock.patch('brainzutils.cache.redis.StrictRedis', autospec=True) def test_key_expire(self, mock_redis): cache.init(host='host', port=2, namespace=self.namespace) - cache.set('key', 'value', time=30) - expected_key = 'NS_TEST:a62f2225bf70bfaccbc7f1ef2a397836717377de' + cache.set('key', u'value'.encode('utf-8'), time=30) + expected_key = 'NS_TEST:a62f2225bf70bfaccbc7f1ef2a397836717377de'.encode('utf-8') # msgpack encoded value - expected_value = '\xc4\x05value' + expected_value = b'\xc4\x05value' mock_redis.return_value.mset.assert_called_with({expected_key: expected_value}) mock_redis.return_value.pexpire.assert_called_with(expected_key, 30000) diff --git a/requirements_dev.txt b/requirements_dev.txt index 426189c..1777615 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,3 +1,4 @@ pytest==3.1.2 pytest-cov==2.5.1 pylint==1.7.2 +mock==2.0.0