def test_get_object_by_path_checks_childEntity(self): """ Checks whether the function can grab from child entities """ '#arrange' pv_service = pyVmomiService(None, None) def search_child(*args, **keys): if args[0].name == pv_service.ChildEntity: return True return False class FolderMock: childEntity = None folder = Mock(spec=FolderMock()) folder.name = pv_service.ChildEntity get_folder = MagicMock(return_value=folder) pv_service.get_folder = get_folder si = create_autospec(spec=vim.ServiceInstance) si.RetrieveContent = Mock() si.content = create_autospec(spec=vim.ServiceInstanceContent()) si.content.searchIndex = Mock() si.content.searchIndex.FindChild = MagicMock(side_effect=search_child) '#act' result = pv_service.find_obj_by_path(si, '', '', '') '#assert' self.assertTrue(result)
def test_find_item_in_path_by_type_complex_path(self): """ Checks whether the function can grab object by uuid """ '#arrange' class counter: i = 0 def side_eff(*args, **kwargs): if counter.i != 1: counter.i = counter.i + 1 return 'not yet' else: counter.i = counter.i + 1 return Mock(spec=vim.Datacenter) pv_service = pyVmomiService(None, None, Mock()) si = create_autospec(spec=vim.ServiceInstance) si.RetrieveContent = Mock() si.content = create_autospec(spec=vim.ServiceInstanceContent()) si.content.searchIndex = Mock() si.content.rootFolder = Mock() si.content.searchIndex.FindChild = Mock(side_effect=side_eff) '#act' result = pv_service.find_item_in_path_by_type(si, 'test//dc/asd', vim.Datacenter) '#assert' self.assertTrue(isinstance(result, vim.Datacenter)) self.assertTrue(counter.i, 1)
def test_destroy_vm_by_uuid(self): """ Checks whether the vm found and call to be destroy """ '#arrange' pv_service = pyVmomiService(None, None, Mock()) si = create_autospec(spec=vim.ServiceInstance) si.RetrieveContent = Mock() si.content = create_autospec(spec=vim.ServiceInstanceContent()) si.content.searchIndex = Mock() pv_service.find_by_uuid = Mock(return_value=Mock(name='vm')) pv_service.destroy_vm = Mock(return_value=True) '#act' result = pv_service.destroy_vm_by_uuid( si=si, vm_uuid='thisuni-vers-ally-uniq-ueidentifier', vm_path='fake/path', logger=Mock()) '#assert' self.assertTrue(result) self.assertTrue(pv_service.find_by_uuid.called) self.assertTrue(pv_service.destroy_vm.called)
def test_get_vm_by_uuid_vm_with_path(self): """ Checks whether the function can grab object by uuid """ '#arrange' pv_service = pyVmomiService(None, None, Mock()) dc = Mock(spec=vim.Datacenter) pv_service.find_item_in_path_by_type = Mock(return_value=dc) si = create_autospec(spec=vim.ServiceInstance) si.RetrieveContent = Mock() si.content = create_autospec(spec=vim.ServiceInstanceContent()) si.content.searchIndex = Mock() si.content.searchIndex.FindByUuid = Mock( return_value='b8e4da4e-a2ff-11e5-bf7f-feff819cdc9f') '#act' result = pv_service.find_by_uuid( si, 'b8e4da4e-a2ff-11e5-bf7f-feff819cdc9f', True, 'path/path/path') '#assert' self.assertTrue(result) self.assertTrue( pv_service.find_item_in_path_by_type.called_with( si, 'path/path/path', vim.Datacenter))
def test_get_folder_deep_and_complex_path(self): """ Checks when path is deep and complex, goes through all the folder types """ '#arrange' pv_service = pyVmomiService(None, None) def find_child_mock(*args): root = args[0] if hasattr(root, pv_service.ChildEntity): for folder in root.childEntity: if folder.name == args[1]: return folder else: for folder in root: if folder.name == args[1]: return folder return None si = create_autospec(spec=vim.ServiceInstance) si.RetrieveContent = Mock() si.content = create_autospec(spec=vim.ServiceInstanceContent()) si.content.searchIndex = Mock() si.content.searchIndex.FindChild = MagicMock( side_effect=find_child_mock) first_folder = Mock(spec=[], name='first') first_folder.name = 'first' second_folder = Mock(spec=[], name='second') second_folder.name = 'second' third_folder = Mock(spec=[], name='third') third_folder.name = 'third' fourth_folder = Mock(spec=[], name='fourth') fourth_folder.name = 'fourth' fifth_folder = Mock(spec=[], name='fifth') fifth_folder.name = 'fifth' sixth_folder = Mock(spec=[], name='sixth') sixth_folder.name = 'sixth' si.content.rootFolder = Mock() si.content.rootFolder.name = 'rootFolder' si.content.rootFolder.childEntity = [first_folder, second_folder] first_folder.vmFolder = [second_folder, sixth_folder] second_folder.networkFolder = [fourth_folder, third_folder] third_folder.hostFolder = [third_folder, fourth_folder] fourth_folder.datacenterFolder = [fifth_folder] fifth_folder.datastoreFolder = [sixth_folder] '#act' result = pv_service.get_folder( si, 'first/second/third/fourth/fifth/sixth') '#assert' self.assertEqual(result, sixth_folder)
def test_get_vm_by_uuid_vm_without_uuid(self): """ Checks whether the function can grab object by uuid """ '#arrange' pv_service = pyVmomiService(None, None, Mock()) si = create_autospec(spec=vim.ServiceInstance) si.RetrieveContent = Mock() si.content = create_autospec(spec=vim.ServiceInstanceContent()) '#act' result = pv_service.find_by_uuid(si, None) '#assert' self.assertIsNone(result)
def test_get_object_by_path_no_nested_objs(self): """ Checks whether the function returns 'None' if it doesn't find an object """ '#arrange' pv_service = pyVmomiService(None, None, Mock()) get_folder = MagicMock(return_value=Mock(spec=[])) pv_service.get_folder = get_folder si = create_autospec(spec=vim.ServiceInstance) si.RetrieveContent = Mock() si.content = create_autospec(spec=vim.ServiceInstanceContent()) '#act' self.assertRaises(ValueError, pv_service.find_obj_by_path, si, '', '', '')
def test_find_item_in_path_by_type_path_None(self): """ Checks whether the function can grab object by uuid """ '#arrange' pv_service = pyVmomiService(None, None, Mock()) si = create_autospec(spec=vim.ServiceInstance) si.RetrieveContent = Mock() si.content = create_autospec(spec=vim.ServiceInstanceContent()) si.content.searchIndex = Mock() si.content.rootFolder = Mock '#act' result = pv_service.find_item_in_path_by_type(si, None, 'not none') '#assert' self.assertEqual(result, si.content.rootFolder)
def test_get_folder_deep_path(self): """ Checks when path is deep, more then two """ '#arrange' pv_service = pyVmomiService(None, None) def find_child_mock(*args): root = args[0] for folder in root.childEntity: if folder.name == args[1]: return folder return None si = create_autospec(spec=vim.ServiceInstance) si.RetrieveContent = Mock() si.content = create_autospec(spec=vim.ServiceInstanceContent()) si.content.searchIndex = Mock() si.content.searchIndex.FindChild = MagicMock( side_effect=find_child_mock) inner_folder = Mock() inner_folder.name = 'inner' inner_decoy_folder = Mock() inner_decoy_folder.name = 'decoy' inner_deep_folder = Mock() inner_deep_folder.name = 'inner_deep_folder' inner_folder.childEntity = [inner_deep_folder, inner_decoy_folder] inner_decoy_folder.childEntity = [inner_folder] si.content.rootFolder = Mock() si.content.rootFolder.childEntity = [inner_decoy_folder, inner_folder] si.content.rootFolder.name = 'rootFolder' '#act' result = pv_service.get_folder(si, 'decoy/inner/inner_deep_folder/') '#assert' self.assertEqual(result, inner_deep_folder)
def test_get_host_by_name_is_Host_type(self): """ Checks whether the function can passes host type """ '#arrange' pv_service = pyVmomiService(None, None) def find_obj_by_path_mock(*args, **kwargs): return args[3] == pv_service.Host si = create_autospec(spec=vim.ServiceInstance) si.RetrieveContent = Mock() si.content = create_autospec(spec=vim.ServiceInstanceContent()) pv_service.find_obj_by_path = Mock(side_effect=find_obj_by_path_mock) '#act' result = pv_service.find_host_by_name(si, '', '') '#assert' self.assertTrue(result)
def test_get_folder_path_empty(self): """ Checks if the receiving path is empty, the function returns root folder """ '#arrange' folder_name = 'rootFolder' pv_service = pyVmomiService(None, None) si = create_autospec(spec=vim.ServiceInstance) si.RetrieveContent = Mock() si.content = create_autospec(spec=vim.ServiceInstanceContent()) si.content.rootFolder = Mock() si.content.rootFolder.name = folder_name '#act' result = pv_service.get_folder(si, '') '#assert' self.assertEqual(result.name, folder_name)
def test_get_vm_by_uuid_vm_in_folder(self): """ Checks whether the function can grab object by uuid """ '#arrange' pv_service = pyVmomiService(None, None) def find_by_uuid_mock(*args, **kwargs): folder = args[0]['vmFolder_test'] uuid = args[1] isVM = args[2] if not isVM: return False for item in folder: if item == uuid: return True return False get_folder = MagicMock( return_value={ 'vmFolder_test': [ 'b8e4d6de-a2ff-11e5-bf7f-feff819cdc9f', 'b8e4da4e-a2ff-11e5-bf7f-feff819cdc9f' ] }) pv_service.get_folder = get_folder si = create_autospec(spec=vim.ServiceInstance) si.RetrieveContent = Mock() si.content = create_autospec(spec=vim.ServiceInstanceContent()) si.content.searchIndex = Mock() si.content.searchIndex.FindByUuid = Mock(side_effect=find_by_uuid_mock) '#act' result = pv_service.find_by_uuid( si, '', 'b8e4da4e-a2ff-11e5-bf7f-feff819cdc9f') '#assert' self.assertTrue(result)
def test_destroy_vm_by_name(self): """ Checks whether the vm found and call to be destroy """ '#arrange' pv_service = pyVmomiService(None, None) si = create_autospec(spec=vim.ServiceInstance) si.RetrieveContent = Mock() si.content = create_autospec(spec=vim.ServiceInstanceContent()) si.content.searchIndex = Mock() pv_service.find_vm_by_name = Mock(return_value=Mock(name='vm')) pv_service.destroy_vm = Mock(return_value=True) '#act' result = pv_service.destroy_vm_by_name(si, 'vm_name:name', 'fake/path') '#assert' self.assertTrue(result) self.assertTrue(pv_service.find_vm_by_name.called) self.assertTrue(pv_service.destroy_vm.called)
def test_get_object_by_path_no_folder_found(self): """ Checks if the receiving path that does not exist """ '#arrange' folder_name = 'rootFolder' pv_service = pyVmomiService(None, None, Mock()) si = create_autospec(spec=vim.ServiceInstance) si.RetrieveContent = Mock() si.content = create_autospec(spec=vim.ServiceInstanceContent()) si.content.rootFolder = Mock() si.content.rootFolder.name = folder_name pv_service.get_folder = Mock(return_value=None) '#act' self.assertRaises(ValueError, pv_service.find_obj_by_path, si, 'nothing/to/be/found', 'fake_vm', pv_service.VM) '#assert' self.assertTrue(pv_service.get_folder.called)