diff options
| author | Nicholas Charriere <nicholas@pinterest.com> | 2016-10-03 11:31:17 -0700 |
|---|---|---|
| committer | Nicholas Charriere <nicholas@pinterest.com> | 2016-10-03 14:31:14 -0700 |
| commit | a1bf081754cd38de1a20925782a5404de00bd46d (patch) | |
| tree | b5a0b47a33455bd50ba924724925ee51e3fd350a /pymemcache/test | |
| parent | dcd9f5b51bfa7c1afba5191f7be95c7109f9e224 (diff) | |
| download | pymemcache-fix-unicode-char-in-middle-error.tar.gz | |
Fix #117, illegal unicode character in middle of key (or value now)fix-unicode-char-in-middle-error
Add .python-version to .gitignore (for pyenv)
Diffstat (limited to 'pymemcache/test')
| -rw-r--r-- | pymemcache/test/test_client.py | 9 | ||||
| -rw-r--r-- | pymemcache/test/utils.py | 15 |
2 files changed, 24 insertions, 0 deletions
diff --git a/pymemcache/test/test_client.py b/pymemcache/test/test_client.py index 530f4c1..6d658f5 100644 --- a/pymemcache/test/test_client.py +++ b/pymemcache/test/test_client.py @@ -92,6 +92,15 @@ class ClientTestMixin(object): with pytest.raises(MemcacheIllegalInputError): _set() + def test_set_unicode_char_in_middle_of_key(self): + client = self.make_client([b'STORED\r\n']) + + def _set(): + client.set('helloworld_\xb1901520_%c3', b'value', noreply=False) + + with pytest.raises(MemcacheIllegalInputError): + _set() + def test_set_unicode_value(self): client = self.make_client([b'']) diff --git a/pymemcache/test/utils.py b/pymemcache/test/utils.py index f2c5a80..4414031 100644 --- a/pymemcache/test/utils.py +++ b/pymemcache/test/utils.py @@ -43,6 +43,11 @@ class MockMemcacheClient(object): def get(self, key, default=None): if isinstance(key, six.text_type): raise MemcacheIllegalInputError(key) + if isinstance(key, six.string_types): + try: + key = key.encode('ascii') + except (UnicodeEncodeError, UnicodeDecodeError): + raise MemcacheIllegalInputError if key not in self._contents: return default @@ -71,6 +76,16 @@ class MockMemcacheClient(object): raise MemcacheIllegalInputError(key) if isinstance(value, six.text_type): raise MemcacheIllegalInputError(value) + if isinstance(key, six.string_types): + try: + key = key.encode('ascii') + except (UnicodeEncodeError, UnicodeDecodeError): + raise MemcacheIllegalInputError + if isinstance(value, six.string_types): + try: + value = value.encode('ascii') + except (UnicodeEncodeError, UnicodeDecodeError): + raise MemcacheIllegalInputError flags = 0 if self.serializer: |
