def test_hit_ratelimits_as_remote_server(self) -> None: server_uuid = "1234-abcd" server = RemoteZulipServer( uuid=server_uuid, api_key="magic_secret_api_key", hostname="demo.example.com", last_updated=timezone_now(), ) server.save() endpoint = "/api/v1/remotes/push/register" payload = {"user_id": 10, "token": "111222", "token_kind": PushDeviceToken.GCM} try: # Remote servers can only make requests to the root subdomain. original_default_subdomain = self.DEFAULT_SUBDOMAIN self.DEFAULT_SUBDOMAIN = "" RateLimitedRemoteZulipServer(server).clear_history() with self.assertLogs("zerver.lib.rate_limiter", level="WARNING") as m: self.do_test_hit_ratelimits(lambda: self.uuid_post(server_uuid, endpoint, payload)) self.assertEqual( m.output, [ "WARNING:zerver.lib.rate_limiter:Remote server <RemoteZulipServer demo.example.com 1234-abcd> exceeded rate limits on domain api_by_remote_server" ], ) finally: self.DEFAULT_SUBDOMAIN = original_default_subdomain
def setUp(self): # type: () -> None self.server_uuid = "1234-abcd" server = RemoteZulipServer(uuid=self.server_uuid, api_key="magic_secret_api_key", hostname="demo.example.com", last_updated=now()) server.save() super().setUp()
def do_change_remote_server_plan_type(remote_server: RemoteZulipServer, plan_type: int) -> None: old_value = remote_server.plan_type remote_server.plan_type = plan_type remote_server.save(update_fields=["plan_type"]) RemoteZulipServerAuditLog.objects.create( event_type=RealmAuditLog.REMOTE_SERVER_PLAN_TYPE_CHANGED, server=remote_server, event_time=timezone_now(), extra_data={"old_value": old_value, "new_value": plan_type}, )
def do_deactivate_remote_server(remote_server: RemoteZulipServer) -> None: if remote_server.deactivated: billing_logger.warning( f"Cannot deactivate remote server with ID {remote_server.id}, " "server has already been deactivated.") return remote_server.deactivated = True remote_server.save(update_fields=["deactivated"]) RemoteZulipServerAuditLog.objects.create( event_type=RealmAuditLog.REMOTE_SERVER_DEACTIVATED, server=remote_server, event_time=timezone_now(), )