def test_confirm_dir_short_circuit_dir(self, mock_walk, mock_join, mock_confirm_path): mock_walk.return_value = [('/', ['a', 'b'], ['c', 'd'])] mock_join.side_effect = join_side_effect def confirm_path_side_effect(path, *args): if 'c' in path: return False return True mock_confirm_path.side_effect = confirm_path_side_effect idmapshift.confirm_dir('/', self.uid_maps, self.gid_maps, idmapshift.NOBODY_ID) files = ['a', 'b', 'c'] mock_walk.assert_has_calls([mock.call('/')]) mock_join_calls = [mock.call('/', x) for x in files] mock_join.assert_has_calls(mock_join_calls) args = (self.uid_map_ranges, self.gid_map_ranges, idmapshift.NOBODY_ID) confirm_path_calls = [mock.call('/', *args)] confirm_path_calls += [mock.call('/' + x, *args) for x in files] mock_confirm_path.assert_has_calls(confirm_path_calls)
def test_confirm_dir_short_circuit_root(self, mock_walk, mock_join, mock_confirm_path): mock_walk.return_value = [('/', ['a', 'b'], ['c', 'd'])] mock_join.side_effect = join_side_effect mock_confirm_path.return_value = False idmapshift.confirm_dir('/', self.uid_maps, self.gid_maps, idmapshift.NOBODY_ID) args = (self.uid_map_ranges, self.gid_map_ranges, idmapshift.NOBODY_ID) confirm_path_calls = [mock.call('/', *args)] mock_confirm_path.assert_has_calls(confirm_path_calls)
def test_confirm_dir(self, mock_walk, mock_join, mock_confirm_path): mock_walk.return_value = [('/', ['a', 'b'], ['c', 'd'])] mock_join.side_effect = join_side_effect mock_confirm_path.return_value = True idmapshift.confirm_dir('/', self.uid_maps, self.gid_maps, idmapshift.NOBODY_ID) files = ['a', 'b', 'c', 'd'] mock_walk.assert_has_calls([mock.call('/')]) mock_join_calls = [mock.call('/', x) for x in files] mock_join.assert_has_calls(mock_join_calls) args = (self.uid_map_ranges, self.gid_map_ranges, idmapshift.NOBODY_ID) confirm_path_calls = [mock.call('/', *args)] confirm_path_calls += [mock.call('/' + x, *args) for x in files] mock_confirm_path.assert_has_calls(confirm_path_calls)
def test_confirm_dir_short_circuit_file(self, mock_walk, mock_join, mock_confirm_path): mock_walk.return_value = [('/', ['a', 'b'], ['c', 'd'])] mock_join.side_effect = join_side_effect def confirm_path_side_effect(path, *args): if 'a' in path: return False return True mock_confirm_path.side_effect = confirm_path_side_effect idmapshift.confirm_dir('/', self.uid_maps, self.gid_maps, idmapshift.NOBODY_ID) mock_walk.assert_has_calls([mock.call('/')]) mock_join.assert_has_calls([mock.call('/', 'a')]) args = (self.uid_map_ranges, self.gid_map_ranges, idmapshift.NOBODY_ID) confirm_path_calls = [ mock.call('/', *args), mock.call('/' + 'a', *args) ] mock_confirm_path.assert_has_calls(confirm_path_calls)
def test_integrated_confirm_dir_unshifted(self, mock_walk, mock_join, mock_lstat): mock_walk.return_value = [('/tmp/test', ['a', 'b', 'c'], ['d']), ('/tmp/test/d', ['1', '2'], [])] mock_join.side_effect = join_side_effect def lstat(path): stats = { 't': FakeStat(0, 0), 'a': FakeStat(0, 0), 'b': FakeStat(0, 2), 'c': FakeStat(30000, 30000), 'd': FakeStat(100, 100), '1': FakeStat(0, 100), '2': FakeStat(100, 100), } return stats[path[-1]] mock_lstat.side_effect = lstat result = idmapshift.confirm_dir('/tmp/test', self.uid_maps, self.gid_maps, idmapshift.NOBODY_ID) self.assertFalse(result)