Centralize testing

This commit is contained in:
2025-05-11 11:22:00 +02:00
parent b34c49d3e3
commit d3d99775d9
19 changed files with 565 additions and 4 deletions

View File

@ -0,0 +1,41 @@
"""Helper functions."""
import os
import tempfile
from collections.abc import Iterator
from contextlib import contextmanager
from pathlib import Path
from sqlmodel import Session, create_engine
from sshecret.crypto import generate_private_key, write_private_key
from sshecret_admin.auth.authentication import hash_password
from sshecret_admin.auth.models import User, init_db
from sshecret_admin.core.settings import AdminServerSettings
def create_test_admin_user(settings: AdminServerSettings, username: str, password: str) -> None:
"""Create a test admin user."""
hashed_password = hash_password(password)
engine = create_engine(settings.admin_db)
init_db(engine)
with Session(engine) as session:
user = User(username=username, hashed_password=hashed_password)
session.add(user)
session.commit()
def create_sshd_server_key(sshd_path: Path) -> Path:
"""Create a ssh key at a general"""
server_file = sshd_path / "ssh_host_key"
private_key = generate_private_key()
write_private_key(private_key, server_file)
return server_file
@contextmanager
def in_tempdir() -> Iterator[Path]:
"""Run in a temporary directory."""
curdir = os.getcwd()
with tempfile.TemporaryDirectory() as temp_directory:
temp_path = Path(temp_directory)
os.chdir(temp_directory)
yield temp_path
os.chdir(curdir)