mirror of
https://github.com/Sea-Haven-Industries/procurement-ingest.git
synced 2026-09-30 11:53:13 +00:00
61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
|
|
"""Shared pytest configuration for the procurement-ingest test suite.
|
||
|
|
|
||
|
|
The Lambda handlers create boto3 clients at module import time, so a
|
||
|
|
region and dummy credentials must be present in the environment before
|
||
|
|
any handler module is imported. Setting them here at conftest import
|
||
|
|
time guarantees they exist before test collection touches a handler.
|
||
|
|
"""
|
||
|
|
|
||
|
|
import importlib.util
|
||
|
|
import os
|
||
|
|
import sys
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
import pytest
|
||
|
|
|
||
|
|
os.environ.setdefault("AWS_DEFAULT_REGION", "us-east-1")
|
||
|
|
os.environ.setdefault("AWS_ACCESS_KEY_ID", "testing")
|
||
|
|
os.environ.setdefault("AWS_SECRET_ACCESS_KEY", "testing")
|
||
|
|
os.environ.setdefault("AWS_SESSION_TOKEN", "testing")
|
||
|
|
|
||
|
|
REPO_ROOT = Path(__file__).resolve().parents[1]
|
||
|
|
|
||
|
|
|
||
|
|
def load_handler(relative_path, module_name):
|
||
|
|
"""Load a Lambda handler module by file path under a unique name.
|
||
|
|
|
||
|
|
The handler files all share the basename ``handler.py`` and are not
|
||
|
|
importable as packages, so a plain ``import handler`` would collide
|
||
|
|
across Lambdas.
|
||
|
|
"""
|
||
|
|
path = REPO_ROOT / relative_path
|
||
|
|
spec = importlib.util.spec_from_file_location(module_name, path)
|
||
|
|
module = importlib.util.module_from_spec(spec)
|
||
|
|
sys.modules[module_name] = module
|
||
|
|
spec.loader.exec_module(module)
|
||
|
|
return module
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture(scope="session")
|
||
|
|
def po_handler():
|
||
|
|
"""The PO email processor handler module."""
|
||
|
|
return load_handler(
|
||
|
|
"lambdas/po/email_processor/handler.py",
|
||
|
|
"po_email_processor_handler",
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture(scope="session")
|
||
|
|
def wo_handler():
|
||
|
|
"""The WO email processor handler module."""
|
||
|
|
return load_handler(
|
||
|
|
"lambdas/wo/email_processor/handler.py",
|
||
|
|
"wo_email_processor_handler",
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture(params=["po_handler", "wo_handler"])
|
||
|
|
def email_handler(request):
|
||
|
|
"""Parametrized fixture yielding each email processor handler module."""
|
||
|
|
return request.getfixturevalue(request.param)
|