summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjamie.scott@uconn.edu <jamie.scott@uconn.edu>2019-10-21 14:54:39 -0700
committerAndy McCurdy <andy@andymccurdy.com>2019-12-28 22:23:43 -0800
commiteb9801512da78643b87f29e48805e870f25588e1 (patch)
tree8d8d09566e5acf376f8220ad62e600fc0e58ca40
parent6bfbf84fe8be7a5aafe695253d5676bdb8b69651 (diff)
downloadredis-py-eb9801512da78643b87f29e48805e870f25588e1.tar.gz
Refactoring for conversation
Refactoring per our conversation on git.
-rw-r--r--.DS_Storebin6148 -> 6148 bytes
-rwxr-xr-xredis/client.py27
-rw-r--r--tests/test_commands.py22
3 files changed, 30 insertions, 19 deletions
diff --git a/.DS_Store b/.DS_Store
index f4162ed..e6cb63b 100644
--- a/.DS_Store
+++ b/.DS_Store
Binary files differ
diff --git a/redis/client.py b/redis/client.py
index 6072c69..8bb428f 100755
--- a/redis/client.py
+++ b/redis/client.py
@@ -955,7 +955,8 @@ class Redis(object):
def acl_setuser(self, username, enabled=False, nopass=False,
add_passwords=None, remove_passwords=None, categories=None,
- commands=None, keys=None, reset=False):
+ add_hashes=None, remove_hashes=None, commands=None,
+ keys=None, reset=False):
"""
Create or update an ACL user.
@@ -1016,20 +1017,28 @@ class Redis(object):
# to be specified as a simple string or a list
remove_passwords = list_or_args(remove_passwords, [])
for password in remove_passwords:
- if len(password) == 64:
- pieces.append('!%s' % password)
- else:
- pieces.append('<%s' % password)
+ pieces.append('<%s' % password)
+
+ if remove_hashes:
+ # as most users will have only one password, allow remove_passwords
+ # to be specified as a simple string or a list
+ remove_hashes = list_or_args(remove_hashes, [])
+ for password in remove_hashes:
+ pieces.append('!%s' % password)
if add_passwords:
# as most users will have only one password, allow add_passwords
# to be specified as a simple string or a list
add_passwords = list_or_args(add_passwords, [])
for password in add_passwords:
- if len(password) == 64:
- pieces.append('#%s' % password)
- else:
- pieces.append('<%s' % password)
+ pieces.append('>%s' % password)
+
+ if add_hashes:
+ # as most users will have only one password, allow remove_passwords
+ # to be specified as a simple string or a list
+ add_hashes = list_or_args(add_hashes, [])
+ for password in remove_hashes:
+ pieces.append('#%s' % password)
if nopass:
pieces.append(b'nopass')
diff --git a/tests/test_commands.py b/tests/test_commands.py
index fca5055..017b5af 100644
--- a/tests/test_commands.py
+++ b/tests/test_commands.py
@@ -166,22 +166,24 @@ class TestRedisCommands(object):
assert r.acl_setuser(username, enabled=True,
remove_passwords=['pass2'])
assert len(r.acl_getuser(username)['passwords']) == 1
-
- # Resets and tests hash value "variable HP" set properly.
- HP = '5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8'
+ # Resets and tests that hashed values are set properly.
+ hashed_password = ('5e884898da28047151d0e56f8dc629'
+ '2773603d0d6aabbdd62a11ef721d1542d8')
assert r.acl_setuser(username, enabled=True, reset=True,
- add_passwords=[HP])
- assert acl['passwords'] == [HP]
+ add_hashes=[hashed_password])
+ assert acl['passwords'] == [hashed_password]
# test remove_passwords for hash removal
assert r.acl_setuser(username, enabled=True, reset=True,
- add_passwords=[HP, 'pass1'])
+ add_hashes=[hashed_password],
+ add_passwords=['pass1'])
assert len(r.acl_getuser(username)['passwords']) == 2
assert r.acl_setuser(username, enabled=True,
- remove_passwords=[HP])
+ remove_hashes=[hashed_password])
assert len(r.acl_getuser(username)['passwords']) == 1
- @skip_if_server_version_lt('6.0.0')
- def test_acl_list(self, r, request):
- username = 'redis-py-user'
+
+ @skip_if_server_version_lt('6.0.0')
+ def test_acl_list(self, r, request):
+ username = 'redis-py-user'
def teardown():
r.acl_deluser(username)