-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_driver.py
102 lines (81 loc) · 2.65 KB
/
test_driver.py
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
from unittest.mock import patch
from chaosterraform import driver
class MockShellResponse:
def __init__(self, returncode=0, text=""):
self.returncode = returncode
self.stdout = text
@patch("chaosterraform.driver.os.path")
def test_chdir(mocked_path):
mocked_path.exists.return_value = True
driver.Terraform.instance_ = None
tf_driver = driver.Terraform(chdir="../testfolder/one")
assert tf_driver._terraform == ["terraform", "-chdir=../testfolder/one"]
@patch("subprocess.run")
def test_init_default_args(mocked_run):
mocked_run.return_value = MockShellResponse()
driver.Terraform.instance_ = None
tf_driver = driver.Terraform(silent=True)
tf_driver.terraform_init()
mocked_run.assert_called_once_with(
["terraform", "init"],
shell=False,
capture_output=True,
text=False,
check=False,
)
@patch("subprocess.run")
def test_apply_default_args(mocked_run):
mocked_run.return_value = MockShellResponse()
driver.Terraform.instance_ = None
tf_driver = driver.Terraform()
tf_driver.apply()
mocked_run.assert_called_once_with(
["terraform", "apply", "-auto-approve"],
shell=False,
capture_output=False,
text=False,
check=False,
)
@patch("subprocess.run")
def test_apply_verbose(mocked_run):
mocked_run.return_value = MockShellResponse()
driver.Terraform.instance_ = None
tf_driver = driver.Terraform(silent=True)
tf_driver.apply()
mocked_run.assert_called_once_with(
["terraform", "apply", "-auto-approve"],
shell=False,
capture_output=True,
text=False,
check=False,
)
@patch("subprocess.run")
def test_destroy_default_args(mocked_run):
driver.Terraform.instance_ = None
tf_driver = driver.Terraform()
tf_driver.destroy()
mocked_run.assert_called_once_with(
["terraform", "destroy", "-auto-approve"],
shell=False,
capture_output=False,
text=False,
check=False,
)
@patch("subprocess.run")
def test_output_strings(mocked_run):
return_text = '{"expected":"value","one": "1","boolean":true,"number":999}'
mocked_run.return_value = MockShellResponse(text=return_text)
driver.Terraform.instance_ = None
tf_driver = driver.Terraform()
result = tf_driver.output()
mocked_run.assert_called_once_with(
["terraform", "output", "-json"],
shell=False,
capture_output=True,
text=True,
check=False,
)
assert result.get("expected") == "value"
assert result.get("one") == "1"
assert result.get("boolean") is True
assert result.get("number") == 999