Normalize setup admin username (#448)
This commit is contained in:
2
setup.py
2
setup.py
@@ -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 = {
|
||||||
|
|||||||
25
tests/test_setup_admin_user.py
Normal file
25
tests/test_setup_admin_user.py
Normal 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"]
|
||||||
Reference in New Issue
Block a user