"""Deployment connection isolation and direct split-port routes.""" import os import unittest from unittest.mock import patch from scripts.deploy import apply_api_env_policy from src.step5_session_analysis.dms import DmsConfig, connection_urls class DmsDeployRoutesTests(unittest.TestCase): def test_routes_do_not_depend_on_host_or_specific_ports(self): for host in ('http://example.invalid', 'https://[::1]'): for suffix in ('', '/'): config = DmsConfig(host + suffix, auth_port=8888, dms_port=10081) self.assertEqual(connection_urls(config), (host + ':10081/dms', host + ':8888/oauth/api/user/login')) config = DmsConfig(host + '/proxy_dms', auth_port=8888, dms_port=10081) self.assertEqual(connection_urls(config), (host + ':10081/proxy_dms', host + ':8888/proxy_oauth/user/login')) def test_env_policy_clears_connections_but_preserves_scope_and_mapping(self): keys = ('DMS_BASE_URL', 'DMS_LOGIN_URL', 'AUTH_PORT', 'DMS_PORT', 'DMS_USERNAME', 'DMS_PASSWORD', 'DMS_TOKEN') env = dict.fromkeys(keys, 'synthetic') env.update(DMS_STRICT_SCOPE='true', DMS_RECORDS_COLUMN_ID='9999') with patch.dict(os.environ, env, clear=True): apply_api_env_policy() self.assertTrue(all(key in os.environ for key in keys)) os.environ['DEPLOY_API_ENV_FILE_ONLY'] = '1' apply_api_env_policy() self.assertTrue(all(key not in os.environ for key in keys)) self.assertEqual(os.environ['DMS_STRICT_SCOPE'], 'true') self.assertEqual(os.environ['DMS_RECORDS_COLUMN_ID'], '9999')