Normalize setup admin username (#448)

This commit is contained in:
red person
2026-06-01 16:38:56 +03:00
committed by GitHub
parent 448401a0fc
commit 39cec53284
2 changed files with 26 additions and 1 deletions

View File

@@ -54,7 +54,7 @@ def create_default_admin():
import bcrypt import bcrypt
import json import json
username = os.getenv("ODYSSEUS_ADMIN_USER", "admin").strip() or "admin" username = os.getenv("ODYSSEUS_ADMIN_USER", "admin").strip().lower() or "admin"
password = os.getenv("ODYSSEUS_ADMIN_PASSWORD") or __import__("secrets").token_urlsafe(18) password = os.getenv("ODYSSEUS_ADMIN_PASSWORD") or __import__("secrets").token_urlsafe(18)
hashed = bcrypt.hashpw(password.encode(), bcrypt.gensalt()).decode() hashed = bcrypt.hashpw(password.encode(), bcrypt.gensalt()).decode()
auth_data = { auth_data = {

View File

@@ -0,0 +1,25 @@
import importlib.util
import json
from pathlib import Path
def _load_setup_module():
spec = importlib.util.spec_from_file_location("odysseus_setup_under_test", Path("setup.py"))
module = importlib.util.module_from_spec(spec)
assert spec.loader is not None
spec.loader.exec_module(module)
return module
def test_create_default_admin_normalizes_env_username(tmp_path, monkeypatch):
setup_module = _load_setup_module()
monkeypatch.setattr(setup_module, "DATA_DIR", str(tmp_path))
monkeypatch.setenv("ODYSSEUS_ADMIN_USER", " AdminUser ")
monkeypatch.setenv("ODYSSEUS_ADMIN_PASSWORD", "temporary-password")
assert setup_module.create_default_admin() == "created"
auth_path = tmp_path / "auth.json"
data = json.loads(auth_path.read_text(encoding="utf-8"))
assert "adminuser" in data["users"]
assert "AdminUser" not in data["users"]