|
1
|
|
|
# -*- coding: utf-8 -*- |
|
2
|
|
|
import unittest |
|
3
|
|
|
from mock import MagicMock |
|
4
|
|
|
from awslambdahelper import AWSConfigRule |
|
5
|
|
|
|
|
6
|
|
|
|
|
7
|
|
|
class ConfigRuleTests(unittest.TestCase): |
|
8
|
|
|
def test_classinstantiation(self): |
|
9
|
|
|
AWSConfigRule( |
|
10
|
|
|
applicable_resources=["AWS::EC2::INSTANCE"] |
|
11
|
|
|
) |
|
12
|
|
|
|
|
13
|
|
|
def test_configcalltype(self): |
|
14
|
|
|
rule = AWSConfigRule( |
|
15
|
|
|
applicable_resources=["AWS::EC2::INSTANCE"] |
|
16
|
|
|
) |
|
17
|
|
|
rule.call_type = AWSConfigRule.CALL_TYPE_CONFIGURATION_CHANGE |
|
18
|
|
|
|
|
19
|
|
|
self.assertTrue(rule.is_config_change_call) |
|
20
|
|
|
|
|
21
|
|
|
def test_schedulecalltype(self): |
|
22
|
|
|
rule = AWSConfigRule( |
|
23
|
|
|
applicable_resources=["AWS::EC2::INSTANCE"] |
|
24
|
|
|
) |
|
25
|
|
|
rule.call_type = AWSConfigRule.CALL_TYPE_SCHEDULED |
|
26
|
|
|
|
|
27
|
|
|
self.assertTrue(rule.is_scheduled_call) |
|
28
|
|
|
|
|
29
|
|
|
def test_unimplemented_callbacks(self): |
|
30
|
|
|
rule = AWSConfigRule( |
|
31
|
|
|
applicable_resources=["AWS::EC2::INSTANCE"] |
|
32
|
|
|
) |
|
33
|
|
|
|
|
34
|
|
|
with self.assertRaises(NotImplementedError): |
|
35
|
|
|
rule.find_violation_config_change(config=None, rule_parameters=None) |
|
36
|
|
|
|
|
37
|
|
|
with self.assertRaises(NotImplementedError): |
|
38
|
|
|
rule.find_violation_scheduled(rule_parameters=None, accountid=None) |
|
39
|
|
|
|
|
40
|
|
|
def test_statichandler(self): |
|
41
|
|
|
class MockHandler(AWSConfigRule): |
|
42
|
|
|
APPLICABLE_RESOURCES = ['a', 'b'] |
|
43
|
|
|
|
|
44
|
|
|
MockHandler.lambda_handler = MagicMock() |
|
45
|
|
|
|
|
46
|
|
|
MockHandler.handler({'event': None}, {'context': None}) |
|
47
|
|
|
|
|
48
|
|
|
MockHandler.lambda_handler.assert_called_once_with( |
|
49
|
|
|
{'event': None}, {'context': None} |
|
50
|
|
|
) |
|
51
|
|
|
|
|
52
|
|
|
def test__aws_call(self): |
|
53
|
|
|
callable_payload = lambda: 'TestResponse' |
|
54
|
|
|
|
|
55
|
|
|
rule = AWSConfigRule() |
|
56
|
|
|
self.assertEqual( |
|
57
|
|
|
rule._aws_call(callable_payload), |
|
58
|
|
|
'TestResponse' |
|
59
|
|
|
) |