def test_audit_item_method_account_pattern_score_override(self): account_pattern_score = AccountPatternAuditScore( account_type=self.account_type.name, account_field='name', account_pattern=self.test_account.name, score=2) item_audit_score = ItemAuditScore( technology='test_index', method='check_test (AuditorTestObj)', score=5, disabled=False, account_pattern_scores=[account_pattern_score]) db.session.add(account_pattern_score) db.session.add(item_audit_score) db.session.commit() item = ChangeItem(index='test_index', account=self.test_account.name, name='item_name') auditor = AuditorTestObj(accounts=[self.test_account.name]) self.assertEqual(len(item.audit_issues), 0) auditor.items = [item] auditor.audit_objects() self.assertEqual(len(item.audit_issues), 1) self.assertEqual(item.audit_issues[0].issue, 'Test issue') self.assertEqual(item.audit_issues[0].score, 2)
def test_audit_item(self): auditor = AuditorTestObj(accounts=['test_account']) item = ChangeItem(index='test_index', account='test_account', name='item_name') self.assertEquals(len(item.audit_issues), 0) auditor.items = [item] auditor.audit_objects() self.assertEquals(len(item.audit_issues), 1) self.assertEquals(item.audit_issues[0].issue, 'Test issue') self.assertEquals(item.audit_issues[0].score, 10)
def test_audit_item(self): auditor = AuditorTestObj(accounts=['test_account']) item = ChangeItem(index='test_index', account='test_account', name='item_name') self.assertEqual(len(item.audit_issues), 0) auditor.items = [item] auditor.audit_objects() self.assertEqual(len(item.audit_issues), 1) self.assertEqual(item.audit_issues[0].issue, 'Test issue') self.assertEqual(item.audit_issues[0].score, 10)
def test_audit_item_method_disabled(self): item_audit_score = ItemAuditScore(technology='test_index', method='check_test (AuditorTestObj)', score=0, disabled=True) db.session.add(item_audit_score) db.session.commit() auditor = AuditorTestObj(accounts=['test_account']) item = ChangeItem(index='test_index', account='test_account', name='item_name') self.assertEquals(len(item.audit_issues), 0) auditor.items = [item] auditor.audit_objects() self.assertEquals(len(item.audit_issues), 0)
def test_audit_item_method_score_override(self): item_audit_score = ItemAuditScore(technology='test_index', method='check_test (AuditorTestObj)', score=5, disabled=False) db.session.add(item_audit_score) db.session.commit() item = ChangeItem(index='test_index', account=self.test_account.name, name='item_name') auditor = AuditorTestObj(accounts=[self.test_account.name]) self.assertEquals(len(item.audit_issues), 0) auditor.items = [item] auditor.audit_objects() self.assertEquals(len(item.audit_issues), 1) self.assertEquals(item.audit_issues[0].issue, 'Test issue') self.assertEquals(item.audit_issues[0].score, 5)
def test_audit_item_method_disabled(self): item_audit_score = ItemAuditScore(technology='test_index', method='check_test (AuditorTestObj)', score=0, disabled=True) db.session.add(item_audit_score) db.session.commit() auditor = AuditorTestObj(accounts=['test_account']) item = ChangeItem(index='test_index', account='test_account', name='item_name') self.assertEqual(len(item.audit_issues), 0) auditor.items = [item] auditor.audit_objects() self.assertEqual(len(item.audit_issues), 0)
def test_save_issues(self): item = Item(region="us-west-2", name="testitem", technology=self.technology, account=self.test_account) revision = ItemRevision(item=item, config={}, active=True) item_audit = ItemAudit(item=item, issue="test issue") db.session.add(item) db.session.add(revision) db.session.add(item_audit) db.session.commit() auditor = Auditor(accounts=[self.test_account.name]) auditor.index = self.technology.name auditor.i_am_singular = self.technology.name auditor.items = auditor.read_previous_items() auditor.audit_objects() try: auditor.save_issues() except AttributeError as e: self.fail("Auditor.save_issues() raised AttributeError unexpectedly: {}".format(e.message))
def test_save_issues(self): item = Item(region="us-west-2", name="testitem", technology=self.technology, account=self.test_account) revision = ItemRevision(item=item, config={}, active=True) item_audit = ItemAudit(item=item, issue="test issue") db.session.add(item) db.session.add(revision) db.session.add(item_audit) db.session.commit() auditor = Auditor(accounts=[self.test_account.name]) auditor.index = self.technology.name auditor.i_am_singular = self.technology.name auditor.items = auditor.read_previous_items() auditor.audit_objects() try: auditor.save_issues() except AttributeError as e: self.fail( "Auditor.save_issues() raised AttributeError unexpectedly: {}". format(e.message))
def test_issue_presevation(self): """ Ensure that issues are not deleted and that justifications are preserved. new issue existing issue fixed issue regressed issue Context: PR 788 """ auditor = AuditorTestObj(accounts=['test_account']) item = ChangeItem(index='test_index', account='test_account', name='item_name') self.assertEqual(len(item.audit_issues), 0) auditor.items = [item] # New Issue auditor.audit_objects() self.assertEqual(len(item.audit_issues), 1) auditor.save_issues() self.assertEqual(item.audit_issues[0].fixed, False) self.assertEqual(item.audit_issues[0].justified, False) issue = item.audit_issues[0] # Justify this new issue. from security_monkey import db for issue in ItemAudit.query.all(): issue.justified = True issue.justification = 'This is okay because...' db.session.add(issue) db.session.commit() # Existing Issue auditor.audit_objects() self.assertEqual(len(item.audit_issues), 1) auditor.save_issues() self.assertEqual(item.audit_issues[0].fixed, False) self.assertEqual(item.audit_issues[0].justified, True) # Fixed Issue item.audit_issues = [] auditor.save_issues() self.assertEqual(issue.fixed, True) self.assertEqual(issue.justified, True) # Regressed Issue auditor.audit_objects() auditor.save_issues() self.assertEqual(issue.fixed, False) self.assertEqual(issue.justified, True)
def test_issue_presevation(self): """ Ensure that issues are not deleted and that justifications are preserved. new issue existing issue fixed issue regressed issue Context: PR 788 """ auditor = AuditorTestObj(accounts=['test_account']) item = ChangeItem(index='test_index', account='test_account', name='item_name') self.assertEquals(len(item.audit_issues), 0) auditor.items = [item] # New Issue auditor.audit_objects() self.assertEquals(len(item.audit_issues), 1) auditor.save_issues() self.assertEquals(item.audit_issues[0].fixed, False) self.assertEquals(item.audit_issues[0].justified, False) issue = item.audit_issues[0] # Justify this new issue. from security_monkey import db for issue in ItemAudit.query.all(): issue.justified = True issue.justification = 'This is okay because...' db.session.add(issue) db.session.commit() # Existing Issue auditor.audit_objects() self.assertEquals(len(item.audit_issues), 1) auditor.save_issues() self.assertEquals(item.audit_issues[0].fixed, False) self.assertEquals(item.audit_issues[0].justified, True) # Fixed Issue item.audit_issues = [] auditor.save_issues() self.assertEquals(issue.fixed, True) self.assertEquals(issue.justified, True) # Regressed Issue auditor.audit_objects() auditor.save_issues() self.assertEquals(issue.fixed, False) self.assertEquals(issue.justified, True)