diff options
| author | Christian Cleberg <[email protected]> | 2026-04-11 23:02:32 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-04-11 23:02:32 -0500 |
| commit | daaeba8be8df4d0876312e540bdd420e16ff724c (patch) | |
| tree | f0261ab3959dc4863c027eb5c858c8f1fdda8d88 /tests/test_ingestion.py | |
| parent | 1c8d0bdd0a0a46d7400b0827aec88a787f5a04c3 (diff) | |
| download | hutch-stats-daaeba8be8df4d0876312e540bdd420e16ff724c.tar.gz hutch-stats-daaeba8be8df4d0876312e540bdd420e16ff724c.tar.bz2 hutch-stats-daaeba8be8df4d0876312e540bdd420e16ff724c.zip | |
validate scraped usernames before enqueueing actors
Diffstat (limited to 'tests/test_ingestion.py')
| -rw-r--r-- | tests/test_ingestion.py | 24 |
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"] |
