mirror of https://github.com/zulip/zulip.git
zilencer: Add endpoint for deactivating remote server registration.
This commit is contained in:
parent
94d00ca942
commit
3bc0f8c6f9
|
@ -76,6 +76,7 @@ from zerver.models import (
|
|||
get_realm,
|
||||
get_stream,
|
||||
)
|
||||
from zilencer.models import RemoteZulipServerAuditLog
|
||||
|
||||
if settings.ZILENCER_ENABLED:
|
||||
from zilencer.models import (
|
||||
|
@ -2485,6 +2486,44 @@ class TestPushNotificationsContent(ZulipTestCase):
|
|||
|
||||
@skipUnless(settings.ZILENCER_ENABLED, "requires zilencer")
|
||||
class PushBouncerSignupTest(ZulipTestCase):
|
||||
def test_deactivate_remote_server(self) -> None:
|
||||
zulip_org_id = str(uuid.uuid4())
|
||||
zulip_org_key = get_random_string(64)
|
||||
request = dict(
|
||||
zulip_org_id=zulip_org_id,
|
||||
zulip_org_key=zulip_org_key,
|
||||
hostname="example.com",
|
||||
contact_email="server-admin@example.com",
|
||||
)
|
||||
result = self.client_post("/api/v1/remotes/server/register", request)
|
||||
self.assert_json_success(result)
|
||||
server = RemoteZulipServer.objects.get(uuid=zulip_org_id)
|
||||
self.assertEqual(server.hostname, "example.com")
|
||||
self.assertEqual(server.contact_email, "server-admin@example.com")
|
||||
|
||||
request = dict(zulip_org_id=zulip_org_id, zulip_org_key=zulip_org_key)
|
||||
result = self.uuid_post(
|
||||
zulip_org_id, "/api/v1/remotes/server/deactivate", request, subdomain=""
|
||||
)
|
||||
self.assert_json_success(result)
|
||||
|
||||
server = RemoteZulipServer.objects.get(uuid=zulip_org_id)
|
||||
remote_realm_audit_log = RemoteZulipServerAuditLog.objects.filter(
|
||||
event_type=RealmAuditLog.REMOTE_SERVER_DEACTIVATED
|
||||
).last()
|
||||
assert remote_realm_audit_log is not None
|
||||
self.assertTrue(server.deactivated)
|
||||
|
||||
# Now test that trying to deactivate again reports the right error.
|
||||
result = self.uuid_post(
|
||||
zulip_org_id, "/api/v1/remotes/server/deactivate", request, subdomain=""
|
||||
)
|
||||
self.assert_json_error(
|
||||
result,
|
||||
"The mobile push notification service registration for your server has been deactivated",
|
||||
status_code=401,
|
||||
)
|
||||
|
||||
def test_push_signup_invalid_host(self) -> None:
|
||||
zulip_org_id = str(uuid.uuid4())
|
||||
zulip_org_key = get_random_string(64)
|
||||
|
|
|
@ -5,6 +5,7 @@ from django.urls import path
|
|||
|
||||
from zerver.lib.rest import rest_path
|
||||
from zilencer.views import (
|
||||
deactivate_remote_server,
|
||||
register_remote_push_device,
|
||||
register_remote_server,
|
||||
remote_server_check_analytics,
|
||||
|
@ -24,6 +25,7 @@ v1_api_and_json_patterns = [
|
|||
rest_path("remotes/push/notify", POST=remote_server_notify_push),
|
||||
# Push signup doesn't use the REST API, since there's no auth.
|
||||
path("remotes/server/register", register_remote_server),
|
||||
rest_path("remotes/server/deactivate", POST=deactivate_remote_server),
|
||||
# For receiving table data used in analytics and billing
|
||||
rest_path("remotes/server/analytics", POST=remote_server_post_analytics),
|
||||
rest_path("remotes/server/analytics/status", GET=remote_server_check_analytics),
|
||||
|
|
|
@ -13,6 +13,7 @@ from django.utils.translation import gettext as err_
|
|||
from django.views.decorators.csrf import csrf_exempt
|
||||
|
||||
from analytics.lib.counts import COUNT_STATS
|
||||
from corporate.lib.stripe import do_deactivate_remote_server
|
||||
from zerver.decorator import InvalidZulipServerKeyError, require_post
|
||||
from zerver.lib.exceptions import JsonableError
|
||||
from zerver.lib.push_notifications import (
|
||||
|
@ -75,6 +76,17 @@ def validate_bouncer_token_request(
|
|||
return server
|
||||
|
||||
|
||||
@csrf_exempt
|
||||
@require_post
|
||||
@has_request_variables
|
||||
def deactivate_remote_server(
|
||||
request: HttpRequest,
|
||||
remote_server: RemoteZulipServer,
|
||||
) -> HttpResponse:
|
||||
do_deactivate_remote_server(remote_server)
|
||||
return json_success()
|
||||
|
||||
|
||||
@csrf_exempt
|
||||
@require_post
|
||||
@has_request_variables
|
||||
|
|
Loading…
Reference in New Issue