Compare commits
1 Commits
fix/issue-
...
fix/audit-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
17bd403217 |
@@ -11,28 +11,6 @@ from vigilar.config import VigilarConfig, load_config
|
|||||||
from vigilar.storage.schema import metadata
|
from vigilar.storage.schema import metadata
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(autouse=True, scope="session")
|
|
||||||
def _isolate_vigilar_config(tmp_path_factory):
|
|
||||||
"""Prevent tests from writing to the real config/vigilar.toml.
|
|
||||||
|
|
||||||
Web endpoint handlers that call `_save_and_reload()` read the target
|
|
||||||
path from the VIGILAR_CONFIG env var, falling back to the relative
|
|
||||||
`"config/vigilar.toml"`. Without this fixture, any test that exercises
|
|
||||||
such an endpoint rewrites the repo's committed config file via a
|
|
||||||
Pydantic round-trip, stripping comments and non-default fields.
|
|
||||||
"""
|
|
||||||
tmp_config = tmp_path_factory.mktemp("vigilar-config") / "vigilar.toml"
|
|
||||||
prev = os.environ.get("VIGILAR_CONFIG")
|
|
||||||
os.environ["VIGILAR_CONFIG"] = str(tmp_config)
|
|
||||||
try:
|
|
||||||
yield
|
|
||||||
finally:
|
|
||||||
if prev is None:
|
|
||||||
os.environ.pop("VIGILAR_CONFIG", None)
|
|
||||||
else:
|
|
||||||
os.environ["VIGILAR_CONFIG"] = prev
|
|
||||||
|
|
||||||
|
|
||||||
def _create_test_engine(db_path: Path):
|
def _create_test_engine(db_path: Path):
|
||||||
"""Create a fresh engine for testing (bypasses the global singleton)."""
|
"""Create a fresh engine for testing (bypasses the global singleton)."""
|
||||||
db_path.parent.mkdir(parents=True, exist_ok=True)
|
db_path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
|||||||
@@ -60,12 +60,9 @@ def show_cmd(config_path: str | None) -> None:
|
|||||||
@config_cmd.command("set-password")
|
@config_cmd.command("set-password")
|
||||||
@click.option("--config", "-c", "config_path", default=None, help="Path to vigilar.toml.")
|
@click.option("--config", "-c", "config_path", default=None, help="Path to vigilar.toml.")
|
||||||
def set_password_cmd(config_path: str | None) -> None:
|
def set_password_cmd(config_path: str | None) -> None:
|
||||||
"""Generate a bcrypt hash for the web UI password."""
|
"""Generate a scrypt hash for the web UI password."""
|
||||||
try:
|
try:
|
||||||
import hashlib
|
|
||||||
|
|
||||||
password = click.prompt("Enter web UI password", hide_input=True, confirmation_prompt=True)
|
password = click.prompt("Enter web UI password", hide_input=True, confirmation_prompt=True)
|
||||||
# Use SHA-256 hash (bcrypt requires external dep, but cryptography is available)
|
|
||||||
from cryptography.hazmat.primitives.kdf.scrypt import Scrypt
|
from cryptography.hazmat.primitives.kdf.scrypt import Scrypt
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user