|
@@ -1,5 +1,7 @@
|
|
|
from __future__ import annotations
|
|
|
|
|
|
+from typing import Any
|
|
|
+
|
|
|
import pytest
|
|
|
from django.conf import settings
|
|
|
from django.core.cache import cache
|
|
@@ -92,17 +94,20 @@ def test_client_config_in_silo_modes(request_factory: RequestFactory):
|
|
|
|
|
|
base_line = dict(get_client_config(request))
|
|
|
|
|
|
- # Removing the region list as it varies based on silo mode.
|
|
|
- # See Region.to_url()
|
|
|
- base_line.pop("regions")
|
|
|
- base_line["links"].pop("regionUrl")
|
|
|
+ def normalize(value: dict[str, Any]):
|
|
|
+ # Removing the region lists as it varies based on silo mode.
|
|
|
+ # See Region.to_url()
|
|
|
+ value.pop("regions")
|
|
|
+ value.pop("memberRegions")
|
|
|
+ value["links"].pop("regionUrl")
|
|
|
+
|
|
|
+ normalize(base_line)
|
|
|
cache.clear()
|
|
|
|
|
|
for silo_mode in SiloMode:
|
|
|
with override_settings(SILO_MODE=silo_mode):
|
|
|
result = dict(get_client_config(request))
|
|
|
- result.pop("regions")
|
|
|
- result["links"].pop("regionUrl")
|
|
|
+ normalize(result)
|
|
|
assert result == base_line
|
|
|
cache.clear()
|
|
|
|
|
@@ -132,6 +137,11 @@ def test_client_config_default_region_data():
|
|
|
assert regions[0]["name"] == settings.SENTRY_MONOLITH_REGION
|
|
|
assert regions[0]["url"] == options.get("system.url-prefix")
|
|
|
|
|
|
+ assert len(result["memberRegions"]) == 1
|
|
|
+ regions = result["memberRegions"]
|
|
|
+ assert regions[0]["name"] == settings.SENTRY_MONOLITH_REGION
|
|
|
+ assert regions[0]["url"] == options.get("system.url-prefix")
|
|
|
+
|
|
|
|
|
|
@no_silo_test
|
|
|
@django_db_all
|
|
@@ -163,11 +173,8 @@ def test_client_config_with_region_data():
|
|
|
regions = result["regions"]
|
|
|
assert {r["name"] for r in regions} == {"eu", "us"}
|
|
|
|
|
|
+ assert len(result["memberRegions"]) == 1
|
|
|
|
|
|
-multiregion_client_config_test = control_silo_test(
|
|
|
- regions=create_test_regions("us", "eu", "acme", single_tenants=["acme"]),
|
|
|
- include_monolith_run=True,
|
|
|
-)
|
|
|
|
|
|
hidden_regions = [
|
|
|
region.Region(
|
|
@@ -196,6 +203,31 @@ def test_client_config_with_hidden_region_data():
|
|
|
assert len(result["regions"]) == 1
|
|
|
regions = result["regions"]
|
|
|
assert {r["name"] for r in regions} == {"us"}
|
|
|
+ assert len(result["memberRegions"]) == 1
|
|
|
+
|
|
|
+
|
|
|
+@multiregion_client_config_test
|
|
|
+@django_db_all
|
|
|
+def test_client_config_with_multiple_membership():
|
|
|
+ request, user = make_user_request_from_org()
|
|
|
+ request.user = user
|
|
|
+
|
|
|
+ # multiple us memberships and eu too
|
|
|
+ Factories.create_organization(slug="us-co", owner=user)
|
|
|
+ Factories.create_organization(slug="eu-co", owner=user)
|
|
|
+ mapping = OrganizationMapping.objects.get(slug="eu-co")
|
|
|
+ mapping.update(region_name="eu")
|
|
|
+
|
|
|
+ result = get_client_config(request)
|
|
|
+
|
|
|
+ # Single-tenant doesn't show up unless you have membership
|
|
|
+ assert len(result["regions"]) == 2
|
|
|
+ regions = result["regions"]
|
|
|
+ assert {r["name"] for r in regions} == {"eu", "us"}
|
|
|
+
|
|
|
+ assert len(result["memberRegions"]) == 2
|
|
|
+ regions = result["memberRegions"]
|
|
|
+ assert {r["name"] for r in regions} == {"eu", "us"}
|
|
|
|
|
|
|
|
|
@multiregion_client_config_test
|
|
@@ -214,6 +246,10 @@ def test_client_config_with_single_tenant_membership():
|
|
|
regions = result["regions"]
|
|
|
assert {r["name"] for r in regions} == {"eu", "us", "acme"}
|
|
|
|
|
|
+ assert len(result["memberRegions"]) == 2
|
|
|
+ regions = result["memberRegions"]
|
|
|
+ assert {r["name"] for r in regions} == {"us", "acme"}
|
|
|
+
|
|
|
|
|
|
@multiregion_client_config_test
|
|
|
@django_db_all
|