Skip to content

Commit 2205436

Browse files
Joshua PowersOddBloke
authored andcommitted
tests: mock uid when running as root (canonical#113)
The query command checks the user's uid when running and takes two different code paths. As a normal user is returns fake data, that these tests were expecting. As a root user, the actual user and vendor data files are ready. LP: #1856096
1 parent f998973 commit 2205436

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

cloudinit/cmd/tests/test_query.py

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,9 @@ def test_handle_args_dumps_all_instance_data(self):
150150
instance_data=self.instance_data, list_keys=False,
151151
user_data='ud', vendor_data='vd', varname=None)
152152
with mock.patch('sys.stdout', new_callable=StringIO) as m_stdout:
153-
self.assertEqual(0, query.handle_args('anyname', args))
153+
with mock.patch('os.getuid') as m_getuid:
154+
m_getuid.return_value = 100
155+
self.assertEqual(0, query.handle_args('anyname', args))
154156
self.assertEqual(
155157
'{\n "my_var": "it worked",\n "userdata": "<%s> file:ud",\n'
156158
' "vendordata": "<%s> file:vd"\n}\n' % (
@@ -165,7 +167,9 @@ def test_handle_args_returns_top_level_varname(self):
165167
instance_data=self.instance_data, list_keys=False,
166168
user_data='ud', vendor_data='vd', varname='my_var')
167169
with mock.patch('sys.stdout', new_callable=StringIO) as m_stdout:
168-
self.assertEqual(0, query.handle_args('anyname', args))
170+
with mock.patch('os.getuid') as m_getuid:
171+
m_getuid.return_value = 100
172+
self.assertEqual(0, query.handle_args('anyname', args))
169173
self.assertEqual('it worked\n', m_stdout.getvalue())
170174

171175
def test_handle_args_returns_nested_varname(self):
@@ -177,7 +181,9 @@ def test_handle_args_returns_nested_varname(self):
177181
instance_data=self.instance_data, user_data='ud', vendor_data='vd',
178182
list_keys=False, varname='v1.key_2')
179183
with mock.patch('sys.stdout', new_callable=StringIO) as m_stdout:
180-
self.assertEqual(0, query.handle_args('anyname', args))
184+
with mock.patch('os.getuid') as m_getuid:
185+
m_getuid.return_value = 100
186+
self.assertEqual(0, query.handle_args('anyname', args))
181187
self.assertEqual('value-2\n', m_stdout.getvalue())
182188

183189
def test_handle_args_returns_standardized_vars_to_top_level_aliases(self):
@@ -206,7 +212,9 @@ def test_handle_args_returns_standardized_vars_to_top_level_aliases(self):
206212
instance_data=self.instance_data, user_data='ud', vendor_data='vd',
207213
list_keys=False, varname=None)
208214
with mock.patch('sys.stdout', new_callable=StringIO) as m_stdout:
209-
self.assertEqual(0, query.handle_args('anyname', args))
215+
with mock.patch('os.getuid') as m_getuid:
216+
m_getuid.return_value = 100
217+
self.assertEqual(0, query.handle_args('anyname', args))
210218
self.assertEqual(expected, m_stdout.getvalue())
211219

212220
def test_handle_args_list_keys_sorts_top_level_keys_when_no_varname(self):
@@ -221,7 +229,9 @@ def test_handle_args_list_keys_sorts_top_level_keys_when_no_varname(self):
221229
instance_data=self.instance_data, list_keys=True, user_data='ud',
222230
vendor_data='vd', varname=None)
223231
with mock.patch('sys.stdout', new_callable=StringIO) as m_stdout:
224-
self.assertEqual(0, query.handle_args('anyname', args))
232+
with mock.patch('os.getuid') as m_getuid:
233+
m_getuid.return_value = 100
234+
self.assertEqual(0, query.handle_args('anyname', args))
225235
self.assertEqual(expected, m_stdout.getvalue())
226236

227237
def test_handle_args_list_keys_sorts_nested_keys_when_varname(self):
@@ -236,7 +246,9 @@ def test_handle_args_list_keys_sorts_nested_keys_when_varname(self):
236246
instance_data=self.instance_data, list_keys=True,
237247
user_data='ud', vendor_data='vd', varname='v1')
238248
with mock.patch('sys.stdout', new_callable=StringIO) as m_stdout:
239-
self.assertEqual(0, query.handle_args('anyname', args))
249+
with mock.patch('os.getuid') as m_getuid:
250+
m_getuid.return_value = 100
251+
self.assertEqual(0, query.handle_args('anyname', args))
240252
self.assertEqual(expected, m_stdout.getvalue())
241253

242254
def test_handle_args_list_keys_errors_when_varname_is_not_a_dict(self):
@@ -252,7 +264,9 @@ def test_handle_args_list_keys_errors_when_varname_is_not_a_dict(self):
252264
vendor_data='vd', varname='top')
253265
with mock.patch('sys.stderr', new_callable=StringIO) as m_stderr:
254266
with mock.patch('sys.stdout', new_callable=StringIO) as m_stdout:
255-
self.assertEqual(1, query.handle_args('anyname', args))
267+
with mock.patch('os.getuid') as m_getuid:
268+
m_getuid.return_value = 100
269+
self.assertEqual(1, query.handle_args('anyname', args))
256270
self.assertEqual('', m_stdout.getvalue())
257271
self.assertIn(expected_error, m_stderr.getvalue())
258272

0 commit comments

Comments
 (0)