def test_bro(self): all_bro = Bro.get_all() bro = Bro.get_by_id(101) self.assertEqual(len(all_bro), 1) self.assertEqual(bro.name, "test_instance_bro") self.assertEqual(str(bro), "test_instance_bro : ") bro = Bro.get_by_id(199) self.assertEqual(bro, None) with self.assertRaises(IntegrityError): Bro.objects.create(name="test_instance_bro")
def test_status(self): bro = Bro.get_by_id(101) self.assertTrue(bro.status()) self.assertIn("standalone localhost", bro.status()) bro.installed = False bro.save() self.assertEqual('Not installed', bro.status())
def test_index(self): """ Index Page for an instance of Bro """ bro = Bro.get_by_id(101) response = self.client.get('/bro/' + str(bro.id)) self.assertEqual(response.status_code, 200) self.assertIn('<title>Bro</title>', str(response.content)) self.assertEqual('bro/index.html', response.templates[0].name) self.assertIn('bro', response.resolver_match.app_names) self.assertIn('function probe_index', str(response.resolver_match.func)) self.assertEqual(str(response.context['user']), 'testuser') with self.assertTemplateUsed('bro/index.html'): self.client.get('/bro/' + str(bro.id)) response = self.client.get('/bro/99') self.assertEqual(response.status_code, 404) response = self.client.get('/bro/stop/' + str(bro.id), follow=True) self.assertEqual(response.status_code, 200) self.assertIn('Probe stopped successfully', str(response.content)) response = self.client.get('/bro/stop/99') self.assertEqual(response.status_code, 404) response = self.client.get('/bro/start/' + str(bro.id), follow=True) self.assertEqual(response.status_code, 200) self.assertIn('Probe started successfully', str(response.content)) response = self.client.get('/bro/start/99') self.assertEqual(response.status_code, 404) response = self.client.get('/bro/status/' + str(bro.id), follow=True) self.assertEqual(response.status_code, 200) self.assertIn('get status successfully', str(response.content)) response = self.client.get('/bro/status/99') self.assertEqual(response.status_code, 404) response = self.client.get('/bro/restart/' + str(bro.id), follow=True) self.assertEqual(response.status_code, 200) self.assertIn('Probe restarted successfully', str(response.content)) response = self.client.get('/bro/restart/99') self.assertEqual(response.status_code, 404) response = self.client.get('/bro/reload/' + str(bro.id), follow=True) self.assertEqual(response.status_code, 200) self.assertIn('Probe reloaded successfully', str(response.content)) response = self.client.get('/bro/reload/99') self.assertEqual(response.status_code, 404) response = self.client.get('/bro/deploy-conf/' + str(bro.id), follow=True) self.assertEqual(response.status_code, 200) self.assertIn('Test configuration OK', str(response.content)) self.assertIn('Deployed configuration successfully', str(response.content)) response = self.client.get('/bro/deploy-conf/99') self.assertEqual(response.status_code, 404) response = self.client.get('/bro/deploy-rules/' + str(bro.id), follow=True) self.assertEqual(response.status_code, 200) self.assertIn('Deployed rules launched with succeed', str(response.content)) response = self.client.get('/bro/deploy-rules/99') self.assertEqual(response.status_code, 404)
def test_test_rules(self): bro = Bro.get_by_id(101) response = bro.test_rules() self.assertTrue(response['status']) signature = SignatureBro.objects.create(msg="zezezezezeze!", reference="", rule_full="test", enabled=True, created_date=self.date_now) ruleset = RuleSetBro(name="test failed") ruleset.save() ruleset.signatures.add(signature) bro.rulesets.add(ruleset) response = bro.test_rules() self.assertFalse(response['status'])
def test_intel(self): self.assertEqual(len(Intel.get_all()), 2) intel = Intel.get_by_id(1) self.assertEqual(intel.indicator, "192.168.50.110") self.assertEqual(str(intel), "Intel::ADDR-192.168.50.110") with Intel.get_tmp_dir() as tmp_dir: self.assertEqual(Intel.store(tmp_dir), tmp_dir + "intel-1.dat") self.assertEqual(Intel.deploy(Bro.get_by_id(101)), {'status': True}) Intel.import_from_csv(settings.BASE_DIR + '/bro/tests/data/test-intel.csv') self.assertEqual(len(Intel.get_all()), 4) self.assertEqual(str(Intel.get_by_id(3)), 'Intel::ADDR-10.110.56.45') Intel.get_by_id(3).delete() Intel.get_by_id(4).delete() intel = Intel.get_by_id(99) self.assertEqual(intel, None) with self.assertRaises(IntegrityError): Intel.objects.create(indicator="192.168.50.110", indicator_type="Intel::ADDR")
def test_bro(self): response = self.client.get('/admin/bro/bro/add/', follow=True) self.assertEqual(response.status_code, 200) self.assertEqual(len(Bro.get_all()), 1) response = self.client.post('/admin/bro/bro/add/', { 'name': 'test', 'secure_deployment': True, 'scheduled_rules_deployment_enabled': True, 'scheduled_rules_deployment_crontab': 4, 'scheduled_check_enabled': True, 'scheduled_check_crontab': 3, 'server': 1, 'rulesets': 101, 'configuration': 101, 'installed': True }, follow=True) self.assertEqual(response.status_code, 200) self.assertIn(' was added successfully', str(response.content)) self.assertEqual(len(Bro.get_all()), 2) response = self.client.post( '/admin/bro/bro/', { 'action': 'test_rules', '_selected_action': Bro.get_by_name('test').id }, follow=True) self.assertEqual(response.status_code, 200) self.assertIn('Test rules OK', str(response.content)) response = self.client.post('/admin/bro/scriptbro/add/', { 'rev': '0', 'rule_full': 'erererooepeoerrrr', 'name': 'fail script test', }, follow=True) self.assertEqual(response.status_code, 200) self.assertNotIn('was added successfully', str(response.content)) self.assertIn('Test script failed', str(response.content)) response = self.client.post('/admin/bro/signaturebro/add/', { 'rev': '0', 'rule_full': '1', 'sid': '666', 'msg': 'fail test', }, follow=True) self.assertEqual(response.status_code, 200) self.assertIn('was added successfully', str(response.content)) self.assertIn('Test signature failed', str(response.content)) sig = SignatureBro.get_by_msg('fail test') ruleset = RuleSetBro.get_by_id(101) ruleset.signatures.add(sig) ruleset.save() response = self.client.post( '/admin/bro/bro/', { 'action': 'test_rules', '_selected_action': Bro.get_by_name('test').id }, follow=True) self.assertEqual(response.status_code, 200) self.assertIn('Test rules failed', str(response.content)) self.assertTrue(Bro.get_by_name('test').installed) response = self.client.post( '/admin/bro/bro/' + str(Bro.get_by_name('test').id) + '/change/', { 'name': 'test', 'secure_deployment': True, 'scheduled_rules_deployment_enabled': True, 'scheduled_rules_deployment_crontab': 4, 'scheduled_check_enabled': True, 'scheduled_check_crontab': 3, 'server': 1, 'rulesets': 101, 'configuration': 101, 'installed': False }, follow=True) self.assertEqual(response.status_code, 200) self.assertIn(' was changed successfully', str(response.content)) self.assertFalse(Bro.get_by_name('test').installed) response = self.client.post( '/admin/bro/bro/', { 'action': 'delete_selected', '_selected_action': Bro.get_by_name('test').id }, follow=True) self.assertEqual(response.status_code, 200) self.assertIn('Are you sure you want to delete the selected ', str(response.content)) response = self.client.post( '/admin/bro/bro/', { 'action': 'delete_selected', '_selected_action': Bro.get_by_name('test').id, 'post': 'yes' }, follow=True) self.assertEqual(response.status_code, 200) self.assertIn('Successfully deleted 1 ', str(response.content)) self.assertEqual(len(Bro.get_all()), 1) response = self.client.post('/admin/bro/bro/add/', { 'name': 'test', 'secure_deployment': True, 'scheduled_rules_deployment_enabled': True, 'scheduled_rules_deployment_crontab': 4, 'scheduled_check_enabled': True, 'scheduled_check_crontab': 3, 'server': 1, 'rulesets': 101, 'configuration': 101, 'installed': True }, follow=True) self.assertEqual(response.status_code, 200) self.assertIn(' was added successfully', str(response.content)) response = self.client.get( '/admin/bro/bro/' + str(Bro.get_by_name('test').id) + '/delete/', follow=True) self.assertEqual(response.status_code, 200) self.assertIn('Are you sure ', str(response.content)) response = self.client.post( '/admin/bro/bro/' + str(Bro.get_by_name('test').id) + '/delete/', {'post': 'yes'}, follow=True) self.assertEqual(response.status_code, 200) self.assertIn('was deleted successfully', str(response.content)) self.assertEqual(len(Bro.get_all()), 1)
def test_update(self): bro = Bro.get_by_id(101) response = bro.update() self.assertTrue(response['status'])
def test_install(self): bro = Bro.get_by_id(101) response = bro.install() self.assertTrue(response['status'])
def test_deploy_rules(self): bro = Bro.get_by_id(101) response = bro.deploy_rules() self.assertTrue(response['status']) response = bro.reload() self.assertTrue(response['status'])
def test_reload(self): bro = Bro.get_by_id(101) response = bro.reload() self.assertTrue(response['status'])
def test_running(self): bro = Bro.get_by_id(101) response = bro.status() self.assertIn('running', response)
def test_test(self): bro = Bro.get_by_id(101) response = bro.server.test() self.assertTrue(response) response = bro.server.test_become() self.assertTrue(response)
def test_bro(self): response = self.client.get('/api/v1/bro/bro/') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data['count'], 1) data = {'name': 'test', 'secure_deployment': True, 'scheduled_rules_deployment_enabled': True, 'scheduled_rules_deployment_crontab': 4, 'scheduled_check_enabled': True, 'scheduled_check_crontab': 3, 'server': 1, 'rulesets': [101, ], 'configuration': 101, 'installed': True} data_put = {'name': 'test', 'secure_deployment': True, 'server': 1, 'rulesets': [101, ], 'configuration': 101, 'installed': False} data_patch = {'installed': True} response = self.client.post('/api/v1/bro/bro/', data) self.assertEqual(response.status_code, status.HTTP_201_CREATED) response = self.client.post('/api/v1/bro/bro/', {'name': 'test'}) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) response = self.client.get('/api/v1/bro/bro/') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data['count'], 2) self.assertTrue(PeriodicTask.objects.get(name="test_deploy_rules_" + str(CrontabSchedule.objects.get(id=4)))) self.assertTrue(PeriodicTask.objects.get(name="test_check_task")) response = self.client.put('/api/v1/bro/bro/' + str(Bro.get_by_name('test').id) + '/', data_put) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertFalse(Bro.get_by_name('test').installed) response = self.client.put('/api/v1/bro/bro/' + str(Bro.get_by_name('test').id) + '/', {'name': 'test'}) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) response = self.client.patch('/api/v1/bro/bro/' + str(Bro.get_by_name('test').id) + '/', {'configuration': 'test'}) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) response = self.client.patch('/api/v1/bro/bro/' + str(Bro.get_by_name('test').id) + '/', data_patch) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(Bro.get_by_name('test').installed) response = self.client.patch('/api/v1/bro/bro/' + str(Bro.get_by_name('test').id) + '/', {'scheduled_rules_deployment_enabled': False}) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(Bro.get_by_name('test').scheduled_rules_deployment_enabled) response = self.client.delete('/api/v1/bro/bro/' + str(Bro.get_by_name('test').id) + '/') self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) response = self.client.get('/api/v1/bro/bro/') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data['count'], 1) with self.assertRaises(ObjectDoesNotExist): PeriodicTask.objects.get(name="test_deploy_rules_" + str(CrontabSchedule.objects.get(id=4))) with self.assertRaises(ObjectDoesNotExist): PeriodicTask.objects.get(name="test_check_task") response = self.client.get('/api/v1/bro/bro/101/test_rules/') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(response.data['status']) response = self.client.get('/api/v1/bro/bro/101/start/') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(response.data['status']) response = self.client.get('/api/v1/bro/bro/101/stop/') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(response.data['status']) response = self.client.get('/api/v1/bro/bro/101/restart/') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(response.data['status']) response = self.client.get('/api/v1/bro/bro/101/reload/') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(response.data['status']) response = self.client.get('/api/v1/bro/bro/101/status/') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(response.data['status']) response = self.client.get('/api/v1/bro/bro/101/uptime/') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(response.data['uptime']) response = self.client.get('/api/v1/bro/bro/101/deploy_rules/') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(response.data['status']) response = self.client.get('/api/v1/bro/bro/101/deploy_conf/') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(response.data['status'])