Move conffile_parser from services to utils
This commit is contained in:
@@ -6,7 +6,7 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from app.services.conffile_parser import (
|
||||
from app.utils.conffile_parser import (
|
||||
merge_action_update,
|
||||
merge_filter_update,
|
||||
parse_action_file,
|
||||
@@ -451,7 +451,7 @@ class TestParseJailFile:
|
||||
"""Unit tests for parse_jail_file."""
|
||||
|
||||
def test_minimal_parses_correctly(self) -> None:
|
||||
from app.services.conffile_parser import parse_jail_file
|
||||
from app.utils.conffile_parser import parse_jail_file
|
||||
|
||||
cfg = parse_jail_file(MINIMAL_JAIL, filename="sshd.conf")
|
||||
assert cfg.filename == "sshd.conf"
|
||||
@@ -463,7 +463,7 @@ class TestParseJailFile:
|
||||
assert jail.logpath == ["/var/log/auth.log"]
|
||||
|
||||
def test_full_parses_multiple_jails(self) -> None:
|
||||
from app.services.conffile_parser import parse_jail_file
|
||||
from app.utils.conffile_parser import parse_jail_file
|
||||
|
||||
cfg = parse_jail_file(FULL_JAIL)
|
||||
assert len(cfg.jails) == 2
|
||||
@@ -471,7 +471,7 @@ class TestParseJailFile:
|
||||
assert "nginx-botsearch" in cfg.jails
|
||||
|
||||
def test_full_jail_numeric_fields(self) -> None:
|
||||
from app.services.conffile_parser import parse_jail_file
|
||||
from app.utils.conffile_parser import parse_jail_file
|
||||
|
||||
jail = parse_jail_file(FULL_JAIL).jails["sshd"]
|
||||
assert jail.maxretry == 3
|
||||
@@ -479,7 +479,7 @@ class TestParseJailFile:
|
||||
assert jail.bantime == 3600
|
||||
|
||||
def test_full_jail_multiline_logpath(self) -> None:
|
||||
from app.services.conffile_parser import parse_jail_file
|
||||
from app.utils.conffile_parser import parse_jail_file
|
||||
|
||||
jail = parse_jail_file(FULL_JAIL).jails["sshd"]
|
||||
assert len(jail.logpath) == 2
|
||||
@@ -487,53 +487,53 @@ class TestParseJailFile:
|
||||
assert "/var/log/syslog" in jail.logpath
|
||||
|
||||
def test_full_jail_multiline_action(self) -> None:
|
||||
from app.services.conffile_parser import parse_jail_file
|
||||
from app.utils.conffile_parser import parse_jail_file
|
||||
|
||||
jail = parse_jail_file(FULL_JAIL).jails["nginx-botsearch"]
|
||||
assert len(jail.action) == 2
|
||||
assert "sendmail-whois" in jail.action
|
||||
|
||||
def test_enabled_true(self) -> None:
|
||||
from app.services.conffile_parser import parse_jail_file
|
||||
from app.utils.conffile_parser import parse_jail_file
|
||||
|
||||
jail = parse_jail_file(FULL_JAIL).jails["sshd"]
|
||||
assert jail.enabled is True
|
||||
|
||||
def test_enabled_false(self) -> None:
|
||||
from app.services.conffile_parser import parse_jail_file
|
||||
from app.utils.conffile_parser import parse_jail_file
|
||||
|
||||
jail = parse_jail_file(FULL_JAIL).jails["nginx-botsearch"]
|
||||
assert jail.enabled is False
|
||||
|
||||
def test_extra_keys_captured(self) -> None:
|
||||
from app.services.conffile_parser import parse_jail_file
|
||||
from app.utils.conffile_parser import parse_jail_file
|
||||
|
||||
jail = parse_jail_file(JAIL_WITH_EXTRA).jails["sshd"]
|
||||
assert jail.extra["custom_key"] == "custom_value"
|
||||
assert jail.extra["another_key"] == "42"
|
||||
|
||||
def test_extra_keys_not_in_named_fields(self) -> None:
|
||||
from app.services.conffile_parser import parse_jail_file
|
||||
from app.utils.conffile_parser import parse_jail_file
|
||||
|
||||
jail = parse_jail_file(JAIL_WITH_EXTRA).jails["sshd"]
|
||||
assert "enabled" not in jail.extra
|
||||
assert "logpath" not in jail.extra
|
||||
|
||||
def test_empty_file_yields_no_jails(self) -> None:
|
||||
from app.services.conffile_parser import parse_jail_file
|
||||
from app.utils.conffile_parser import parse_jail_file
|
||||
|
||||
cfg = parse_jail_file("")
|
||||
assert cfg.jails == {}
|
||||
|
||||
def test_invalid_ini_does_not_raise(self) -> None:
|
||||
from app.services.conffile_parser import parse_jail_file
|
||||
from app.utils.conffile_parser import parse_jail_file
|
||||
|
||||
# Should not raise; just parse what it can.
|
||||
cfg = parse_jail_file("@@@ not valid ini @@@", filename="bad.conf")
|
||||
assert isinstance(cfg.jails, dict)
|
||||
|
||||
def test_default_section_ignored(self) -> None:
|
||||
from app.services.conffile_parser import parse_jail_file
|
||||
from app.utils.conffile_parser import parse_jail_file
|
||||
|
||||
content = "[DEFAULT]\nignoreip = 127.0.0.1\n\n[sshd]\nenabled = true\n"
|
||||
cfg = parse_jail_file(content)
|
||||
@@ -550,7 +550,7 @@ class TestJailFileRoundTrip:
|
||||
"""Tests that parse → serialize → parse preserves values."""
|
||||
|
||||
def test_minimal_round_trip(self) -> None:
|
||||
from app.services.conffile_parser import parse_jail_file, serialize_jail_file_config
|
||||
from app.utils.conffile_parser import parse_jail_file, serialize_jail_file_config
|
||||
|
||||
original = parse_jail_file(MINIMAL_JAIL, filename="sshd.conf")
|
||||
serialized = serialize_jail_file_config(original)
|
||||
@@ -560,7 +560,7 @@ class TestJailFileRoundTrip:
|
||||
assert restored.jails["sshd"].logpath == original.jails["sshd"].logpath
|
||||
|
||||
def test_full_round_trip(self) -> None:
|
||||
from app.services.conffile_parser import parse_jail_file, serialize_jail_file_config
|
||||
from app.utils.conffile_parser import parse_jail_file, serialize_jail_file_config
|
||||
|
||||
original = parse_jail_file(FULL_JAIL)
|
||||
serialized = serialize_jail_file_config(original)
|
||||
@@ -573,7 +573,7 @@ class TestJailFileRoundTrip:
|
||||
assert sorted(restored_jail.action) == sorted(jail.action)
|
||||
|
||||
def test_extra_keys_round_trip(self) -> None:
|
||||
from app.services.conffile_parser import parse_jail_file, serialize_jail_file_config
|
||||
from app.utils.conffile_parser import parse_jail_file, serialize_jail_file_config
|
||||
|
||||
original = parse_jail_file(JAIL_WITH_EXTRA)
|
||||
serialized = serialize_jail_file_config(original)
|
||||
@@ -591,7 +591,7 @@ class TestMergeJailFileUpdate:
|
||||
|
||||
def test_none_update_returns_original(self) -> None:
|
||||
from app.models.config import JailFileConfigUpdate
|
||||
from app.services.conffile_parser import merge_jail_file_update, parse_jail_file
|
||||
from app.utils.conffile_parser import merge_jail_file_update, parse_jail_file
|
||||
|
||||
cfg = parse_jail_file(FULL_JAIL)
|
||||
update = JailFileConfigUpdate()
|
||||
@@ -600,7 +600,7 @@ class TestMergeJailFileUpdate:
|
||||
|
||||
def test_update_replaces_jail(self) -> None:
|
||||
from app.models.config import JailFileConfigUpdate, JailSectionConfig
|
||||
from app.services.conffile_parser import merge_jail_file_update, parse_jail_file
|
||||
from app.utils.conffile_parser import merge_jail_file_update, parse_jail_file
|
||||
|
||||
cfg = parse_jail_file(FULL_JAIL)
|
||||
new_sshd = JailSectionConfig(enabled=False, port="2222")
|
||||
@@ -613,7 +613,7 @@ class TestMergeJailFileUpdate:
|
||||
|
||||
def test_update_adds_new_jail(self) -> None:
|
||||
from app.models.config import JailFileConfigUpdate, JailSectionConfig
|
||||
from app.services.conffile_parser import merge_jail_file_update, parse_jail_file
|
||||
from app.utils.conffile_parser import merge_jail_file_update, parse_jail_file
|
||||
|
||||
cfg = parse_jail_file(MINIMAL_JAIL)
|
||||
new_jail = JailSectionConfig(enabled=True, port="443")
|
||||
|
||||
Reference in New Issue
Block a user