Skip to content

Commit

Permalink
Test clamscan output parse functions
Browse files Browse the repository at this point in the history
  • Loading branch information
sevein committed Sep 18, 2024
1 parent 6c90687 commit aabcf12
Showing 1 changed file with 47 additions and 0 deletions.
47 changes: 47 additions & 0 deletions tests/unit/test_unit_scanner.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
from errno import EPIPE

import pytest

from clamav_client.clamd import BufferTooLongError
from clamav_client.clamd import CommunicationError
from clamav_client.scanner import ClamscanScanner
from clamav_client.scanner import Scanner
from clamav_client.scanner import ScannerInfo
from clamav_client.scanner import ScanResult


Expand Down Expand Up @@ -49,3 +54,45 @@ def test_scan_result_passed() -> None:
ScanResult(filename="", state=None, details=None, err=ValueError()).passed
is False
)


def test_parse_version() -> None:
scanner: Scanner = ClamscanScanner({})
parse = scanner._parse_version

parts = parse("ClamAV 0.103.12/27401/Tue Sep 17 10:31:21 2024")
assert parts == ScannerInfo(
name="ClamAV (clamscan)",
version="ClamAV 0.103.12",
virus_definitions="27401/Tue Sep 17 10:31:21 2024",
)

parts = parse("ClamAV 0.103.12")
assert parts == ScannerInfo(
name="ClamAV (clamscan)", version="ClamAV 0.103.12", virus_definitions=None
)

with pytest.raises(ValueError, match="Cannot extract scanner information."):
parse("Python 3.12.5")


def test_clamscan_scanner_parse_error() -> None:
scanner = ClamscanScanner({})
parse = scanner._parse_error

assert parse(None) is None
assert parse(1) is None
assert parse(b"\xc3\x28") is None # Invalid UTF-8 byte sequence.
assert parse(b"error") == "error"


def test_clamscan_scanner_parse_found() -> None:
scanner = ClamscanScanner({})
parse = scanner._parse_found

assert parse(None) is None
assert parse(1) is None
assert parse(b"\xc3\x28") is None # Invalid UTF-8 byte sequence.
assert parse(b"unmatched") is None
assert parse(b": FOUND") is None
assert parse(b"[...]: file.txt FOUND") == "file.txt"

0 comments on commit aabcf12

Please sign in to comment.