3 # Copyright (c) 2021 Orange and others.
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
10 # pylint: disable=missing-docstring
18 from xtesting.core import ansible
21 class RunTesting(unittest.TestCase):
24 self.test = ansible.Ansible()
26 @mock.patch("shutil.which", return_value=None)
27 def test_check1(self, which):
28 self.test.check_requirements()
29 self.assertEqual(self.test.is_skipped, True)
30 which.assert_called_once_with("ansible-playbook")
32 @mock.patch("shutil.which", return_value='/usr/bin/ansible-playbook')
33 def test_check2(self, which):
34 self.test.check_requirements()
35 self.assertEqual(self.test.is_skipped, False)
36 which.assert_called_once_with("ansible-playbook")
38 @mock.patch("os.path.isdir", return_value=False)
39 def test_fail1(self, isdir):
40 self.assertEqual(self.test.run(), self.test.EX_RUN_ERROR)
41 isdir.assert_not_called()
43 @mock.patch("os.path.isdir", return_value=False)
44 def test_fail2(self, isdir):
45 private_data_dir = "titi"
47 self.test.run(private_data_dir=private_data_dir),
48 self.test.EX_RUN_ERROR)
49 isdir.assert_called_once_with(private_data_dir)
51 @mock.patch("ansible_runner.run", side_effect=Exception)
52 @mock.patch("os.makedirs")
53 @mock.patch("os.path.exists", return_value=True)
54 @mock.patch("os.path.isdir", return_value=True)
55 def test_fail3(self, *args):
56 private_data_dir = "titi"
58 self.test.run(private_data_dir=private_data_dir),
59 self.test.EX_RUN_ERROR)
60 args[0].assert_called_once_with(private_data_dir)
61 args[1].assert_called_once_with(self.test.res_dir)
62 args[2].assert_not_called()
63 args[3].assert_called_with(
64 private_data_dir=private_data_dir, quiet=True,
65 artifact_dir=self.test.res_dir)
67 @mock.patch("ansible_runner.run", side_effect=Exception)
68 @mock.patch("os.makedirs")
69 @mock.patch("os.path.exists", return_value=False)
70 @mock.patch("os.path.isdir", return_value=True)
71 def test_fail4(self, *args):
72 private_data_dir = "titi"
74 self.test.run(private_data_dir=private_data_dir),
75 self.test.EX_RUN_ERROR)
76 args[0].assert_called_once_with(private_data_dir)
77 args[1].assert_called_once_with(self.test.res_dir)
78 args[2].assert_called_once_with(self.test.res_dir)
79 args[3].assert_called_with(
80 private_data_dir=private_data_dir, quiet=True,
81 artifact_dir=self.test.res_dir)
83 @mock.patch("ansible_runner.run")
84 @mock.patch("os.makedirs", side_effect=Exception)
85 @mock.patch("os.path.exists", return_value=False)
86 @mock.patch("os.path.isdir", return_value=True)
87 def test_fail5(self, *args):
88 private_data_dir = "titi"
90 self.test.run(private_data_dir=private_data_dir),
91 self.test.EX_RUN_ERROR)
92 args[0].assert_called_once_with(private_data_dir)
93 args[1].assert_called_once_with(self.test.res_dir)
94 args[2].assert_called_once_with(self.test.res_dir)
95 args[3].assert_not_called()
97 @mock.patch("ansible_runner.run", return_value={})
98 @mock.patch("os.makedirs")
99 @mock.patch("os.path.exists", return_value=False)
100 @mock.patch("os.path.isdir", return_value=True)
101 def test_fail6(self, *args):
102 private_data_dir = "titi"
105 private_data_dir=private_data_dir, quiet=False,
106 artifact_dir="overridden"),
107 self.test.EX_RUN_ERROR)
108 args[0].assert_called_once_with(private_data_dir)
109 args[1].assert_called_once_with(self.test.res_dir)
110 args[2].assert_called_once_with(self.test.res_dir)
111 args[3].assert_called_with(
112 private_data_dir=private_data_dir, quiet=False,
113 artifact_dir=self.test.res_dir)
115 @mock.patch("ansible_runner.run",
116 return_value=munch.Munch(rc=0, stats={"foo": "bar"}))
117 @mock.patch("os.makedirs")
118 @mock.patch("os.path.exists", return_value=False)
119 @mock.patch("os.path.isdir", return_value=True)
120 def test_res_ok1(self, *args):
121 private_data_dir = "titi"
124 private_data_dir=private_data_dir, quiet=False,
125 artifact_dir="overridden"),
127 args[0].assert_called_once_with(private_data_dir)
128 args[1].assert_called_once_with(self.test.res_dir)
129 args[2].assert_called_once_with(self.test.res_dir)
130 args[3].assert_called_with(
131 private_data_dir=private_data_dir, quiet=False,
132 artifact_dir=self.test.res_dir)
133 self.assertEqual(self.test.is_successful(), self.test.EX_OK)
134 self.assertEqual(self.test.details, {"foo": "bar"})
136 @mock.patch("ansible_runner.run",
137 return_value=munch.Munch(rc=0, stats={"foo": "bar"}))
138 @mock.patch("os.makedirs")
139 @mock.patch("os.path.exists", return_value=False)
140 @mock.patch("os.path.isdir", return_value=True)
141 def test_res_ok2(self, *args):
142 private_data_dir = "titi"
145 private_data_dir=private_data_dir, quiet=True,
146 artifact_dir="overridden"),
148 args[0].assert_called_once_with(private_data_dir)
149 args[1].assert_called_once_with(self.test.res_dir)
150 args[2].assert_called_once_with(self.test.res_dir)
151 args[3].assert_called_with(
152 private_data_dir=private_data_dir, quiet=True,
153 artifact_dir=self.test.res_dir)
154 self.assertEqual(self.test.is_successful(), self.test.EX_OK)
155 self.assertEqual(self.test.details, {"foo": "bar"})
157 @mock.patch("ansible_runner.run",
158 return_value=munch.Munch(rc=0, stats={"foo": "bar"}))
159 @mock.patch("os.makedirs")
160 @mock.patch("os.path.exists", return_value=False)
161 @mock.patch("os.path.isdir", return_value=True)
162 def test_res_ok3(self, *args):
163 private_data_dir = "titi"
166 private_data_dir=private_data_dir, artifact_dir="overridden"),
168 args[0].assert_called_once_with(private_data_dir)
169 args[1].assert_called_once_with(self.test.res_dir)
170 args[2].assert_called_once_with(self.test.res_dir)
171 args[3].assert_called_with(
172 private_data_dir=private_data_dir, quiet=True,
173 artifact_dir=self.test.res_dir)
174 self.assertEqual(self.test.is_successful(), self.test.EX_OK)
175 self.assertEqual(self.test.details, {"foo": "bar"})
177 @mock.patch("ansible_runner.run",
178 return_value=munch.Munch(rc=1, stats={"foo": "bar"}))
179 @mock.patch("os.makedirs")
180 @mock.patch("os.path.exists", return_value=False)
181 @mock.patch("os.path.isdir", return_value=True)
182 def test_res_ko(self, *args):
183 private_data_dir = "titi"
186 private_data_dir=private_data_dir, artifact_dir="overridden"),
188 args[0].assert_called_once_with(private_data_dir)
189 args[1].assert_called_once_with(self.test.res_dir)
190 args[2].assert_called_once_with(self.test.res_dir)
191 args[3].assert_called_with(
192 private_data_dir=private_data_dir, quiet=True,
193 artifact_dir=self.test.res_dir)
194 self.assertEqual(self.test.is_successful(),
195 self.test.EX_TESTCASE_FAILED)
196 self.assertEqual(self.test.details, {"foo": "bar"})
199 if __name__ == "__main__":
200 logging.disable(logging.CRITICAL)
201 unittest.main(verbosity=2)