Import the wilm agent store, WINC adoption work and batches CLI, with four fixes
This commit is contained in:
57
tests/test_plugins/test_endpoints_agentstore.py
Normal file
57
tests/test_plugins/test_endpoints_agentstore.py
Normal file
@@ -0,0 +1,57 @@
|
||||
"""Unit tests for the versioned agent binary store helpers.
|
||||
|
||||
Covers the pure, context-free helpers: version validation, PE magic and PE
|
||||
file-version parsing. The staging/retention paths that touch the Flask instance
|
||||
directory are exercised through the API tests; here we keep to the logic that
|
||||
needs no app context.
|
||||
|
||||
The PE version parser walks the resource directory to the outer image's
|
||||
RT_VERSION resource (not the first VS_FIXEDFILEINFO signature in the bytes),
|
||||
because a self-contained single-file .NET exe bundles many framework assemblies
|
||||
that each carry their own version block. Building a full PE with a resource
|
||||
directory inline is impractical here, so the parser's correctness is verified
|
||||
against real agent binaries in the API/integration layer; these unit tests pin
|
||||
the surrounding validators and the malformed-input contract (never raises,
|
||||
returns None).
|
||||
"""
|
||||
|
||||
from plugins.endpoints.api import agentstore
|
||||
|
||||
|
||||
def test_is_valid_version_accepts_dotted_numeric():
|
||||
assert agentstore.is_valid_version('1')
|
||||
assert agentstore.is_valid_version('1.6.3')
|
||||
assert agentstore.is_valid_version('1.6.3.0')
|
||||
|
||||
|
||||
def test_is_valid_version_rejects_bad_input():
|
||||
assert not agentstore.is_valid_version('')
|
||||
assert not agentstore.is_valid_version('v1.6')
|
||||
assert not agentstore.is_valid_version('1.6.3.0.1')
|
||||
assert not agentstore.is_valid_version('../etc')
|
||||
assert not agentstore.is_valid_version('latest')
|
||||
|
||||
|
||||
def test_is_valid_binary_key():
|
||||
assert agentstore.is_valid_binary_key('agent')
|
||||
assert agentstore.is_valid_binary_key('tray')
|
||||
assert not agentstore.is_valid_binary_key('other')
|
||||
|
||||
|
||||
def test_looks_like_pe():
|
||||
assert agentstore.looks_like_pe(b'MZ\x90\x00')
|
||||
assert not agentstore.looks_like_pe(b'PK\x03\x04')
|
||||
assert not agentstore.looks_like_pe(b'')
|
||||
|
||||
|
||||
def test_read_pe_file_version_none_on_non_pe():
|
||||
assert agentstore.read_pe_file_version(b'not a pe file') is None
|
||||
|
||||
|
||||
def test_read_pe_file_version_none_on_truncated_pe():
|
||||
# MZ header but nothing else valid: must return None, never raise.
|
||||
assert agentstore.read_pe_file_version(b'MZ' + b'\x00' * 200) is None
|
||||
|
||||
|
||||
def test_read_pe_file_version_none_on_empty():
|
||||
assert agentstore.read_pe_file_version(b'') is None
|
||||
Reference in New Issue
Block a user