def test_none(self, db_request): assert views.get_verdicts(db_request) == { "verdicts": [], "check_names": set(), "classifications": set(["threat", "indeterminate", "benign"]), "confidences": set(["low", "medium", "high"]), }
def test_check_name_filter(self, db_request, check_name): for i in range(3): check = MalwareCheckFactory.create(name="check%d" % i) for _ in range(5): MalwareVerdictFactory.create(check=check) query = db_request.db.query(MalwareVerdict) if check_name: query = query.join(MalwareCheck).filter(MalwareCheck.name == check_name) query = query.order_by(MalwareVerdict.run_date.desc()) verdicts = SQLAlchemyORMPage( query, page=1, items_per_page=25, url_maker=paginate_url_factory(db_request), ) response = { "verdicts": verdicts, "check_names": set(["check0", "check1", "check2"]), "classifications": set(["threat", "indeterminate", "benign"]), "confidences": set(["low", "medium", "high"]), } db_request.GET["check_name"] = check_name assert views.get_verdicts(db_request) == response
def test_classification_filter(self, db_request, classification): check = MalwareCheckFactory.create() for c in VerdictClassification: for _ in range(5): MalwareVerdictFactory.create(check=check, classification=c) db_request.GET["classification"] = classification query = db_request.db.query(MalwareVerdict) if classification: query = query.filter(MalwareVerdict.classification == classification) query = query.order_by(MalwareVerdict.run_date.desc()) verdicts = SQLAlchemyORMPage( query, page=1, items_per_page=25, url_maker=paginate_url_factory(db_request), ) response = { "verdicts": verdicts, "check_names": set([check.name]), "classifications": set(["threat", "indeterminate", "benign"]), "confidences": set(["low", "medium", "high"]), } assert views.get_verdicts(db_request) == response
def test_manually_reviewed_filter(self, db_request, manually_reviewed): check1 = MalwareCheckFactory.create() result_verdicts = [ MalwareVerdictFactory.create( check=check1, manually_reviewed=bool(manually_reviewed) ) for _ in range(5) ] # Create other verdicts to ensure filter works properly for _ in range(10): MalwareVerdictFactory.create( check=check1, manually_reviewed=not bool(manually_reviewed) ) db_request.GET["manually_reviewed"] = str(manually_reviewed) response = { "verdicts": result_verdicts, "check_names": set([check1.name]), "classifications": set(["threat", "indeterminate", "benign"]), "confidences": set(["low", "medium", "high"]), } assert views.get_verdicts(db_request) == response
def test_confidence_filter(self, db_request, confidence): check1 = MalwareCheckFactory.create() result_verdicts, all_verdicts = [], [] for c in VerdictConfidence: verdicts = [ MalwareVerdictFactory.create(check=check1, confidence=c) for _ in range(5) ] all_verdicts.extend(verdicts) if c.value == confidence: result_verdicts = verdicts # Emptry string if not result_verdicts: result_verdicts = all_verdicts response = { "verdicts": result_verdicts, "check_names": set([check1.name]), "classifications": set(["threat", "indeterminate", "benign"]), "confidences": set(["low", "medium", "high"]), } db_request.GET["confidence"] = confidence assert views.get_verdicts(db_request) == response
def test_manually_reviewed_filter(self, db_request, manually_reviewed): check = MalwareCheckFactory.create() for _ in range(5): MalwareVerdictFactory.create( check=check, manually_reviewed=bool(manually_reviewed)) # Create other verdicts to ensure filter works properly for _ in range(10): MalwareVerdictFactory.create( check=check, manually_reviewed=not bool(manually_reviewed)) db_request.GET["manually_reviewed"] = str(manually_reviewed) query = (db_request.db.query(MalwareVerdict).filter( MalwareVerdict.manually_reviewed == bool( manually_reviewed)).order_by(MalwareVerdict.run_date.desc())) verdicts = SQLAlchemyORMPage( query, page=1, items_per_page=25, url_maker=paginate_url_factory(db_request), ) response = { "verdicts": verdicts, "check_names": set([check.name]), "classifications": set(["threat", "indeterminate", "benign"]), "confidences": set(["low", "medium", "high"]), } assert views.get_verdicts(db_request) == response
def test_some(self, db_request): check = MalwareCheckFactory.create() verdicts = [MalwareVerdictFactory.create(check=check) for _ in range(10)] assert views.get_verdicts(db_request) == { "verdicts": verdicts, "check_names": set([check.name]), "classifications": set(["threat", "indeterminate", "benign"]), "confidences": set(["low", "medium", "high"]), }
def test_some_with_multipage(self, db_request): check1 = MalwareCheckFactory.create() check2 = MalwareCheckFactory.create() verdicts = [MalwareVerdictFactory.create(check=check2) for _ in range(60)] db_request.GET["page"] = "2" assert views.get_verdicts(db_request) == { "verdicts": verdicts[25:50], "check_names": set([check1.name, check2.name]), "classifications": set(["threat", "indeterminate", "benign"]), "confidences": set(["low", "medium", "high"]), }
def test_some(self, db_request): check = MalwareCheckFactory.create() for _ in range(10): MalwareVerdictFactory.create(check=check) query = db_request.db.query(MalwareVerdict).order_by( MalwareVerdict.run_date.desc()) verdicts = SQLAlchemyORMPage( query, page=1, items_per_page=25, url_maker=paginate_url_factory(db_request), ) assert views.get_verdicts(db_request) == { "verdicts": verdicts, "check_names": set([check.name]), "classifications": set(["threat", "indeterminate", "benign"]), "confidences": set(["low", "medium", "high"]), }
def test_check_name_filter(self, db_request, check_name): result_verdicts, all_verdicts = [], [] for i in range(3): check = MalwareCheckFactory.create(name="check%d" % i) verdicts = [MalwareVerdictFactory.create(check=check) for _ in range(5)] all_verdicts.extend(verdicts) if check.name == check_name: result_verdicts = verdicts # Emptry string if not result_verdicts: result_verdicts = all_verdicts response = { "verdicts": result_verdicts, "check_names": set(["check0", "check1", "check2"]), "classifications": set(["threat", "indeterminate", "benign"]), "confidences": set(["low", "medium", "high"]), } db_request.GET["check_name"] = check_name assert views.get_verdicts(db_request) == response
def test_errors(self, db_request, invalid_param): db_request.GET[invalid_param[0]] = invalid_param[1] with pytest.raises(HTTPBadRequest): views.get_verdicts(db_request)