2026-03-30 15:23:34 +02:00
|
|
|
import io
|
2026-03-29 12:59:08 +02:00
|
|
|
from types import SimpleNamespace
|
|
|
|
|
|
2026-03-30 15:23:34 +02:00
|
|
|
from repub.entrypoint import FeedNameFilter, entrypoint, logger, parse_args
|
2026-03-29 12:59:08 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_feed_name_filter_accepts_matching_item() -> None:
|
|
|
|
|
item = SimpleNamespace(feed_name="nasa")
|
|
|
|
|
feed_filter = FeedNameFilter({"feed_name": "nasa"})
|
|
|
|
|
|
|
|
|
|
assert feed_filter.accepts(item) is True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_feed_name_filter_rejects_non_matching_item() -> None:
|
|
|
|
|
item = SimpleNamespace(feed_name="gp-pod")
|
|
|
|
|
feed_filter = FeedNameFilter({"feed_name": "nasa"})
|
|
|
|
|
|
|
|
|
|
assert feed_filter.accepts(item) is False
|
2026-03-30 15:23:34 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_parse_args_uses_republisher_host_and_port_env_vars(monkeypatch) -> None:
|
|
|
|
|
monkeypatch.setenv("REPUBLISHER_HOST", "0.0.0.0")
|
|
|
|
|
monkeypatch.setenv("REPUBLISHER_PORT", "9090")
|
|
|
|
|
|
|
|
|
|
command, args = parse_args(["serve"])
|
|
|
|
|
|
|
|
|
|
assert command == "serve"
|
|
|
|
|
assert args.host == "0.0.0.0"
|
|
|
|
|
assert args.port == "9090"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_entrypoint_rejects_invalid_republisher_port(monkeypatch) -> None:
|
|
|
|
|
monkeypatch.setenv("REPUBLISHER_PORT", "not-a-number")
|
|
|
|
|
stream = io.StringIO()
|
|
|
|
|
original_streams = [handler.stream for handler in logger.handlers]
|
|
|
|
|
for handler in logger.handlers:
|
|
|
|
|
handler.stream = stream
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
exit_code = entrypoint(["serve"])
|
|
|
|
|
finally:
|
|
|
|
|
for handler, original_stream in zip(logger.handlers, original_streams):
|
|
|
|
|
handler.stream = original_stream
|
|
|
|
|
|
|
|
|
|
assert exit_code == 2
|
|
|
|
|
assert "Invalid REPUBLISHER_PORT/--port value" in stream.getvalue()
|