def setUp(self): """Create test case setup.""" self.cred = Credential( name='cred1', username='******', password='******', become_password=None, ssh_keyfile=None) self.cred.save() options = SourceOptions(disable_ssl=True) options.save() self.source = Source( name='source1', port=22, hosts='["1.2.3.4"]') self.source.options = options self.source.save() self.source.credentials.add(self.cred) 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 = JobConnectionResult() self.conn_results.save() self.scan_job.connection_results = self.conn_results self.scan_job.save()
def setUp(self): """Create test case setup.""" self.cred = Credential(name='cred1', cred_type=Credential.SATELLITE_CRED_TYPE, username='******', password='******', become_password=None, become_method=None, become_user=None, ssh_keyfile=None) self.cred.save() self.source = Source(name='source1', port=443, 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_INSPECT) self.api = SatelliteFive(self.scan_job, self.scan_task) connection_results = TaskConnectionResult() connection_results.save() self.api.connect_scan_task.connection_result = connection_results self.api.connect_scan_task.connection_result.save() sys_result = SystemConnectionResult( name='sys1_1', status=SystemInspectionResult.SUCCESS) sys_result.save() self.api.connect_scan_task.connection_result.systems.add(sys_result) self.api.connect_scan_task.connection_result.save() self.api.connect_scan_task.save()
class ScanTaskTest(TestCase): """Test the basic ScanJob infrastructure.""" def setUp(self): """Create test setup.""" self.cred = Credential.objects.create(name='cred1', username='******', password='******', sudo_password=None, ssh_keyfile=None) self.cred_for_upload = self.cred.id self.source = Source(name='source1', source_type='network', port=22) self.source.save() self.source.credentials.add(self.cred) def test_successful_create(self): """Create a scan task and serialize it.""" task = ScanTask.objects.create(source=self.source, scan_type=ScanTask.SCAN_TYPE_CONNECT, status=ScanTask.PENDING) serializer = ScanTaskSerializer(task) json_task = serializer.data self.assertEqual( { 'source': 1, 'scan_type': ScanTask.SCAN_TYPE_CONNECT, 'status': 'pending' }, json_task)
def setUp(self): """Create test setup.""" management.call_command('flush', '--no-input') self.cred = Credential.objects.create( name='cred1', username='******', password='******', become_password=None, ssh_keyfile=None) self.cred_for_upload = self.cred.id self.source = Source( name='source1', source_type='network', port=22) self.source.save() self.source.credentials.add(self.cred) # Create scan configuration scan = Scan(name='scan_name', scan_type=ScanTask.SCAN_TYPE_CONNECT) scan.save() # Add source to scan scan.sources.add(self.source) # Create Job self.scan_job = ScanJob(scan=scan) self.scan_job.save()
def setUp(self): """Create test setup.""" self.cred = Credential.objects.create( name='cred1', username='******', password='******', become_password=None, ssh_keyfile=None) self.cred_for_upload = self.cred.id self.source = Source( name='source1', source_type='network', port=22) self.source.save() self.source.credentials.add(self.cred) self.connect_scan = Scan(name='connect_test', scan_type=ScanTask.SCAN_TYPE_CONNECT) self.connect_scan.save() self.connect_scan.sources.add(self.source) self.connect_scan.save() self.inspect_scan = Scan(name='inspect_test') self.inspect_scan.save() self.inspect_scan.sources.add(self.source) self.inspect_scan.save()
def test_format_source(self): """Test the format source method.""" start = datetime.now() source = Source( name='source1', hosts=json.dumps(['1.2.3.4']), source_type='network', port=22) source.save() end = datetime.now() scan_job, scan_task = create_scan_job(source) scan_task.update_stats('', sys_count=10, sys_scanned=9, sys_failed=1) scan_job.start_time = start scan_job.end_time = end scan_job.status = ScanTask.COMPLETED scan_job.save() serializer = SourceSerializer(source) json_source = serializer.data out = format_source(json_source) expected = {'id': 1, 'name': 'source1', 'source_type': 'network', 'port': 22, 'hosts': ['1.2.3.4'], 'connection': {'id': 1, 'start_time': start, 'end_time': end, 'status': 'completed', 'systems_count': 10, 'systems_scanned': 9, 'systems_failed': 1}} self.assertEqual(out, expected)
def setUp(self): """Create test case setup.""" self.cred = Credential(name='cred1', cred_type=Credential.SATELLITE_CRED_TYPE, username='******', password='******', become_password=None, become_method=None, become_user=None, ssh_keyfile=None) self.cred.save() self.source = Source(name='source1', port=443, 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=1) 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.conn_result = TaskConnectionResult(scan_task=self.scan_task, source=self.source) self.conn_result.save()
def _generate_sources(self): for i in range(10): lat = random.randint(-90, 90) + round(random.random(), 6) lng = random.randint(-180, 180) + round(random.random(), 6) source_type = random.choice(["surface", "ground", "frozen", "other"]) source_health = random.randint(0, 100) pathogen_pollution = random.randint(0,100) inorganic_pollution = random.randint(0,100) organic_pollution = random.randint(0,100) macroscopic_pollution = random.randint(0,100) thermal_pollution = random.randint(0,100) climate_condition = random.randint(0,100) depletion_risk = random.randint(0,100) stress = random.randint(0,100) new_source = Source( author = random.choice(IzumiUser.objects.all()), date_created = timezone.now(), last_updated = timezone.now(), latitude=lat, longitude=lng, source_type=source_type, pathogen_pollution = pathogen_pollution, inorganic_pollution = inorganic_pollution, organic_pollution = organic_pollution, macroscopic_pollution = macroscopic_pollution, thermal_pollution = thermal_pollution, climate_condition = climate_condition, depletion_risk = depletion_risk, stress = stress ) new_source.save()
def test_scan_with_options(self, mock_run): """Setup second scan with scan and source options.""" # setup source with paramiko option for scan source_options = SourceOptions() source_options.save() self.source = Source(name='source2', port=22, options=source_options, hosts='["1.2.3.4"]') self.source.save() self.source.credentials.add(self.cred) # setup scan with options extended = ExtendedProductSearchOptions() extended.save() scan_options = ScanOptions(enabled_extended_product_search=extended) scan_options.save() self.scan_job, self.scan_task = create_scan_job( self.source, ScanTask.SCAN_TYPE_INSPECT, 'scan2', scan_options=scan_options) # run scan scanner = InspectTaskRunner(self.scan_job, self.scan_task) scanner.connect_scan_task = self.connect_scan_task scanner._inspect_scan(self.host_list) mock_run.assert_called_with(ANY)
def setUp(self): """Create test case setup.""" self.cred = Credential( name='cred1', cred_type=Credential.SATELLITE_CRED_TYPE, username='******', password='******', become_password=None, become_method=None, become_user=None, ssh_keyfile=None) self.cred.save() self.source = Source( name='source1', port=443, hosts='["1.2.3.4"]') self.source.save() self.source.credentials.add(self.cred) self.options = SourceOptions(ssl_cert_verify=False) self.options.save() self.source.options = self.options self.source.save() self.scan_job, self.scan_task = create_scan_job( self.source, scan_type=ScanTask.SCAN_TYPE_CONNECT)
def setUp(self): """Create test case setup.""" self.cred = Credential(name='cred1', username='******', password='******', sudo_password='******', ssh_keyfile='keyfile') 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(source=self.source, scan_type=ScanTask.SCAN_TYPE_CONNECT) self.scan_task.systems_failed = 0 self.scan_task.save() self.scan_job = ScanJob(scan_type=ScanTask.SCAN_TYPE_CONNECT) self.scan_job.save() self.scan_job.sources.add(self.source) self.scan_job.tasks.add(self.scan_task) scan_options = ScanOptions() scan_options.save() self.scan_job.options = scan_options self.scan_job.save() self.conn_results = ConnectionResults(scan_job=self.scan_job) self.conn_results.save()
def setUp(self): """Create test case setup.""" self.cred = Credential( name='cred1', cred_type=Credential.SATELLITE_CRED_TYPE, username='******', password='******', become_password=None, become_method=None, become_user=None, ssh_keyfile=None) self.cred.save() self.source = Source( name='source1', port=443, 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_INSPECT) self.api = SatelliteFive(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()
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)
class SatelliteFactoryTest(TestCase): """Tests Satellite factory functions.""" def setUp(self): """Create test case setup.""" self.cred = Credential(name='cred1', cred_type=Credential.SATELLITE_CRED_TYPE, username='******', password='******', become_password=None, become_method=None, become_user=None, ssh_keyfile=None) self.cred.save() self.source = Source(name='source1', port=443, 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, scan_type=ScanTask.SCAN_TYPE_CONNECT) def tearDown(self): """Cleanup test case setup.""" pass def test_create_sat_none(self): """Test the method to fail to create a Sat interface.""" satellite_version = None api_version = 1 api = create(satellite_version, api_version, self.scan_task) self.assertEqual(api, None) def test_create_sat5(self): """Test the method to create a Sat 5 interface.""" satellite_version = SATELLITE_VERSION_5 api_version = 1 api = create(satellite_version, api_version, self.scan_task) self.assertEqual(api.__class__, SatelliteFive) def test_create_sat6_v1(self): """Test the method to create a Sat 6 interface.""" satellite_version = SATELLITE_VERSION_6 api_version = 1 api = create(satellite_version, api_version, self.scan_task) self.assertEqual(api.__class__, SatelliteSixV1) def test_create_sat6_v2(self): """Test the method to create a Sat 6 interface.""" satellite_version = SATELLITE_VERSION_6 api_version = 2 api = create(satellite_version, api_version, self.scan_task) self.assertEqual(api.__class__, SatelliteSixV2) def test_create_sat6_unknown(self): """Test the method to create a Sat 6 interface.""" satellite_version = SATELLITE_VERSION_6 api_version = 9 api = create(satellite_version, api_version, self.scan_task) self.assertEqual(api, None)
def setUp(self): """Create test case setup.""" self.cred = Credential( name='cred1', username='******', password='******', ssh_keyfile=None, become_method=None, become_user=None, become_password=None) self.cred.save() hc_serializer = CredentialSerializer(self.cred) self.cred_data = hc_serializer.data self.source = Source( name='source1', port=22, hosts='["1.2.3.4"]') self.source.save() self.source.credentials.add(self.cred) self.host_list = [('1.2.3.4', self.cred_data)] # setup scan options self.scan_job, self.scan_task = create_scan_job( self.source, ScanTask.SCAN_TYPE_INSPECT) self.connect_scan_task = self.scan_task.prerequisites.first() self.connect_scan_task.update_stats( 'TEST NETWORK CONNECT.', sys_failed=0) success_sys = SystemConnectionResult( name='1.2.3.4', credential=self.cred, status=SystemConnectionResult.SUCCESS) success_sys.save() failed_sys = SystemConnectionResult( name='1.1.1.2', status=SystemConnectionResult.FAILED) failed_sys.save() conn_result = self.connect_scan_task.connection_result conn_result.systems.add(success_sys) conn_result.systems.add(failed_sys) conn_result.save() self.connect_scan_task.update_stats( 'TEST_VC.', sys_count=2, sys_failed=1, sys_scanned=1) self.connect_scan_task.complete() self.scan_task.update_stats( 'TEST NETWORK INSPECT.', sys_failed=0) self.fact_endpoint = 'http://testserver' + reverse('facts-list') self.scan_job.save() scan_data_log.disable_log_for_test()
def setUp(self): """Create test case setup.""" self.cred = Credential(name='cred1', username='******', password='******', ssh_keyfile=None, become_method=None, become_user=None, become_password=None) self.cred.save() hc_serializer = CredentialSerializer(self.cred) self.cred_data = hc_serializer.data # setup source for scan self.source = Source(name='source1', port=22, hosts='["1.2.3.4"]') self.source.save() self.source.credentials.add(self.cred) self.host_list = [('1.2.3.4', self.cred_data)] self.scan_job, self.scan_task = create_scan_job( self.source, ScanTask.SCAN_TYPE_INSPECT) self.connect_scan_task = self.scan_task.prerequisites.first() self.connect_scan_task.update_stats('TEST NETWORK CONNECT.', sys_failed=0) conn_result = self.connect_scan_task.connection_result success_sys = SystemConnectionResult( name='1.2.3.4', credential=self.cred, status=SystemConnectionResult.SUCCESS, task_connection_result=conn_result) success_sys.save() failed_sys = SystemConnectionResult( name='1.1.1.2', status=SystemConnectionResult.FAILED, task_connection_result=conn_result) failed_sys.save() conn_result.save() self.connect_scan_task.update_stats('TEST_VC.', sys_count=2, sys_failed=1, sys_scanned=1) self.connect_scan_task.complete() self.scan_task.update_stats('TEST NETWORK INSPECT.', sys_failed=0) self.fact_endpoint = 'http://testserver' + reverse('reports-list') self.scan_job.save() self.stop_states = [ ScanJob.JOB_TERMINATE_CANCEL, ScanJob.JOB_TERMINATE_PAUSE ] self.interrupt = Mock(value=ScanJob.JOB_RUN)
def test_source_name_in_metadata(self): """Test that adding facts includes source_name in metadata.""" source = Source(name='source1', source_type='network', port=22) source.save() sourcetopass = {'source_id': 1, 'source_type': 'network'} fingerprint = {'metadata': {}} result = _process_network_fact(sourcetopass, fingerprint) self.assertEqual( result['metadata']['infrastructure_type']['source_name'], 'source1')
def setUp(self): """Create test case setup.""" self.server_id = ServerInformation.create_or_retreive_server_id() self.source = Source(name='source1', hosts=json.dumps(['1.2.3.4']), source_type='network', port=22) self.source.save() scan_job, _ = create_scan_job(self.source) self.fp_task = scan_job.tasks.last() # pylint: disable=no-member self.fp_task_runner = FingerprintTaskRunner(scan_job, self.fp_task)
def save_sources(source_list): for source in source_list[u'sources']: data = { 'name' : source[r'name'], 'category' : source[u'category'], 'slug' : source[u'id'] } s = Source(**data) s.save()
def setUp(self): """Create test case setup.""" self.cred = Credential(name='cred1', cred_type=Credential.SATELLITE_CRED_TYPE, username='******', password='******') self.cred.save() self.source = Source(name='source1', port=443, hosts='["1.2.3.4"]') self.source.save() self.source.credentials.add(self.cred)
def setUp(self): """Create test setup.""" self.cred = Credential.objects.create(name='cred1', username='******', password='******', become_password=None, ssh_keyfile=None) self.cred_for_upload = self.cred.id self.source = Source(name='source1', source_type='network', port=22) self.source.save() self.source.credentials.add(self.cred)
class VCenterUtilsTest(TestCase): """Tests VCenter utils functions.""" def setUp(self): """Create test case setup.""" self.cred = Credential( name='cred1', username='******', password='******', become_password=None, ssh_keyfile=None) self.cred.save() options = SourceOptions(disable_ssl=True) options.save() self.source = Source( name='source1', port=22, hosts='["1.2.3.4"]') self.source.options = options self.source.save() self.source.credentials.add(self.cred) 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 = JobConnectionResult() self.conn_results.save() self.scan_job.connection_results = self.conn_results self.scan_job.save() def tearDown(self): """Cleanup test case setup.""" pass def test_vcenter_connect(self): """Test the connection method.""" mock_vcenter = Mock() with patch('scanner.vcenter.utils.SmartConnectNoSSL', return_value=mock_vcenter) as mock_smart_connect: vcenter = vcenter_connect(self.scan_task) self.assertEqual(mock_vcenter, vcenter) mock_smart_connect.assert_called_once_with( host=ANY, user=ANY, pwd=ANY, port=ANY)
def test_put_message(when, client): source = Source(name="test_5", environment="env_5", encoding="encoding_5") run.db.session.add(source) run.db.session.commit() assert source.id source_id = source.id message = Message(source_id=source_id, message="message_5", status="status_5") run.db.session.add(message) run.db.session.commit() assert message.id message_id = message.id res = client.put( url_for("put_message", id=message_id, _method="PUT"), json={"message": "message_5_updated"}, ) assert res.status == "200 OK" assert res.json["message"] == "message_5_updated" assert "id" in res.json and res.json["id"] assert ("created_at" in res.json and res.json["created_at"] == message.created_at.replace(tzinfo=timezone.utc).isoformat()) assert "updated_at" in res.json and res.json["updated_at"]
def setUp(self): """Create test setup.""" management.call_command('flush', '--no-input') self.cred = Credential.objects.create(name='cred1', username='******', password='******', become_password=None, ssh_keyfile=None) self.cred_for_upload = self.cred.id self.source = Source(name='source1', source_type='network', port=22) self.source.save() self.source2 = Source(name='source2', source_type='network', port=22) self.source2.save() self.source2.credentials.add(self.cred) self.concurrency = ScanOptions.get_default_forks()
def test_format_source(self): """Test the format source method.""" start = datetime.now() source = Source( name='source1', hosts=json.dumps(['1.2.3.4']), source_type='network', port=22) source.save() end = datetime.now() scan_job, scan_task = create_scan_job(source) scan_task.update_stats( '', sys_count=10, sys_scanned=9, sys_failed=1, sys_unreachable=0) scan_job.start_time = start scan_job.end_time = end scan_job.status = ScanTask.COMPLETED scan_job.save() source.most_recent_connect_scan = scan_job source.save() serializer = SourceSerializer(source) json_source = serializer.data out = format_source(json_source) # pylint: disable=line-too-long expected = {'id': 1, 'name': 'source1', 'source_type': 'network', 'port': 22, 'hosts': ['1.2.3.4'], 'connection': {'id': 1, 'start_time': start, 'end_time': end, 'systems_count': 10, 'systems_scanned': 9, 'systems_failed': 1, 'systems_unreachable': 0, 'status_details': {'job_status_message': 'Job is pending.'}, 'status': 'completed', 'source_systems_count': 10, 'source_systems_scanned': 9, 'source_systems_failed': 1, 'source_systems_unreachable': 0}} # noqa self.assertEqual(out, expected)
def setUp(self): """Create test case setup.""" self.cred = Credential( name='cred1', cred_type=Credential.SATELLITE_CRED_TYPE, username='******', password='******') self.cred.save() self.source = Source( name='source1', port=443, hosts='["1.2.3.4"]') self.source.save() self.source.credentials.add(self.cred) self.scan_task = ScanTask(scan_type=ScanTask.SCAN_TYPE_INSPECT, source=self.source, sequence_number=2, start_time=datetime.utcnow()) self.scan_task.save() self.scan_task.update_stats('TEST_SAT.', sys_scanned=0) 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.conn_result = TaskConnectionResult( scan_task=self.scan_task, source=self.source) self.conn_result.save() conn_task = ScanTask(scan_type=ScanTask.SCAN_TYPE_CONNECT, source=self.source, sequence_number=1, start_time=datetime.utcnow()) conn_task.complete() self.scan_task.prerequisites.add(conn_task) self.inspect_results = JobInspectionResult() self.inspect_results.save() self.scan_job.inspection_results = self.inspect_results self.scan_job.save()
def test_404_if_not_fingerprint_job(self): """Test report job status only returns merge jobs.""" source = Source(name='source1', hosts=json.dumps(['1.2.3.4']), source_type='network', port=22) source.save() scan_job, _ = create_scan_job(source, scan_type=ScanTask.SCAN_TYPE_INSPECT) url = '/api/v1/reports/merge/jobs/{}/'.format(scan_job.id) get_response = self.client.get(url) self.assertEqual(get_response.status_code, status.HTTP_404_NOT_FOUND) scan_job.scan_type = ScanTask.SCAN_TYPE_FINGERPRINT scan_job.save() url = '/api/v1/reports/merge/jobs/{}/'.format(scan_job.id) get_response = self.client.get(url) self.assertEqual(get_response.status_code, status.HTTP_200_OK)
def setUp(self): """Create test case setup.""" self.cred = Credential(name='cred1', username='******', password='******', become_password=None, ssh_keyfile=None) self.cred.save() options = SourceOptions(disable_ssl=True) options.save() self.source = Source(name='source1', port=22, hosts='["1.2.3.4"]') self.source.options = options self.source.save() self.source.credentials.add(self.cred) self.scan_job, self.scan_task = create_scan_job( self.source, scan_type=ScanTask.SCAN_TYPE_INSPECT)
def post_source(): source_json = request.get_json() source = Source( name=source_json.get("name"), environment=source_json.get("environment"), encoding=source_json.get("encoding"), ) db.session.add(source) db.session.commit() return source_schema.jsonify(source)