def setUp(self): """Create test case setup.""" self.cred = Credential( name='cred1', username='******', password='******', become_password=None, ssh_keyfile=None) self.cred.save() self.source = Source( name='source1', port=22, hosts='["1.2.3.4"]') self.source.save() self.source.credentials.add(self.cred) self.scan_task = ScanTask(scan_type=ScanTask.SCAN_TYPE_CONNECT, source=self.source, sequence_number=2, start_time=datetime.utcnow()) self.scan_task.save() self.scan_job = ScanJob(scan_type=ScanTask.SCAN_TYPE_CONNECT) self.scan_job.save() self.scan_job.tasks.add(self.scan_task) self.conn_results = JobConnectionResult() self.conn_results.save() self.scan_job.connection_results = self.conn_results self.scan_job.save() self.runner = ConnectTaskRunner(scan_job=self.scan_job, scan_task=self.scan_task)
def setUp(self): """Create test case setup.""" self.cred = Credential(name='cred1', username='******', password='******', sudo_password=None, ssh_keyfile=None) self.cred.save() self.source = Source(name='source1', port=22) self.source.save() self.source.credentials.add(self.cred) self.host = HostRange(host_range='1.2.3.4', source_id=self.source.id) self.host.save() self.source.hosts.add(self.host) self.scan_task = ScanTask(scan_type=ScanTask.SCAN_TYPE_INSPECT, source=self.source, sequence_number=2) self.scan_task.save() self.scan_job = ScanJob(scan_type=ScanTask.SCAN_TYPE_INSPECT) self.scan_job.save() self.scan_job.tasks.add(self.scan_task) self.conn_results = ConnectionResults(scan_job=self.scan_job) self.conn_results.save() self.runner = ConnectTaskRunner(scan_job=self.scan_job, scan_task=self.scan_task, conn_results=self.conn_results)
def setUp(self): """Create test case setup.""" self.cred = Credential(name='cred1', username='******', password='******', become_password=None, ssh_keyfile=None) self.cred.save() self.source = Source(name='source1', port=22, hosts='["1.2.3.4"]') self.source.save() self.source.credentials.add(self.cred) self.scan_job, self.scan_task = create_scan_job( self.source, ScanTask.SCAN_TYPE_CONNECT) # Create runner self.runner = ConnectTaskRunner(scan_job=self.scan_job, scan_task=self.scan_task)
class ConnectTaskRunnerTest(TestCase): """Tests against the ConnectTaskRunner class and functions.""" runner = None def setUp(self): """Create test case setup.""" self.cred = Credential(name='cred1', username='******', password='******', become_password=None, ssh_keyfile=None) self.cred.save() self.source = Source(name='source1', port=22, hosts='["1.2.3.4"]') self.source.save() self.source.credentials.add(self.cred) self.scan_job, self.scan_task = create_scan_job( self.source, ScanTask.SCAN_TYPE_CONNECT) # Create runner self.runner = ConnectTaskRunner(scan_job=self.scan_job, scan_task=self.scan_task) def tearDown(self): """Cleanup test case setup.""" pass def test_store_connect_data(self): """Test the connection data method.""" vm_names = ['vm1', 'vm2'] # pylint: disable=protected-access self.runner._store_connect_data(vm_names, self.cred, self.source) self.assertEqual( len(self.scan_job.connection_results.task_results.all()), 1) def test_get_vm_names(self): """Test the get vm names method.""" children = [] for ident in range(1, 3): name = 'vm' + str(ident) config = Mock() config.name = name summary = Mock() summary.config = config child = Mock() child.summary = summary children.append(child) vm_container_view = Mock(view=children) vm_names = get_vm_names(vm_container_view) self.assertTrue(isinstance(vm_names, list)) self.assertEqual(vm_names, ['vm1', 'vm2']) def test_get_vm_container(self): """Get the VM container.""" vcenter = Mock() content = Mock() content.rootFolder = Mock() view_manager = Mock() container_view = Mock() view_manager.CreateContainerView = Mock(return_value=container_view) content.viewManager = view_manager vcenter.RetrieveContent = Mock(return_value=content) c_view = get_vm_container(vcenter) self.assertEqual(c_view, container_view) def test_connect(self): """Test the VCenter connect method.""" with patch('scanner.vcenter.connect.vcenter_connect', return_value=Mock()) as mock_vcenter_connect: with patch('scanner.vcenter.connect.get_vm_container', return_value=Mock()) as mock_get_vm_container: with patch('scanner.vcenter.connect.get_vm_names', return_value=['vm1', 'vm2']) as mock_names: vm_names = self.runner.connect() self.assertEqual(vm_names, set(['vm1', 'vm2'])) mock_vcenter_connect.assert_called_once_with(ANY) mock_get_vm_container.assert_called_once_with(ANY) mock_names.assert_called_once_with(ANY) def test_get_result_none(self): """Test get result method when no results exist.""" results = self.scan_task.get_result().systems.first() self.assertEqual(results, None) def test_get_result(self): """Test get result method when results exist.""" conn_result = self.scan_task.connection_result results = self.scan_task.get_result() self.assertEqual(results, conn_result) def test_failed_run(self): """Test the run method.""" with patch.object(ConnectTaskRunner, 'connect', side_effect=invalid_login) as mock_connect: status = self.runner.run() self.assertEqual(ScanTask.FAILED, status[1]) mock_connect.assert_called_once_with() def test_unreachable_run(self): """Test the run method with unreachable.""" with patch.object(ConnectTaskRunner, 'connect', side_effect=unreachable_host) as mock_connect: status = self.runner.run() self.assertEqual(ScanTask.FAILED, status[1]) mock_connect.assert_called_once_with() def test_run(self): """Test the run method.""" with patch.object(ConnectTaskRunner, 'connect', return_value=['vm1', 'vm2']) as mock_connect: status = self.runner.run() self.assertEqual(ScanTask.COMPLETED, status[1]) mock_connect.assert_called_once_with()
class ConnectTaskRunnerTest(TestCase): """Tests against the ConnectTaskRunner class and functions.""" runner = None def setUp(self): """Create test case setup.""" self.cred = Credential( name='cred1', username='******', password='******', become_password=None, ssh_keyfile=None) self.cred.save() self.source = Source( name='source1', port=22, hosts='["1.2.3.4"]') self.source.save() self.source.credentials.add(self.cred) self.scan_job, self.scan_task = create_scan_job( self.source, ScanTask.SCAN_TYPE_CONNECT) # Create runner self.runner = ConnectTaskRunner(scan_job=self.scan_job, scan_task=self.scan_task) def tearDown(self): """Cleanup test case setup.""" pass def test_store_connect_data(self): """Test the connection data method.""" vm_names = ['vm1', 'vm2'] # pylint: disable=protected-access self.runner._store_connect_data(vm_names, self.cred, self.source) self.assertEqual( len(self.scan_job.connection_results.task_results.all()), 1) def test_get_vm_names(self): """Test the get vm names method.""" objects = [ vim.ObjectContent( obj=vim.VirtualMachine('vm-1'), propSet=[vim.DynamicProperty(name='name', val='vm1')] ), vim.ObjectContent( obj=vim.VirtualMachine('vm-2'), propSet=[vim.DynamicProperty(name='name', val='vm2')] ), ] content = Mock() content.rootFolder = vim.Folder('group-d1') content.propertyCollector.RetrievePropertiesEx(ANY).token = None content.propertyCollector.RetrievePropertiesEx(ANY).objects = objects vm_names = get_vm_names(content) self.assertTrue(isinstance(vm_names, list)) self.assertEqual(vm_names, ['vm1', 'vm2']) def test_connect(self): """Test the VCenter connect method.""" with patch('scanner.vcenter.connect.vcenter_connect', return_value=Mock()) as mock_vcenter_connect: with patch('scanner.vcenter.connect.get_vm_names', return_value=['vm1', 'vm2', 'vm2']) as mock_names: vm_names = self.runner.connect() self.assertEqual(vm_names, ['vm1', 'vm2', 'vm2']) mock_vcenter_connect.assert_called_once_with(ANY) mock_names.assert_called_once_with(ANY) def test_get_result_none(self): """Test get result method when no results exist.""" results = self.scan_task.get_result().systems.first() self.assertEqual(results, None) def test_get_result(self): """Test get result method when results exist.""" conn_result = self.scan_task.connection_result results = self.scan_task.get_result() self.assertEqual(results, conn_result) def test_failed_run(self): """Test the run method.""" with patch.object(ConnectTaskRunner, 'connect', side_effect=invalid_login) as mock_connect: status = self.runner.run(Value('i', ScanJob.JOB_RUN)) self.assertEqual(ScanTask.FAILED, status[1]) mock_connect.assert_called_once_with() def test_unreachable_run(self): """Test the run method with unreachable.""" with patch.object(ConnectTaskRunner, 'connect', side_effect=unreachable_host) as mock_connect: status = self.runner.run(Value('i', ScanJob.JOB_RUN)) self.assertEqual(ScanTask.FAILED, status[1]) mock_connect.assert_called_once_with() def test_run(self): """Test the run method.""" with patch.object(ConnectTaskRunner, 'connect', return_value=['vm1', 'vm2']) as mock_connect: status = self.runner.run(Value('i', ScanJob.JOB_RUN)) self.assertEqual(ScanTask.COMPLETED, status[1]) mock_connect.assert_called_once_with() def test_cancel(self): """Test the run method with cancel.""" status = self.runner.run(Value('i', ScanJob.JOB_TERMINATE_CANCEL)) self.assertEqual(ScanTask.CANCELED, status[1]) def test_pause(self): """Test the run method with pause.""" status = self.runner.run(Value('i', ScanJob.JOB_TERMINATE_PAUSE)) self.assertEqual(ScanTask.PAUSED, status[1])