예제 #1
0
 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")
예제 #2
0
 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())
예제 #3
0
 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)
예제 #4
0
 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'])
예제 #5
0
 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)
예제 #7
0
 def test_update(self):
     bro = Bro.get_by_id(101)
     response = bro.update()
     self.assertTrue(response['status'])
예제 #8
0
 def test_install(self):
     bro = Bro.get_by_id(101)
     response = bro.install()
     self.assertTrue(response['status'])
예제 #9
0
 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'])
예제 #10
0
 def test_reload(self):
     bro = Bro.get_by_id(101)
     response = bro.reload()
     self.assertTrue(response['status'])
예제 #11
0
 def test_running(self):
     bro = Bro.get_by_id(101)
     response = bro.status()
     self.assertIn('running', response)
예제 #12
0
 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)
예제 #13
0
    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'])