"""Cross-provider IAM username derivation contracts (#2390).""" from __future__ import annotations import pytest from app.integrations.drivers.aliyun_cloud import AliyunCloudDriver from app.integrations.drivers.aws_cloud import AwsCloudDriver from app.integrations.drivers.tencent_cloud import TencentCloudDriver from app.integrations.drivers.ucloud_cloud import UCloudDriver @pytest.mark.parametrize( ("derive", "expected"), [ (AwsCloudDriver._iam_user_name_for, "helix-85c2eab1975f"), (AliyunCloudDriver._ram_user_name_for, "helix-85c2eab1975f"), (TencentCloudDriver._cam_user_name_for, "helix-85c2eab1975f"), (UCloudDriver._user_name_for, "helix-85c2eab1975f"), ], ) def test_cjk_local_part_uses_stable_ascii_fallback(derive, expected): # ``str.isalnum`` accepts CJK. Provider usernames do not, so the filter # must explicitly require ASCII before deciding whether fallback is needed. first = derive(None, "张三@example.com") second = derive(None, "张三@example.com") assert first == expected assert second == expected assert first.isascii() @pytest.mark.parametrize( ("derive", "expected"), [ (AwsCloudDriver._iam_user_name_for, "alice.smith+ops"), (AliyunCloudDriver._ram_user_name_for, "Alice.Smithops"), (TencentCloudDriver._cam_user_name_for, "Alice.Smithops"), (UCloudDriver._user_name_for, "alicesmithops"), ], ) def test_ascii_username_contract_is_unchanged(derive, expected): assert derive(None, "Alice.Smith+ops@example.com") == expected @pytest.mark.parametrize( ("derive", "expected"), [ (AwsCloudDriver._iam_user_name_for, "a.+tag"), (AliyunCloudDriver._ram_user_name_for, "a.tag"), (TencentCloudDriver._cam_user_name_for, "a.tag"), (UCloudDriver._user_name_for, "atag"), ], ) def test_mixed_unicode_keeps_only_provider_allowed_ascii(derive, expected): assert derive(None, "张a.三+tag@example.com") == expected