Task 13: move ban_ip, unban_ip, and get_active_bans from jail_service to ban_service and update routers/tests
This commit is contained in:
@@ -174,17 +174,17 @@ class TestImport:
|
||||
|
||||
source = await blocklist_service.create_source(db, "Import Test", "https://t.test/")
|
||||
|
||||
from app.services import jail_service
|
||||
from app.services import ban_service
|
||||
|
||||
with patch(
|
||||
"app.services.jail_service.ban_ip", new_callable=AsyncMock
|
||||
"app.services.ban_service.ban_ip", new_callable=AsyncMock
|
||||
) as mock_ban:
|
||||
result = await blocklist_service.import_source(
|
||||
source,
|
||||
session,
|
||||
"/tmp/fake.sock",
|
||||
db,
|
||||
ban_ip=jail_service.ban_ip,
|
||||
ban_ip=ban_service.ban_ip,
|
||||
)
|
||||
|
||||
assert result.ips_imported == 2
|
||||
@@ -198,15 +198,15 @@ class TestImport:
|
||||
session = _make_session(content)
|
||||
source = await blocklist_service.create_source(db, "CIDR Test", "https://c.test/")
|
||||
|
||||
from app.services import jail_service
|
||||
from app.services import ban_service
|
||||
|
||||
with patch("app.services.jail_service.ban_ip", new_callable=AsyncMock):
|
||||
with patch("app.services.ban_service.ban_ip", new_callable=AsyncMock):
|
||||
result = await blocklist_service.import_source(
|
||||
source,
|
||||
session,
|
||||
"/tmp/fake.sock",
|
||||
db,
|
||||
ban_ip=jail_service.ban_ip,
|
||||
ban_ip=ban_service.ban_ip,
|
||||
)
|
||||
|
||||
assert result.ips_imported == 1
|
||||
@@ -217,14 +217,14 @@ class TestImport:
|
||||
session = _make_session("", status=503)
|
||||
source = await blocklist_service.create_source(db, "Err Source", "https://err.test/")
|
||||
|
||||
from app.services import jail_service
|
||||
from app.services import ban_service
|
||||
|
||||
result = await blocklist_service.import_source(
|
||||
source,
|
||||
session,
|
||||
"/tmp/fake.sock",
|
||||
db,
|
||||
ban_ip=jail_service.ban_ip,
|
||||
ban_ip=ban_service.ban_ip,
|
||||
)
|
||||
|
||||
assert result.ips_imported == 0
|
||||
@@ -234,6 +234,7 @@ class TestImport:
|
||||
"""import_source aborts immediately and records an error when the target jail
|
||||
does not exist in fail2ban instead of silently skipping every IP."""
|
||||
from app.services.jail_service import JailNotFoundError
|
||||
from app.services import ban_service
|
||||
|
||||
content = "\n".join(f"1.2.3.{i}" for i in range(100))
|
||||
session = _make_session(content)
|
||||
@@ -246,15 +247,13 @@ class TestImport:
|
||||
call_count += 1
|
||||
raise JailNotFoundError(jail)
|
||||
|
||||
with patch("app.services.jail_service.ban_ip", side_effect=_raise_jail_not_found):
|
||||
from app.services import jail_service
|
||||
|
||||
with patch("app.services.ban_service.ban_ip", side_effect=_raise_jail_not_found):
|
||||
result = await blocklist_service.import_source(
|
||||
source,
|
||||
session,
|
||||
"/tmp/fake.sock",
|
||||
db,
|
||||
ban_ip=jail_service.ban_ip,
|
||||
ban_ip=ban_service.ban_ip,
|
||||
)
|
||||
|
||||
# Must abort after the first JailNotFoundError — only one ban attempt.
|
||||
@@ -273,15 +272,15 @@ class TestImport:
|
||||
session = _make_session(content)
|
||||
|
||||
with patch(
|
||||
"app.services.jail_service.ban_ip", new_callable=AsyncMock
|
||||
"app.services.ban_service.ban_ip", new_callable=AsyncMock
|
||||
):
|
||||
from app.services import jail_service
|
||||
from app.services import ban_service
|
||||
|
||||
result = await blocklist_service.import_all(
|
||||
db,
|
||||
session,
|
||||
"/tmp/fake.sock",
|
||||
ban_ip=jail_service.ban_ip,
|
||||
ban_ip=ban_service.ban_ip,
|
||||
)
|
||||
|
||||
# Only S1 is enabled, S2 is disabled.
|
||||
@@ -415,16 +414,16 @@ class TestGeoPrewarmCacheFilter:
|
||||
def _mock_is_cached(ip: str) -> bool:
|
||||
return ip == "1.2.3.4"
|
||||
|
||||
from app.services import jail_service
|
||||
from app.services import ban_service
|
||||
|
||||
mock_batch = AsyncMock(return_value={})
|
||||
with patch("app.services.jail_service.ban_ip", new_callable=AsyncMock):
|
||||
with patch("app.services.ban_service.ban_ip", new_callable=AsyncMock):
|
||||
result = await blocklist_service.import_source(
|
||||
source,
|
||||
session,
|
||||
"/tmp/fake.sock",
|
||||
db,
|
||||
ban_ip=jail_service.ban_ip,
|
||||
ban_ip=ban_service.ban_ip,
|
||||
geo_is_cached=_mock_is_cached,
|
||||
geo_batch_lookup=mock_batch,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user