import pytest import redis from mock import patch from mockredis import mock_strict_redis_client from util.config.validators import ConfigValidationException from util.config.validators.buildlogredis import RedisValidator @pytest.mark.parametrize('unvalidated_config,user,user_password,use_mock,expected', [ ({}, None, None, False, ConfigValidationException), ({'BUILDLOGS_REDIS': {}}, None, None, False, ConfigValidationException), ({'BUILDLOGS_REDIS': {'host': 'somehost'}}, None, None, False, redis.ConnectionError), ({'BUILDLOGS_REDIS': {'host': 'localhost'}}, None, None, True, None), ]) def test_validate_redis(unvalidated_config, user, user_password, use_mock, expected): with patch('redis.StrictRedis' if use_mock else 'redis.None', mock_strict_redis_client): validator = RedisValidator() if expected is not None: with pytest.raises(expected): validator.validate(unvalidated_config, user, user_password) else: validator.validate(unvalidated_config, user, user_password)