mirror of https://github.com/zulip/zulip.git
zilencer: Improve json error when plan doesn't allow push notifs.
This allows the self-hosted server to explicitly test for that exception
and catch and log it nicely.
(cherry picked from commit 5b03932d5c
)
This commit is contained in:
parent
3d8b9af76d
commit
0a1905ea8d
|
@ -51,6 +51,7 @@ class ErrorCode(Enum):
|
|||
STREAM_WILDCARD_MENTION_NOT_ALLOWED = auto()
|
||||
REMOTE_BILLING_UNAUTHENTICATED_USER = auto()
|
||||
REMOTE_REALM_SERVER_MISMATCH_ERROR = auto()
|
||||
PUSH_NOTIFICATIONS_DISALLOWED = auto()
|
||||
|
||||
|
||||
class JsonableError(Exception):
|
||||
|
|
|
@ -827,8 +827,11 @@ class PushBouncerNotificationTest(BouncerTestCase):
|
|||
payload,
|
||||
content_type="application/json",
|
||||
)
|
||||
self.assert_json_error(result, "Your plan doesn't allow sending push notifications.")
|
||||
self.assertEqual(orjson.loads(result.content)["code"], "BAD_REQUEST")
|
||||
self.assert_json_error(
|
||||
result,
|
||||
"Your plan doesn't allow sending push notifications. Reason provided by the server: Missing data",
|
||||
)
|
||||
self.assertEqual(orjson.loads(result.content)["code"], "PUSH_NOTIFICATIONS_DISALLOWED")
|
||||
|
||||
human_counts = {
|
||||
str(UserProfile.ROLE_REALM_ADMINISTRATOR): 1,
|
||||
|
@ -852,8 +855,11 @@ class PushBouncerNotificationTest(BouncerTestCase):
|
|||
payload,
|
||||
content_type="application/json",
|
||||
)
|
||||
self.assert_json_error(result, "Your plan doesn't allow sending push notifications.")
|
||||
self.assertEqual(orjson.loads(result.content)["code"], "BAD_REQUEST")
|
||||
self.assert_json_error(
|
||||
result,
|
||||
"Your plan doesn't allow sending push notifications. Reason provided by the server: No plan many users",
|
||||
)
|
||||
self.assertEqual(orjson.loads(result.content)["code"], "PUSH_NOTIFICATIONS_DISALLOWED")
|
||||
|
||||
# Check that sponsored realms are allowed to send push notifications.
|
||||
remote_server.plan_type = RemoteRealm.PLAN_TYPE_COMMUNITY
|
||||
|
|
|
@ -432,6 +432,16 @@ class OldZulipServerError(JsonableError):
|
|||
self._msg: str = msg
|
||||
|
||||
|
||||
class PushNotificationsDisallowedError(JsonableError):
|
||||
code = ErrorCode.PUSH_NOTIFICATIONS_DISALLOWED
|
||||
|
||||
def __init__(self, reason: str) -> None:
|
||||
msg = _(
|
||||
"Your plan doesn't allow sending push notifications. Reason provided by the server: {reason}"
|
||||
).format(reason=reason)
|
||||
super().__init__(msg)
|
||||
|
||||
|
||||
@has_request_variables
|
||||
def remote_server_notify_push(
|
||||
request: HttpRequest,
|
||||
|
@ -462,7 +472,8 @@ def remote_server_notify_push(
|
|||
if server.last_api_feature_level is None:
|
||||
raise OldZulipServerError(_("Your plan doesn't allow sending push notifications."))
|
||||
else:
|
||||
raise JsonableError(_("Your plan doesn't allow sending push notifications."))
|
||||
reason = push_status.message
|
||||
raise PushNotificationsDisallowedError(reason=reason)
|
||||
|
||||
android_devices = list(
|
||||
RemotePushDeviceToken.objects.filter(
|
||||
|
|
Loading…
Reference in New Issue