mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-23 17:01:35 -05:00
64 lines
1.6 KiB
Python
64 lines
1.6 KiB
Python
import io
|
|
|
|
import pytest
|
|
import requests
|
|
|
|
from notifications_utils.clients.antivirus.antivirus_client import (
|
|
AntivirusClient,
|
|
AntivirusError,
|
|
)
|
|
|
|
|
|
@pytest.fixture(scope="function")
|
|
def antivirus(app, mocker):
|
|
client = AntivirusClient()
|
|
app.config["ANTIVIRUS_API_HOST"] = "https://antivirus"
|
|
app.config["ANTIVIRUS_API_KEY"] = "test-antivirus-key"
|
|
client.init_app(app)
|
|
return client
|
|
|
|
|
|
def test_scan_document(antivirus, rmock):
|
|
document = io.BytesIO(b"filecontents")
|
|
rmock.request(
|
|
"POST",
|
|
"https://antivirus/scan",
|
|
json={"ok": True},
|
|
request_headers={
|
|
"Authorization": "Bearer test-antivirus-key",
|
|
},
|
|
status_code=200,
|
|
)
|
|
|
|
resp = antivirus.scan(document)
|
|
|
|
assert resp
|
|
assert "filecontents" in rmock.last_request.text
|
|
assert document.tell() == 0
|
|
|
|
|
|
def test_should_raise_for_status(antivirus, rmock):
|
|
with pytest.raises(AntivirusError) as excinfo:
|
|
rmock.request(
|
|
"POST",
|
|
"https://antivirus/scan",
|
|
json={"error": "Antivirus error"},
|
|
status_code=400,
|
|
)
|
|
|
|
antivirus.scan(io.BytesIO(b"document"))
|
|
|
|
assert excinfo.value.message == "Antivirus error"
|
|
assert excinfo.value.status_code == 400
|
|
|
|
|
|
def test_should_raise_for_connection_errors(antivirus, rmock):
|
|
with pytest.raises(AntivirusError) as excinfo:
|
|
rmock.request(
|
|
"POST", "https://antivirus/scan", exc=requests.exceptions.ConnectTimeout
|
|
)
|
|
antivirus.scan(io.BytesIO(b"document"))
|
|
|
|
assert excinfo.value.message == "connection error"
|
|
assert excinfo.value.status_code == 503
|