Beispiel #1
0
    def test_bbb_end_attendee(self):
        """End a meeting in current classroom related server."""
        classroom = ClassroomFactory(
            meeting_id="21e6634f-ab6f-4c77-a665-4229c61b479a",
            title="Classroom 1",
            attendee_password="******",
            moderator_password="******",
        )

        responses.add(
            responses.GET,
            "https://10.7.7.1/bigbluebutton/api/end",
            match=[
                responses.matchers.query_param_matcher({
                    "meetingID":
                    "21e6634f-ab6f-4c77-a665-4229c61b479a",
                    "password":
                    classroom.attendee_password,
                    "checksum":
                    "471ac2a7f199c26fe9e58bf42145ea0d7ea7a3ec",
                })
            ],
            body="""<response>
                <returncode>FAILED</returncode>
                <messageKey>invalidPassword</messageKey>
                <message>You must supply the moderator password for this call.</message>
            </response>
            """,
            status=200,
        )

        with self.assertRaises(ApiMeetingException) as context:
            end(classroom, moderator=False)
        self.assertEqual(
            str(context.exception),
            "You must supply the moderator password for this call.",
        )
Beispiel #2
0
    def service_end(self, request, *args, **kwargs):
        """End a Big Blue Button meeting.

        Parameters
        ----------
        request : Type[django.http.request.HttpRequest]
            The request on the API endpoint
        pk: string
            The primary key of the meeting

        Returns
        -------
        Type[rest_framework.response.Response]
            HttpResponse with the serialized meeting.
        """
        try:
            roles = request.user.token.payload.get("roles")
            moderator = "administrator" in roles or "instructor" in roles
            response = end(meeting=self.get_object(), moderator=moderator)
            status = 200
        except ApiMeetingException as exception:
            response = {"message": str(exception)}
            status = 400
        return Response(response, status=status)
Beispiel #3
0
    def test_bbb_end_moderator(self):
        """End a meeting in current classroom related server."""
        classroom = ClassroomFactory(
            meeting_id="21e6634f-ab6f-4c77-a665-4229c61b479a",
            title="Classroom 1",
            attendee_password="******",
            moderator_password="******",
        )

        # initial end request
        responses.add(
            responses.GET,
            "https://10.7.7.1/bigbluebutton/api/end",
            match=[
                responses.matchers.query_param_matcher({
                    "meetingID":
                    "21e6634f-ab6f-4c77-a665-4229c61b479a",
                    "password":
                    classroom.moderator_password,
                    "checksum":
                    "3e7b6970d927f542261f18d6c2c10b5d94bcb55c",
                })
            ],
            body="""<response>
                <returncode>SUCCESS</returncode>
                <messageKey>sentEndMeetingRequest</messageKey>
                <message>A request to end the meeting was sent.</message>
            </response>
            """,
            status=200,
        )
        # first poll request meeting still exists
        responses.add(
            responses.GET,
            "https://10.7.7.1/bigbluebutton/api/getMeetingInfo",
            body="""<response>
                <returncode>SUCCESS</returncode>
                <meetingName>Super bbb classroom</meetingName>
                <meetingID>b3fc0805-c9fb-4e62-b12d-d4472986406b</meetingID>
            </response>
            """,
            status=200,
        )
        # second poll request meeting does not exist
        responses.add(
            responses.GET,
            "https://10.7.7.1/bigbluebutton/api/getMeetingInfo",
            body="""<response>
                <returncode>FAILED</returncode>
                <messageKey>notFound</messageKey>
                <message>We could not find a meeting with that meeting ID</message>
            </response>
            """,
            status=200,
        )

        api_response = end(classroom, moderator=True)
        self.assertDictEqual(
            {
                "message": "A request to end the meeting was sent.",
                "messageKey": "sentEndMeetingRequest",
                "returncode": "SUCCESS",
            },
            api_response,
        )
        self.assertEqual(classroom.started, False)
        self.assertEqual(classroom.ended, True)