import pytest from django.core.exceptions import ImproperlyConfigured from infrasynth.files.scanner import NoOpScanner, get_scanner class TestScanner: def test_default_is_noop_and_clean(self): scanner = get_scanner() assert isinstance(scanner, NoOpScanner) assert scanner.scan(b"hello").clean is True def test_require_scan_without_scanner_raises(self, settings): settings.INFRASYNTH_FILES = { **settings.INFRASYNTH_FILES, "VIRUS_SCANNER": "noop", "REQUIRE_VIRUS_SCAN": True, } with pytest.raises(ImproperlyConfigured): NoOpScanner().scan(b"hello") def test_custom_scanner_path(self, settings): settings.INFRASYNTH_FILES = { **settings.INFRASYNTH_FILES, "VIRUS_SCANNER": "tests.test_files.test_scanner.AlwaysCleanScanner", } assert get_scanner().scan(b"x").clean is True class AlwaysCleanScanner: def scan(self, data): from infrasynth.files.scanner import ScanResult return ScanResult(clean=True, scanner="custom")