aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-11 23:02:32 -0500
committerChristian Cleberg <[email protected]>2026-04-11 23:02:32 -0500
commitdaaeba8be8df4d0876312e540bdd420e16ff724c (patch)
treef0261ab3959dc4863c027eb5c858c8f1fdda8d88 /tests
parent1c8d0bdd0a0a46d7400b0827aec88a787f5a04c3 (diff)
downloadhutch-stats-daaeba8be8df4d0876312e540bdd420e16ff724c.tar.gz
hutch-stats-daaeba8be8df4d0876312e540bdd420e16ff724c.tar.bz2
hutch-stats-daaeba8be8df4d0876312e540bdd420e16ff724c.zip
validate scraped usernames before enqueueing actors
Diffstat (limited to 'tests')
-rw-r--r--tests/test_ingestion.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/test_ingestion.py b/tests/test_ingestion.py
index 974dac6..6a1a162 100644
--- a/tests/test_ingestion.py
+++ b/tests/test_ingestion.py
@@ -738,3 +738,27 @@ def test_enqueue_actors_staggers_without_polling(tmp_path, monkeypatch) -> None:
assert actors[0].next_poll_after == queued_at.replace(tzinfo=None)
assert actors[1].next_poll_after == (queued_at + timedelta(seconds=60)).replace(tzinfo=None)
assert actors[2].next_poll_after == (queued_at + timedelta(seconds=120)).replace(tzinfo=None)
+
+
+def test_enqueue_actors_skips_invalid_usernames(tmp_path, monkeypatch) -> None:
+ database_path = tmp_path / "enqueue-invalid.db"
+ username_path = tmp_path / "srht_usernames.txt"
+ username_path.write_text("-0\n.\n~bad-\nvalid_user\nok.ok\n", encoding="utf-8")
+ monkeypatch.setenv("DATABASE_URL", f"sqlite:///{database_path}")
+ monkeypatch.setenv("SRHT_TOKEN", "test-token")
+ monkeypatch.setenv("DEFAULT_ACTOR", "~ccleberg")
+
+ from srht_contrib.db import Base, make_engine, make_session_factory
+
+ settings = Settings()
+ engine = make_engine(settings)
+ Base.metadata.create_all(bind=engine)
+ session_factory = make_session_factory(settings)
+
+ inserted = enqueue_actors(Path(username_path), stagger_seconds=60)
+
+ with session_factory() as db:
+ actors = db.scalars(select(TrackedActor).order_by(TrackedActor.actor)).all()
+
+ assert inserted == 2
+ assert [actor.actor for actor in actors] == ["~ok.ok", "~valid_user"]