mirror of https://github.com/zulip/zulip.git
api: Fix encoding of strings in video calls endpoint.
This removes unnecessary json_validator for string parameters in the BigBlueButton video calls endpoints. Note that this breaks links to video meetings sent before the upgrade; there's not much we can do about that. Since this is the last commit in this series, we update the ZULIP_FEATURE_LEVEL for this batch of changes. Fixes part of #18035.
This commit is contained in:
parent
36ad9b7d0e
commit
00647b6fa7
|
@ -10,6 +10,21 @@ below features are supported.
|
||||||
|
|
||||||
## Changes in Zulip 4.0
|
## Changes in Zulip 4.0
|
||||||
|
|
||||||
|
**Feature level 63**
|
||||||
|
|
||||||
|
* `PATCH /settings/notifications`: Removed unnecessary JSON-encoding of string
|
||||||
|
parameter `notification_sound`.
|
||||||
|
* `PATCH /settings/display`: Removed unnecessary JSON-encoding of string
|
||||||
|
parameter `default_language`.
|
||||||
|
* `POST /users/me/tutorial_status`: Removed unnecessary JSON-encoding of string
|
||||||
|
parameter `status`.
|
||||||
|
* `POST /realm/domains`: Removed unnecessary JSON-encoding of string
|
||||||
|
parameter `domain`.
|
||||||
|
* `PATCH /default_stream_groups/{user_id}`: Removed unnecessary JSON-encoding of string
|
||||||
|
parameters `new_group_name` and `new_description`.
|
||||||
|
* `POST /users/me/hotspots`: Removed unnecessary JSON-encoding of string
|
||||||
|
parameter `hotspot`.
|
||||||
|
|
||||||
**Feature level 62**
|
**Feature level 62**
|
||||||
|
|
||||||
* Added `moderators only` option for `wildcard_mention_policy`.
|
* Added `moderators only` option for `wildcard_mention_policy`.
|
||||||
|
|
|
@ -30,7 +30,7 @@ DESKTOP_WARNING_VERSION = "5.2.0"
|
||||||
#
|
#
|
||||||
# Changes should be accompanied by documentation explaining what the
|
# Changes should be accompanied by documentation explaining what the
|
||||||
# new level means in templates/zerver/api/changelog.md.
|
# new level means in templates/zerver/api/changelog.md.
|
||||||
API_FEATURE_LEVEL = 62
|
API_FEATURE_LEVEL = 63
|
||||||
|
|
||||||
# Bump the minor PROVISION_VERSION to indicate that folks should provision
|
# Bump the minor PROVISION_VERSION to indicate that folks should provision
|
||||||
# only when going from an old version of the code to a newer version. Bump
|
# only when going from an old version of the code to a newer version. Bump
|
||||||
|
|
|
@ -176,8 +176,8 @@ class TestVideoCall(ZulipTestCase):
|
||||||
self.assert_json_success(response)
|
self.assert_json_success(response)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
response.json()["url"],
|
response.json()["url"],
|
||||||
"/calls/bigbluebutton/join?meeting_id=%22zulip-1%22&password=%22AAAAAAAAAA%22"
|
"/calls/bigbluebutton/join?meeting_id=zulip-1&password=AAAAAAAAAA"
|
||||||
"&checksum=%22697939301a52d3a2f0b3c3338895c1a5ab528933%22",
|
"&checksum=697939301a52d3a2f0b3c3338895c1a5ab528933",
|
||||||
)
|
)
|
||||||
|
|
||||||
@responses.activate
|
@responses.activate
|
||||||
|
@ -189,7 +189,7 @@ class TestVideoCall(ZulipTestCase):
|
||||||
)
|
)
|
||||||
response = self.client_get(
|
response = self.client_get(
|
||||||
"/calls/bigbluebutton/join",
|
"/calls/bigbluebutton/join",
|
||||||
{"meeting_id": '"zulip-1"', "password": '"a"', "checksum": '"check"'},
|
{"meeting_id": "zulip-1", "password": "a", "checksum": "check"},
|
||||||
)
|
)
|
||||||
self.assertEqual(response.status_code, 302)
|
self.assertEqual(response.status_code, 302)
|
||||||
self.assertEqual(isinstance(response, HttpResponseRedirect), True)
|
self.assertEqual(isinstance(response, HttpResponseRedirect), True)
|
||||||
|
@ -209,7 +209,7 @@ class TestVideoCall(ZulipTestCase):
|
||||||
)
|
)
|
||||||
response = self.client_get(
|
response = self.client_get(
|
||||||
"/calls/bigbluebutton/join",
|
"/calls/bigbluebutton/join",
|
||||||
{"meeting_id": '"zulip-1"', "password": '"a"', "checksum": '"check"'},
|
{"meeting_id": "zulip-1", "password": "a", "checksum": "check"},
|
||||||
)
|
)
|
||||||
self.assert_json_error(response, "Error authenticating to the Big Blue Button server.")
|
self.assert_json_error(response, "Error authenticating to the Big Blue Button server.")
|
||||||
|
|
||||||
|
@ -224,7 +224,7 @@ class TestVideoCall(ZulipTestCase):
|
||||||
)
|
)
|
||||||
response = self.client_get(
|
response = self.client_get(
|
||||||
"/calls/bigbluebutton/join",
|
"/calls/bigbluebutton/join",
|
||||||
{"meeting_id": '"zulip-1"', "password": '"a"', "checksum": '"check"'},
|
{"meeting_id": "zulip-1", "password": "a", "checksum": "check"},
|
||||||
)
|
)
|
||||||
self.assert_json_error(response, "Error connecting to the Big Blue Button server.")
|
self.assert_json_error(response, "Error connecting to the Big Blue Button server.")
|
||||||
|
|
||||||
|
@ -238,7 +238,7 @@ class TestVideoCall(ZulipTestCase):
|
||||||
)
|
)
|
||||||
response = self.client_get(
|
response = self.client_get(
|
||||||
"/calls/bigbluebutton/join",
|
"/calls/bigbluebutton/join",
|
||||||
{"meeting_id": '"zulip-1"', "password": '"a"', "checksum": '"check"'},
|
{"meeting_id": "zulip-1", "password": "a", "checksum": "check"},
|
||||||
)
|
)
|
||||||
self.assert_json_error(response, "Big Blue Button server returned an unexpected error.")
|
self.assert_json_error(response, "Big Blue Button server returned an unexpected error.")
|
||||||
|
|
||||||
|
@ -246,6 +246,6 @@ class TestVideoCall(ZulipTestCase):
|
||||||
with self.settings(BIG_BLUE_BUTTON_SECRET=None, BIG_BLUE_BUTTON_URL=None):
|
with self.settings(BIG_BLUE_BUTTON_SECRET=None, BIG_BLUE_BUTTON_URL=None):
|
||||||
response = self.client_get(
|
response = self.client_get(
|
||||||
"/calls/bigbluebutton/join",
|
"/calls/bigbluebutton/join",
|
||||||
{"meeting_id": '"zulip-1"', "password": '"a"', "checksum": '"check"'},
|
{"meeting_id": "zulip-1", "password": "a", "checksum": "check"},
|
||||||
)
|
)
|
||||||
self.assert_json_error(response, "Big Blue Button is not configured.")
|
self.assert_json_error(response, "Big Blue Button is not configured.")
|
||||||
|
|
|
@ -188,9 +188,9 @@ def get_bigbluebutton_url(request: HttpRequest, user_profile: UserProfile) -> Ht
|
||||||
"/calls/bigbluebutton/join",
|
"/calls/bigbluebutton/join",
|
||||||
urlencode(
|
urlencode(
|
||||||
{
|
{
|
||||||
"meeting_id": '"' + id + '"',
|
"meeting_id": id,
|
||||||
"password": '"' + password + '"',
|
"password": password,
|
||||||
"checksum": '"' + checksum + '"',
|
"checksum": checksum,
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
@ -207,9 +207,9 @@ def get_bigbluebutton_url(request: HttpRequest, user_profile: UserProfile) -> Ht
|
||||||
@has_request_variables
|
@has_request_variables
|
||||||
def join_bigbluebutton(
|
def join_bigbluebutton(
|
||||||
request: HttpRequest,
|
request: HttpRequest,
|
||||||
meeting_id: str = REQ(json_validator=check_string),
|
meeting_id: str = REQ(),
|
||||||
password: str = REQ(json_validator=check_string),
|
password: str = REQ(),
|
||||||
checksum: str = REQ(json_validator=check_string),
|
checksum: str = REQ(),
|
||||||
) -> HttpResponse:
|
) -> HttpResponse:
|
||||||
if settings.BIG_BLUE_BUTTON_URL is None or settings.BIG_BLUE_BUTTON_SECRET is None:
|
if settings.BIG_BLUE_BUTTON_URL is None or settings.BIG_BLUE_BUTTON_SECRET is None:
|
||||||
return json_error(_("Big Blue Button is not configured."))
|
return json_error(_("Big Blue Button is not configured."))
|
||||||
|
|
Loading…
Reference in New Issue