42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
"""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)
|