示例#1
0
 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"]),
     }
示例#2
0
    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
示例#3
0
    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
示例#4
0
    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
示例#5
0
    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
示例#6
0
    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
示例#7
0
    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"]),
        }
示例#8
0
    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"]),
        }
示例#9
0
    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"]),
        }
示例#10
0
    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
示例#11
0
 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)