mirror of
https://github.com/trustedsec/hate_crack.git
synced 2026-07-28 14:47:22 -07:00
feat(test): run live Hashview tests against a local docker stack
The live Hashview tests previously could only run against a remote server
configured in config.json, and the CLI ignored env-var overrides, so the
suite always hit prod. Prod runs an older Hashview whose /v1/jobs/add 500s
on a notify_email kwarg, which masked real client/server drift.
Wire the suite up to a local Hashview docker stack:
- main.py: HASHVIEW_URL / HASHVIEW_API_KEY env vars now override config.json,
so the CLI can be pointed at a local instance without editing config.
- tests/_hashview_local.py + pytest_configure: when HASHVIEW_TEST_LOCAL=1,
bring up + seed the Hashview compose stack (HASHVIEW_REPO), verify
authenticated API access, export the HASHVIEW_* env, and tear down
(HASHVIEW_KEEP=1 keeps it). Runs in configure so collection-time skipif
on HASHVIEW_TEST_REAL sees the exported env.
- tests/hashview_local_seed.py: seed an admin api_key + non-default password
(else Hashview's setup guard redirects every request to /setup), a
customer, a hashfile, and cracked "effective task" data (else /v1/jobs/add
has no tasks to schedule).
- api.py: download_left_hashes now uses GET /v1/hashfiles/<id>; the old
/v1/hashfiles/<id>/left route 404s on current servers.
- subprocess tests: assert on the CLI's actual output ("Job ID:") rather than
the literal "Job created", and strip ambient HASHVIEW_* creds from the
no-key-configured check so the env override doesn't defeat it.
- README/CLAUDE: document HASHVIEW_TEST_LOCAL and the env overrides.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
dcf377c3d4
commit
048ed7cac1
@@ -588,6 +588,31 @@ environment variable and provide valid credentials in `config.json`:
|
||||
HATE_CRACK_RUN_LIVE_TESTS=1 uv run pytest tests/test_upload_cracked_hashes.py -v
|
||||
```
|
||||
|
||||
### Live Hashview Tests Against a Local Docker Stack
|
||||
|
||||
Instead of pointing the live tests at a remote Hashview server, you can have
|
||||
the suite spin up a local [Hashview](https://github.com/hashview/hashview)
|
||||
Docker stack, seed it, run the live tests against it, and tear it down. Set
|
||||
`HASHVIEW_TEST_LOCAL=1` and point `HASHVIEW_REPO` at a Hashview checkout:
|
||||
|
||||
```bash
|
||||
HASHVIEW_TEST_LOCAL=1 HASHVIEW_REPO=~/projects/hashview \
|
||||
HATE_CRACK_SKIP_INIT=1 uv run pytest tests/test_hashview_cli_subcommands_subprocess.py -v
|
||||
```
|
||||
|
||||
This brings up `docker compose` in the Hashview repo, seeds an admin API key,
|
||||
a customer, a hashfile, and cracked "effective task" data, then exports the
|
||||
`HASHVIEW_*` env vars the tests read. Useful env vars:
|
||||
|
||||
- `HASHVIEW_TEST_LOCAL=1` — enable the local stack (no-op otherwise)
|
||||
- `HASHVIEW_REPO=<path>` — Hashview checkout (default `~/projects/hashview`)
|
||||
- `HASHVIEW_KEEP=1` — leave containers running after the session (faster re-runs)
|
||||
- `HASHVIEW_LOCAL_PORT=5000` — host port the app is published on
|
||||
|
||||
The hate_crack CLI honours the `HASHVIEW_URL` / `HASHVIEW_API_KEY` environment
|
||||
variables (overriding `config.json`), which is what lets the suite point the
|
||||
CLI at the local stack without editing your persisted config.
|
||||
|
||||
### End-to-End Install Tests (Local + Docker)
|
||||
|
||||
Local uv tool install + script execution (uses a temporary HOME):
|
||||
|
||||
Reference in New Issue
Block a user