Centralize testing
This commit is contained in:
41
tests/integration/helpers.py
Normal file
41
tests/integration/helpers.py
Normal 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)
|
||||
Reference in New Issue
Block a user