diff --git a/analytics/tests/test_support_views.py b/analytics/tests/test_support_views.py
index 48ef850ccf..f90780cd99 100644
--- a/analytics/tests/test_support_views.py
+++ b/analytics/tests/test_support_views.py
@@ -92,14 +92,14 @@ class TestRemoteServerSupportEndpoint(ZulipTestCase):
super().setUp()
# Set up some initial example data.
- for i in range(4):
+ for i in range(5):
hostname = f"zulip-{i}.example.com"
remote_server = RemoteZulipServer.objects.create(
hostname=hostname, contact_email=f"admin@{hostname}", uuid=uuid.uuid4()
)
- # The first RemoteZulipServer has no RemoteRealm, as an
- # example of a pre-8.0 release registered remote server.
- if i != 0:
+ # We want at least one RemoteZulipServer that has no RemoteRealm
+ # as an example of a pre-8.0 release registered remote server.
+ if i > 1:
realm_name = f"realm-name-{i}"
realm_host = f"realm-host-{i}"
realm_uuid = uuid.uuid4()
@@ -111,9 +111,14 @@ class TestRemoteServerSupportEndpoint(ZulipTestCase):
realm_date_created=timezone_now(),
)
+ # Add a deactivated server, which should be excluded from search results.
+ server = RemoteZulipServer.objects.get(hostname="zulip-0.example.com")
+ server.deactivated = True
+ server.save(update_fields=["deactivated"])
+
# Add example sponsorship request data
add_sponsorship_request(
- name="realm-name-1",
+ name="realm-name-2",
org_type=OrgTypeEnum.Community.value,
website="",
paid_users="None",
@@ -121,7 +126,7 @@ class TestRemoteServerSupportEndpoint(ZulipTestCase):
)
add_sponsorship_request(
- name="realm-name-2",
+ name="realm-name-3",
org_type=OrgTypeEnum.OpenSource.value,
website="example.org",
paid_users="",
@@ -129,7 +134,7 @@ class TestRemoteServerSupportEndpoint(ZulipTestCase):
)
# Add expected legacy customer and plan data
- add_legacy_plan_and_upgrade(name="realm-name-3")
+ add_legacy_plan_and_upgrade(name="realm-name-4")
def test_search(self) -> None:
def assert_server_details_in_response(
@@ -147,6 +152,7 @@ class TestRemoteServerSupportEndpoint(ZulipTestCase):
],
html_response,
)
+ self.assert_not_in_success_response(["
zulip-0.example.com
"], result)
def assert_realm_details_in_response(
html_response: "TestHttpResponse", name: str, host: str
@@ -161,12 +167,12 @@ class TestRemoteServerSupportEndpoint(ZulipTestCase):
],
html_response,
)
- self.assert_not_in_success_response(["zulip-0.example.com
"], result)
+ self.assert_not_in_success_response(["zulip-1.example.com
"], result)
def check_remote_server_with_no_realms(result: "TestHttpResponse") -> None:
- assert_server_details_in_response(result, "zulip-0.example.com")
+ assert_server_details_in_response(result, "zulip-1.example.com")
self.assert_not_in_success_response(
- ["zulip-1.example.com
", "Remote realm host:"], result
+ ["zulip-2.example.com
", "Remote realm host:"], result
)
self.assert_in_success_response(["Has remote realm(s): False
"], result)
@@ -245,15 +251,18 @@ class TestRemoteServerSupportEndpoint(ZulipTestCase):
result,
)
- result = self.client_get("/activity/remote/support", {"q": "example.com"})
- for server in range(4):
- self.assert_in_success_response([f"zulip-{server}.example.com
"], result)
-
server = 0
+ result = self.client_get("/activity/remote/support", {"q": "example.com"})
+ self.assert_not_in_success_response([f"zulip-{server}.example.com
"], result)
+ for i in range(5):
+ if i != server:
+ self.assert_in_success_response([f"zulip-{i}.example.com
"], result)
+
+ server = 1
result = self.client_get("/activity/remote/support", {"q": f"zulip-{server}.example.com"})
check_remote_server_with_no_realms(result)
- server = 1
+ server = 2
with mock.patch("analytics.views.support.compute_max_monthly_messages", return_value=1000):
result = self.client_get(
"/activity/remote/support", {"q": f"zulip-{server}.example.com"}
@@ -266,7 +275,9 @@ class TestRemoteServerSupportEndpoint(ZulipTestCase):
with mock.patch(
"analytics.views.support.compute_max_monthly_messages", side_effect=MissingDataError
):
- result = self.client_get("/activity/remote/support", {"q": "zulip-1.example.com"})
+ result = self.client_get(
+ "/activity/remote/support", {"q": f"zulip-{server}.example.com"}
+ )
self.assert_in_success_response(
["Max monthly messages: Recent data missing"], result
)
@@ -274,13 +285,13 @@ class TestRemoteServerSupportEndpoint(ZulipTestCase):
assert_realm_details_in_response(result, f"realm-name-{server}", f"realm-host-{server}")
check_sponsorship_request_no_website(result)
- server = 2
+ server = 3
result = self.client_get("/activity/remote/support", {"q": f"zulip-{server}.example.com"})
assert_server_details_in_response(result, f"zulip-{server}.example.com")
assert_realm_details_in_response(result, f"realm-name-{server}", f"realm-host-{server}")
check_sponsorship_request_with_website(result)
- server = 3
+ server = 4
result = self.client_get("/activity/remote/support", {"q": f"zulip-{server}.example.com"})
assert_server_details_in_response(result, f"zulip-{server}.example.com")
assert_realm_details_in_response(result, f"realm-name-{server}", f"realm-host-{server}")
diff --git a/analytics/views/support.py b/analytics/views/support.py
index c9c11c18f9..5a2f9cb9de 100644
--- a/analytics/views/support.py
+++ b/analytics/views/support.py
@@ -384,8 +384,10 @@ def get_remote_servers_for_support(
if not email_to_search and not hostname_to_search:
return []
- remote_servers_query = RemoteZulipServer.objects.order_by("id").prefetch_related(
- "remoterealm_set"
+ remote_servers_query = (
+ RemoteZulipServer.objects.order_by("id")
+ .exclude(deactivated=True)
+ .prefetch_related("remoterealm_set")
)
if email_to_search:
remote_servers_query = remote_servers_query.filter(contact_email__iexact=email_to_search)