"""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)