Skip to content

Commit d373549

Browse files
Jonathan Glasertimm4205
authored andcommitted
fix: Add explicit commercial option for idp_partition parameter
1 parent 38c19cb commit d373549

File tree

3 files changed

+16
-8
lines changed

3 files changed

+16
-8
lines changed

redshift_connector/plugin/azure_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def validate_idp_partition(idp_partition: typing.Optional[str]) -> typing.Option
1010
if not isinstance(idp_partition, str):
1111
raise InterfaceError("idp_partition must be a string")
1212
# Validate against allowed values
13-
valid_partitions = ["", "us-gov", "cn"]
13+
valid_partitions = ["", "commercial", "us-gov", "cn"]
1414
normalized = idp_partition.strip().lower()
1515
if normalized not in valid_partitions:
1616
raise InterfaceError(

redshift_connector/plugin/plugin_utils.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,14 @@ def get_microsoft_idp_host(idp_partition: typing.Optional[str] = None) -> str:
1616
return MICROSOFT_COMMERCIAL_HOST
1717

1818
partition = validated_partition.strip().lower()
19+
20+
if partition == "commercial":
21+
return MICROSOFT_COMMERCIAL_HOST
22+
1923
if partition in MICROSOFT_IDP_HOSTS:
2024
return MICROSOFT_IDP_HOSTS[partition]
2125
else:
22-
supported_values = list(MICROSOFT_IDP_HOSTS.keys())
23-
raise InterfaceError(
24-
"Invalid IdP partition: '{}' (normalized: '{}'). Supported values are: {}, or empty/None for commercial cloud.".format(
25-
idp_partition, partition, ", ".join("'{}'".format(v) for v in supported_values)
26-
)
27-
)
26+
supported_values = list(MICROSOFT_IDP_HOSTS.keys()) + ["commercial"]
27+
raise InterfaceError("Invalid IdP partition: '{}' (normalized: '{}'). Supported values are: {}, or empty/None for commercial cloud.".format(
28+
idp_partition, partition, ", ".join("'{}'".format(v) for v in supported_values)
29+
))

test/unit/plugin/test_azure_common.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ def test_get_microsoft_idp_host_empty_partition_returns_commercial_host(partitio
1212
assert get_microsoft_idp_host(partition) == "login.microsoftonline.com"
1313

1414

15+
@pytest.mark.parametrize("partition", ["commercial", "COMMERCIAL", "Commercial "])
16+
def test_get_microsoft_idp_host_commercial_partition_returns_commercial_host(partition) -> None:
17+
"""Test that 'commercial' partitions return commercial host."""
18+
assert get_microsoft_idp_host(partition) == "login.microsoftonline.com"
19+
20+
1521
@pytest.mark.parametrize("partition", ["us-gov", "US-GOV", "Us-gov "])
1622
def test_get_microsoft_idp_host_us_gov_partition(partition) -> None:
1723
"""Test that us-gov partitions return US government host."""
@@ -30,7 +36,7 @@ def test_get_microsoft_idp_host_invalid_partition_throws_error() -> None:
3036
get_microsoft_idp_host("random_partition")
3137

3238

33-
@pytest.mark.parametrize("partition", ["", "us-gov", "cn", None])
39+
@pytest.mark.parametrize("partition", ["", "commercial", "us-gov", "cn", None])
3440
def test_validate_idp_partition_valid_values(partition) -> None:
3541
"""Test that valid partition values are accepted."""
3642
result = validate_idp_partition(partition)

0 commit comments

Comments
 (0)