Skip to content

Commit 23b8a07

Browse files
committed
added username to redis connection
1 parent 3b5734f commit 23b8a07

File tree

5 files changed

+20
-3
lines changed

5 files changed

+20
-3
lines changed

splitio/client/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
'redisHost': 'localhost',
3232
'redisPort': 6379,
3333
'redisDb': 0,
34+
'redisUsername': None,
3435
'redisPassword': None,
3536
'redisSocketTimeout': None,
3637
'redisSocketConnectTimeout': None,

splitio/storage/adapters/redis.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,7 @@ def _build_default_client(config): # pylint: disable=too-many-locals
357357
host = config.get('redisHost', 'localhost')
358358
port = config.get('redisPort', 6379)
359359
database = config.get('redisDb', 0)
360+
username = config.get('redisUsername', None)
360361
password = config.get('redisPassword', None)
361362
socket_timeout = config.get('redisSocketTimeout', None)
362363
socket_connect_timeout = config.get('redisSocketConnectTimeout', None)
@@ -382,6 +383,7 @@ def _build_default_client(config): # pylint: disable=too-many-locals
382383
port=port,
383384
db=database,
384385
password=password,
386+
username=username,
385387
socket_timeout=socket_timeout,
386388
socket_connect_timeout=socket_connect_timeout,
387389
socket_keepalive=socket_keepalive,
@@ -435,6 +437,7 @@ def _build_sentinel_client(config): # pylint: disable=too-many-locals
435437
raise SentinelConfigurationException('redisMasterService must be specified.')
436438

437439
database = config.get('redisDb', 0)
440+
username = config.get('redisUsername', None)
438441
password = config.get('redisPassword', None)
439442
socket_timeout = config.get('redisSocketTimeout', None)
440443
socket_connect_timeout = config.get('redisSocketConnectTimeout', None)
@@ -452,6 +455,7 @@ def _build_sentinel_client(config): # pylint: disable=too-many-locals
452455
sentinels,
453456
db=database,
454457
password=password,
458+
username=username,
455459
socket_timeout=socket_timeout,
456460
socket_connect_timeout=socket_connect_timeout,
457461
socket_keepalive=socket_keepalive,

tests/client/test_factory.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ def test_redis_client_creation(self, mocker):
9999
'redisPort': 1234,
100100
'redisDb': 1,
101101
'redisPassword': 'some_password',
102+
'redisUsername': 'redis_user',
102103
'redisSocketTimeout': 123,
103104
'redisSocketConnectTimeout': 123,
104105
'redisSocketKeepalive': 123,
@@ -134,6 +135,7 @@ def test_redis_client_creation(self, mocker):
134135
host='some_host',
135136
port=1234,
136137
db=1,
138+
username='redis_user',
137139
password='some_password',
138140
socket_timeout=123,
139141
socket_connect_timeout=123,

tests/integration/test_redis_integration.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from splitio.models import splits, impressions, events
99
from splitio.storage.redis import RedisSplitStorage, RedisSegmentStorage, RedisImpressionsStorage, \
1010
RedisEventsStorage
11-
from splitio.storage.adapters.redis import _build_default_client
11+
from splitio.storage.adapters.redis import _build_default_client, StrictRedis
1212
from splitio.client.config import DEFAULT_CONFIG
1313

1414

@@ -17,7 +17,11 @@ class SplitStorageTests(object):
1717

1818
def test_put_fetch(self):
1919
"""Test storing and retrieving splits in redis."""
20-
adapter = _build_default_client({})
20+
redis = StrictRedis(host="localhost")
21+
redis.acl_setuser(username='redis_user', enabled=True, passwords=["+split"], categories=["+admin"],
22+
commands=["+@all"], keys=["~*"])
23+
redis.close()
24+
adapter = _build_default_client({'redisUsername': 'redis_user', 'redisPassword': 'split'})
2125
try:
2226
storage = RedisSplitStorage(adapter)
2327
with open(os.path.join(os.path.dirname(__file__), 'files', 'split_changes.json'), 'r') as flo:
@@ -73,10 +77,12 @@ def test_put_fetch(self):
7377
]
7478
for item in to_delete:
7579
adapter.delete(item)
76-
7780
storage = RedisSplitStorage(adapter)
7881
assert storage.is_valid_traffic_type('user') is False
7982
assert storage.is_valid_traffic_type('account') is False
83+
redis = StrictRedis(host="localhost")
84+
redis.acl_deluser("redis_user")
85+
redis.close()
8086

8187
def test_get_all(self):
8288
"""Test get all names & splits."""

tests/storage/adapters/test_redis_adapter.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ def test_adapter_building(self, mocker):
8787
'redisHost': 'some_host',
8888
'redisPort': 1234,
8989
'redisDb': 0,
90+
'redisUsername': 'redis_user',
9091
'redisPassword': 'some_password',
9192
'redisSocketTimeout': 123,
9293
'redisSocketConnectTimeout': 456,
@@ -113,6 +114,7 @@ def test_adapter_building(self, mocker):
113114
host='some_host',
114115
port=1234,
115116
db=0,
117+
username='redis_user',
116118
password='some_password',
117119
socket_timeout=123,
118120
socket_connect_timeout=456,
@@ -137,6 +139,7 @@ def test_adapter_building(self, mocker):
137139
'redisSentinels': [('123.123.123.123', 1), ('456.456.456.456', 2), ('789.789.789.789', 3)],
138140
'redisMasterService': 'some_master',
139141
'redisDb': 0,
142+
'redisUsername': 'redis_user',
140143
'redisPassword': 'some_password',
141144
'redisSocketTimeout': 123,
142145
'redisSocketConnectTimeout': 456,
@@ -162,6 +165,7 @@ def test_adapter_building(self, mocker):
162165
assert sentinel_mock.mock_calls[0] == mocker.call(
163166
[('123.123.123.123', 1), ('456.456.456.456', 2), ('789.789.789.789', 3)],
164167
db=0,
168+
username='redis_user',
165169
password='some_password',
166170
socket_timeout=123,
167171
socket_connect_timeout=456,

0 commit comments

Comments
 (0)