"""Integration test fixtures and helpers for auth0_cli handler.""" import json import boto3 import pytest from moto import mock_aws @pytest.fixture(autouse=True) def aws_credentials(monkeypatch: pytest.MonkeyPatch) -> None: """Inject fake AWS credentials so moto intercepts all boto3 calls.""" monkeypatch.setenv('AWS_DEFAULT_REGION', 'us-east-1') monkeypatch.setenv('AWS_ACCESS_KEY_ID', 'testing') monkeypatch.setenv('AWS_SECRET_ACCESS_KEY', 'testing') monkeypatch.setenv('AWS_SECURITY_TOKEN', 'testing') monkeypatch.setenv('AWS_SESSION_TOKEN', 'testing') @pytest.fixture def secrets_manager(aws_credentials: None): """Yield a real boto3 Secrets Manager client backed by moto.""" with mock_aws(): yield boto3.client('secretsmanager', region_name='us-east-1') def seed_tenant_secret( sm_client, tenant: str, domain: str = 'example.auth0.com', client_id: str = 'cid', client_secret: str = 'sec', ) -> None: """Create the expected secret for a tenant in the mocked Secrets Manager.""" secret_name = f'shared/offboarding-automation/{tenant}/auth0_management_credentials' sm_client.create_secret( Name=secret_name, SecretString=json.dumps( { 'auth0_domain': domain, 'auth0_client_id': client_id, 'auth0_client_secret': client_secret, } ), ) def make_search_event( email: str, ticket_id: str = 'SYS-0001', dry_run: bool = False ) -> dict: """Build a search-user-by-email Lambda event.""" return { 'action': 'search-user-by-email', 'dry_run': dry_run, 'email': email, 'ticket_id': ticket_id, } def make_delete_event( tenant: str, user_id: str, ticket_id: str = 'SYS-0001', dry_run: bool = False, ) -> dict: """Build a delete-user-by-id Lambda event.""" return { 'action': 'delete-user-by-id', 'dry_run': dry_run, 'tenant': tenant, 'user_id': user_id, 'ticket_id': ticket_id, }