-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathtest_elasticache.py
More file actions
78 lines (61 loc) · 2.87 KB
/
test_elasticache.py
File metadata and controls
78 lines (61 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
"""Tests for elasticache functions"""
import json
from unittest import TestCase
from unittest.mock import Mock, patch
from moto import mock_aws
from utils_for_tests.mock_environment_variables import MOCK_ENVIRONMENT_DICT
from utils_for_tests.utils_for_filenameprocessor_tests import (
GenericSetUp,
GenericTearDown,
create_boto3_clients,
create_mock_hget,
)
# Ensure environment variables are mocked before importing from src files
with patch.dict("os.environ", MOCK_ENVIRONMENT_DICT):
from elasticache import (
get_supplier_permissions_from_cache,
get_supplier_system_from_cache,
get_valid_vaccine_types_from_cache,
)
s3_client = None
@mock_aws
@patch.dict("os.environ", MOCK_ENVIRONMENT_DICT)
@patch("elasticache.get_redis_client")
class TestElasticache(TestCase):
"""Tests for elasticache functions"""
def setUp(self):
"""Set up the S3 buckets"""
global s3_client
(s3_client,) = create_boto3_clients("s3")
GenericSetUp(s3_client)
def tearDown(self):
"""Tear down the S3 buckets"""
GenericTearDown(s3_client)
def test_get_supplier_system_from_cache(self, mock_get_redis_client):
mock_redis = Mock()
mock_redis.hget.side_effect = create_mock_hget({"TEST_ODS_CODE": "TEST_SUPPLIER"}, {})
mock_get_redis_client.return_value = mock_redis
result = get_supplier_system_from_cache("TEST_ODS_CODE")
self.assertEqual(result, "TEST_SUPPLIER")
mock_redis.hget.assert_called_once_with("ods_code_to_supplier", "TEST_ODS_CODE")
def test_get_supplier_permissions_from_cache(self, mock_get_redis_client):
mock_redis = Mock()
mock_redis.hget.side_effect = create_mock_hget({}, {"TEST_SUPPLIER": json.dumps(["COVID.CRUDS", "RSV.CRUDS"])})
mock_get_redis_client.return_value = mock_redis
result = get_supplier_permissions_from_cache("TEST_SUPPLIER")
self.assertEqual(result, ["COVID.CRUDS", "RSV.CRUDS"])
mock_redis.hget.assert_called_once_with("supplier_permissions", "TEST_SUPPLIER")
def test_get_supplier_permissions_from_cache_not_found(self, mock_get_redis_client):
mock_redis = Mock()
mock_redis.hget.side_effect = create_mock_hget({}, {})
mock_get_redis_client.return_value = mock_redis
result = get_supplier_permissions_from_cache("TEST_SUPPLIER")
self.assertEqual(result, [])
mock_redis.hget.assert_called_once_with("supplier_permissions", "TEST_SUPPLIER")
def test_get_valid_vaccine_types_from_cache(self, mock_get_redis_client):
mock_redis = Mock()
mock_redis.hkeys.return_value = ["COVID", "RSV", "FLU"]
mock_get_redis_client.return_value = mock_redis
result = get_valid_vaccine_types_from_cache()
self.assertEqual(result, ["COVID", "RSV", "FLU"])
mock_redis.hkeys.assert_called_once_with("vacc_to_diseases")