def test_set_scanner_with_vendor_version():
    # arrange
    verdict = Verdict().set_malware_family("Eicar")
    # act
    verdict.set_scanner(vendor_version="1.1.1")
    # assert
    assert verdict.scanner == {"vendor_version": "1.1.1"}
def test_set_scanner_with_signature_version():
    # arrange
    verdict = Verdict().set_malware_family("Eicar")
    # act
    verdict.set_scanner(signatures_version="05-12-2019")
    # assert
    assert verdict.scanner == {"signatures_version": "05-12-2019"}
def test_set_scanner_psc_version():
    # arrange
    verdict = Verdict().set_malware_family("Eicar")
    # act
    verdict.set_scanner(polyswarmclient_version="1.1.1")
    # assert
    assert verdict.scanner == {"polyswarmclient_version": "1.1.1"}
def test_scanner_null_environemnt():
    # arrange
    verdict = Verdict().set_malware_family("Eicar")
    # act
    verdict.set_scanner(version="1.0.0",
                        polyswarmclient_version="2.0.2",
                        signatures_version="2019",
                        vendor_version="1.0.0")
    # assert
    Verdict.validate(json.loads(verdict.json()))
def test_scanner_no_vendor_version():
    # arrange
    verdict = Verdict().set_malware_family("Eicar")
    # act
    verdict.set_scanner(operating_system="windows",
                        architecture="x86",
                        version="1.0.0",
                        polyswarmclient_version="2.0.2",
                        signatures_version="2019")
    # assert
    Verdict.validate(json.loads(verdict.json()))
def test_set_scanner_arch():
    # arrange
    verdict = Verdict().set_malware_family("Eicar")
    # act
    verdict.set_scanner(architecture="x86")
    # assert
    assert verdict.scanner == {
        "environment": {
            "operating_system": None,
            "architecture": "x86"
        }
    }
def test_set_scanner_os():
    # arrange
    verdict = Verdict().set_malware_family("Eicar")
    # act
    verdict.set_scanner(operating_system="windows")
    # assert
    assert verdict.scanner == {
        "environment": {
            "operating_system": "windows",
            "architecture": None
        }
    }
def test_scanner_invalid_psc_version():
    # arrange
    verdict = Verdict().set_malware_family("Eicar")
    # assert
    with pytest.raises(ValueError):
        # act
        verdict.set_scanner(operating_system="windows",
                            architecture="x86",
                            version="1.0.0",
                            polyswarmclient_version="asdf",
                            signatures_version="2019",
                            vendor_version="1.0.0")
        Verdict.validate(json.loads(verdict.json()))