import json import sys import unittest from pathlib import Path ROOT = Path(__file__).resolve().parents[1] RUNTIME_DIR = ROOT / "deployments" / "offline" / "runtime" sys.path.insert(0, str(RUNTIME_DIR)) import file_storage_readiness as readiness # noqa: E402 class FileStorageReadinessContractTests(unittest.TestCase): runtime_authority = { "name": "runtime", "source_type": "", "provider": "s3", "bucket": "customer-files", "region": "us-west-2", "key_prefix": "prod/customer-files/v1", } def test_duplicate_source_bucket_authorities_are_rejected_from_env(self): envv = { "FILE_STORAGE_PROVIDER": "s3", "FILE_STORAGE_BUCKET": "customer-files", "FILE_STORAGE_REGION": "us-west-2", "FILE_STORAGE_PREFIX": "prod/customer-files/v1", readiness.ADDITIONAL_S3_AUTHORITIES_ENV: json.dumps( [ { "name": "salesforce-history-v1", "source_type": "salesforce", "bucket": "salesforce-archive", "region": "us-west-2", "key_prefix": "salesforce/content/blobs/v1", }, { "name": "salesforce-history-v2", "source_type": "salesforce", "bucket": "salesforce-archive", "region": "us-west-2", "key_prefix": "salesforce/content/blobs/v2", }, ] ), } with self.assertRaisesRegex( readiness.DeployError, "ambiguous source_type and bucket binding", ): readiness.runtime_s3_authorities(envv) def test_filesystem_runtime_can_declare_source_scoped_s3_history(self): envv = { "FILE_STORAGE_PROVIDER": "filesystem", "FILE_STORAGE_ROOT": "/runtime/files", readiness.ADDITIONAL_S3_AUTHORITIES_ENV: json.dumps( [ { "name": "salesforce-history", "source_type": "salesforce", "bucket": "salesforce-archive", "region": "us-west-2", "key_prefix": "salesforce/content/blobs", } ] ), } self.assertEqual( [ { "name": "salesforce-history", "source_type": "salesforce", "provider": "s3", "bucket": "salesforce-archive", "region": "us-west-2", "key_prefix": "salesforce/content/blobs", } ], readiness.runtime_s3_authorities(envv), ) def test_matcher_rejects_ambiguous_authority_lists(self): authorities = [ { "name": "salesforce-history-v1", "source_type": "salesforce", "bucket": "salesforce-archive", "region": "us-west-2", "key_prefix": "salesforce/content/blobs/v1", }, { "name": "salesforce-history-v2", "source_type": "salesforce", "bucket": "salesforce-archive", "region": "us-west-2", "key_prefix": "salesforce/content/blobs/v2", }, ] with self.assertRaisesRegex( readiness.DeployError, "multiple S3 authorities match", ): readiness.matching_s3_authority( row={"SourceType": "salesforce"}, bucket="salesforce-archive", authorities=authorities, ) if __name__ == "__main__": unittest.main()