tests: Create subclasses for create video call tests.

Separates tests for Zoom and Big Blue Button video call
intgrations into separate sublcasses, ZoomVideoCallTest
and BigBlueButtonVideoCallTest respectively.
This commit is contained in:
Lauryn Menard
2025-02-03 16:24:08 +01:00
committed by Tim Abbott
parent f13a1a48f7
commit cb68d11ee3

View File

@@ -10,33 +10,14 @@ from zerver.lib.test_classes import ZulipTestCase
from zerver.lib.url_encoding import append_url_query_string
class TestVideoCall(ZulipTestCase):
class ZoomVideoCallTest(ZulipTestCase):
@override
def setUp(self) -> None:
super().setUp()
self.user = self.example_user("hamlet")
self.login_user(self.user)
# Signing for bbb
self.signer = Signer()
self.signed_bbb_a_object = self.signer.sign_object(
{
"meeting_id": "a",
"name": "a",
"lock_settings_disable_cam": True,
"moderator": self.user.id,
}
)
# For testing viewer role (different creator / moderator from self)
self.signed_bbb_a_object_different_creator = self.signer.sign_object(
{
"meeting_id": "a",
"name": "a",
"lock_settings_disable_cam": True,
"moderator": self.example_user("cordelia").id,
}
)
def test_register_video_request_no_settings(self) -> None:
def test_register_zoom_request_no_settings(self) -> None:
with self.settings(VIDEO_ZOOM_CLIENT_ID=None):
response = self.client_get("/calls/zoom/register")
self.assert_json_error(
@@ -44,7 +25,7 @@ class TestVideoCall(ZulipTestCase):
"Zoom credentials have not been configured",
)
def test_register_video_request(self) -> None:
def test_register_zoom_request(self) -> None:
response = self.client_get("/calls/zoom/register")
self.assertEqual(response.status_code, 302)
@@ -141,7 +122,7 @@ class TestVideoCall(ZulipTestCase):
response = self.client_post("/json/calls/zoom/create")
self.assert_json_error(response, "Invalid Zoom access token")
def test_create_video_realm_redirect(self) -> None:
def test_create_zoom_realm_redirect(self) -> None:
response = self.client_get(
"/calls/zoom/complete",
{"code": "code", "state": '{"realm":"zephyr","sid":"somesid"}'},
@@ -150,7 +131,7 @@ class TestVideoCall(ZulipTestCase):
self.assertIn("http://zephyr.testserver/", response["Location"])
self.assertIn("somesid", response["Location"])
def test_create_video_sid_error(self) -> None:
def test_create_zoom_sid_error(self) -> None:
response = self.client_get(
"/calls/zoom/complete",
{"code": "code", "state": '{"realm":"zulip","sid":"bad"}'},
@@ -158,7 +139,7 @@ class TestVideoCall(ZulipTestCase):
self.assert_json_error(response, "Invalid Zoom session identifier")
@responses.activate
def test_create_video_credential_error(self) -> None:
def test_create_zoom_credential_error(self) -> None:
responses.add(responses.POST, "https://zoom.us/oauth/token", status=400)
response = self.client_get(
@@ -168,7 +149,7 @@ class TestVideoCall(ZulipTestCase):
self.assert_json_error(response, "Invalid Zoom credentials")
@responses.activate
def test_create_video_refresh_error(self) -> None:
def test_create_zoom_refresh_error(self) -> None:
responses.add(
responses.POST,
"https://zoom.us/oauth/token",
@@ -187,7 +168,7 @@ class TestVideoCall(ZulipTestCase):
self.assert_json_error(response, "Invalid Zoom access token")
@responses.activate
def test_create_video_request_error(self) -> None:
def test_create_zoom_request_error(self) -> None:
responses.add(
responses.POST,
"https://zoom.us/oauth/token",
@@ -239,6 +220,32 @@ class TestVideoCall(ZulipTestCase):
)
self.assert_json_success(response)
class BigBlueButtonVideoCallTest(ZulipTestCase):
@override
def setUp(self) -> None:
super().setUp()
self.user = self.example_user("hamlet")
self.login_user(self.user)
self.signer = Signer()
self.signed_bbb_a_object = self.signer.sign_object(
{
"meeting_id": "a",
"name": "a",
"lock_settings_disable_cam": True,
"moderator": self.user.id,
}
)
# For testing viewer role (different creator / moderator from self)
self.signed_bbb_a_object_different_creator = self.signer.sign_object(
{
"meeting_id": "a",
"name": "a",
"lock_settings_disable_cam": True,
"moderator": self.example_user("cordelia").id,
}
)
def test_create_bigbluebutton_link(self) -> None:
with (
mock.patch("zerver.views.video_calls.random.randint", return_value="1"),