def test_disconnect_room_already_disconnected(httpretty, room_name, status, data): RavemPlugin.settings.set('api_endpoint', RAVEM_TEST_API_ENDPOINT) httpretty.register_uri( httpretty.GET, RAVEM_TEST_API_ENDPOINT + 'getstatus', status=200, content_type='application/json', body=json.dumps({ 'result': { 'name': room_name, 'vc_endpoint_legacy_hostname': data.get('legacy_hostname'), 'vc_endpoint_vidyo_username': data.get('vidyo_username'), 'vc_endpoint_legacy_ip': data.get('legacy_ip'), 'vc_endpoint_vidyo_extension': data.get('vidyo_extension'), 'services': [{ 'status': status, 'event_name': data.get('event_name'), 'name': 'videoconference', 'event_type': data.get('event_type') }], 'common_name': data.get('common_name') }}) ) httpretty.register_uri( httpretty.POST, RAVEM_TEST_API_ENDPOINT + 'videoconference/disconnect', status=200, content_type='application/json', body=json.dumps({'error': 'Call already disconnected'}) ) vc_room = MagicMock() vc_room.name = data.get('event_name') with pytest.raises(RavemOperationException) as excinfo: disconnect_room(room_name, vc_room) assert excinfo.value.message == "The room {room} is already disconnected.".format(room=room_name) assert excinfo.value.reason == 'already-disconnected' assert len(httpretty.httpretty.latest_requests) == 2 status_request = httpretty.httpretty.latest_requests[0] request = httpretty.last_request() assert request.path.startswith(RAVEM_TEST_PATH + 'videoconference/disconnect') query = { 'type': [data.get('event_type')], 'where': ['room_name'], 'value': [room_name], } if data.get('event_type') == 'vidyo': query['vidyo_room_name'] = [data.get('event_name')] assert request.querystring == query assert status_request.path.startswith(RAVEM_TEST_PATH + 'getstatus') assert status_request.querystring == { 'service_name': ['videoconference'], 'where': ['room_name'], 'value': [room_name] }
def test_disconnect_room(httpretty, room_name, status, data): RavemPlugin.settings.set('api_endpoint', RAVEM_TEST_API_ENDPOINT) httpretty.register_uri( httpretty.GET, RAVEM_TEST_API_ENDPOINT + 'getstatus', status=200, content_type='application/json', body=json.dumps({ 'result': { 'name': room_name, 'vc_endpoint_legacy_hostname': data.get('legacy_hostname'), 'vc_endpoint_vidyo_username': data.get('vidyo_username'), 'vc_endpoint_legacy_ip': data.get('legacy_ip'), 'vc_endpoint_vidyo_extension': data.get('vidyo_extension'), 'services': [{ 'status': status, 'event_name': data.get('event_name'), 'name': 'videoconference', 'event_type': data.get('event_type') }], 'common_name': data.get('common_name') }}) ) httpretty.register_uri( httpretty.POST, RAVEM_TEST_API_ENDPOINT + 'videoconference/disconnect', status=200, content_type='application/json', body=json.dumps({'result': 'OK'}) ) vc_room = MagicMock() vc_room.name = data.get('event_name') disconnect_room(room_name, vc_room) assert len(httpretty.httpretty.latest_requests) == 2 status_request = httpretty.httpretty.latest_requests[0] request = httpretty.last_request() assert request.path.startswith(RAVEM_TEST_PATH + 'videoconference/disconnect') query = { 'type': [data.get('event_type')], 'where': ['room_name'], 'value': [room_name], } if data.get('event_type') == 'vidyo': query['vidyo_room_name'] = [data.get('event_name')] assert request.querystring == query assert status_request.path.startswith(RAVEM_TEST_PATH + 'getstatus') assert status_request.querystring == { 'service_name': ['videoconference'], 'where': ['room_name'], 'value': [room_name] }
def _process(self): force = request.args.get('force') == '1' try: disconnect_room(self.room_name, self.event_vc_room.vc_room, force=force, room_special_name=self.room_special_name) except RavemOperationException as err: response = {'success': False, 'reason': err.reason, 'message': err.message} except RavemException as err: response = {'success': False, 'reason': 'operation-failed', 'message': err.message} else: response = {'success': True} return jsonify(response)
def test_disconnect_room_connected_other(httpretty, room_name, status, data): RavemPlugin.settings.set('api_endpoint', RAVEM_TEST_API_ENDPOINT) different_vc_room = 'different_vc_room' httpretty.register_uri( httpretty.GET, RAVEM_TEST_API_ENDPOINT + 'getstatus', status=200, content_type='application/json', body=json.dumps({ 'result': { 'name': room_name, 'vc_endpoint_legacy_hostname': data.get('legacy_hostname'), 'vc_endpoint_vidyo_username': data.get('vidyo_username'), 'vc_endpoint_legacy_ip': data.get('legacy_ip'), 'vc_endpoint_vidyo_extension': data.get('vidyo_extension'), 'services': [{ 'status': status, 'event_name': different_vc_room, 'name': 'videoconference', 'event_type': data.get('event_type') }], 'common_name': data.get('common_name') }}) ) vc_room = MagicMock() vc_room.name = data.get('event_name') with pytest.raises(RavemOperationException) as excinfo: disconnect_room(room_name, vc_room) assert excinfo.value.message == "The room {0} is connected to an other Vidyo room: {1}".format(room_name, different_vc_room) assert excinfo.value.reason == 'connected-other' assert len(httpretty.httpretty.latest_requests) == 1 status_request = httpretty.httpretty.latest_requests[0] request = httpretty.last_request() assert request.path.startswith(RAVEM_TEST_PATH + 'getstatus') assert request.querystring == {'service_name': ['videoconference'], 'where': ['room_name'], 'value': [room_name]} assert status_request.path.startswith(RAVEM_TEST_PATH + 'getstatus') assert status_request.querystring == { 'service_name': ['videoconference'], 'where': ['room_name'], 'value': [room_name] }
def _process(self): force = request.args.get('force') == '1' try: success = disconnect_room(self.room.name, self.event_vc_room.vc_room, force=force, room_verbose_name=self.room.verbose_name) response = {'success': success} except RavemException as err: response = {'success': False, 'reason': err.reason, 'message': str(err)} return jsonify(response)
def test_disconnect_room_force(caplog, httpretty, room_name, status, data): caplog.set_level(logging.INFO) RavemPlugin.settings.set('api_endpoint', RAVEM_TEST_API_ENDPOINT) different_vc_room = 'different_vc_room' httpretty.register_uri( httpretty.GET, RAVEM_TEST_API_ENDPOINT + 'getstatus', status=200, content_type='application/json', body=json.dumps({ 'result': { 'name': room_name, 'vc_endpoint_legacy_hostname': data.get('legacy_hostname'), 'vc_endpoint_vidyo_username': data.get('vidyo_username'), 'vc_endpoint_legacy_ip': data.get('legacy_ip'), 'vc_endpoint_vidyo_extension': data.get('vidyo_extension'), 'services': [{ 'status': status, 'event_name': different_vc_room, 'name': 'videoconference', 'event_type': data.get('event_type') }], 'common_name': data.get('common_name') }}) ) httpretty.register_uri( httpretty.POST, RAVEM_TEST_API_ENDPOINT + 'videoconference/disconnect', status=200, content_type='application/json', body=json.dumps({'result': 'OK'}) ) vc_room = MagicMock() vc_room.name = data.get('event_name') disconnect_room(room_name, vc_room, force=True) log = extract_logs(caplog, one=True, name='indico.plugin.ravem') assert log.message == "Force disconnect of room {0} from vc_room {1} (expected to disconnect from vc_room {2})" \ .format(room_name, different_vc_room, data.get('event_name')) assert len(httpretty.httpretty.latest_requests) == 2 status_request = httpretty.httpretty.latest_requests[0] request = httpretty.last_request() assert request.path.startswith(RAVEM_TEST_PATH + 'videoconference/disconnect') query = { 'type': [data.get('event_type')], 'where': ['room_name'], 'value': [room_name], } if data.get('event_type') == 'vidyo': query['vidyo_room_name'] = [different_vc_room] assert request.querystring == query assert status_request.path.startswith(RAVEM_TEST_PATH + 'getstatus') assert status_request.querystring == { 'service_name': ['videoconference'], 'where': ['room_name'], 'value': [room_name] }
def test_disconnect_room_error(caplog, httpretty, room_name, status, data): RavemPlugin.settings.set('api_endpoint', RAVEM_TEST_API_ENDPOINT) error_message = 'Some internal error' httpretty.register_uri( httpretty.GET, RAVEM_TEST_API_ENDPOINT + 'getstatus', status=200, content_type='application/json', body=json.dumps({ 'result': { 'name': room_name, 'vc_endpoint_legacy_hostname': data.get('legacy_hostname'), 'vc_endpoint_vidyo_username': data.get('vidyo_username'), 'vc_endpoint_legacy_ip': data.get('legacy_ip'), 'vc_endpoint_vidyo_extension': data.get('vidyo_extension'), 'services': [{ 'status': status, 'event_name': data.get('event_name'), 'name': 'videoconference', 'event_type': data.get('event_type') }], 'common_name': data.get('common_name') }}) ) httpretty.register_uri( httpretty.POST, RAVEM_TEST_API_ENDPOINT + 'videoconference/disconnect', status=200, content_type='application/json', body=json.dumps({'error': error_message}) ) vc_room = MagicMock() vc_room.name = data.get('event_name') with pytest.raises(RavemException) as excinfo: disconnect_room(room_name, vc_room) assert excinfo.value.message == "Failed to disconnect the room {0} from the Vidyo room {1} with error: {2}" \ .format(room_name, data.get('event_name'), error_message) log = extract_logs(caplog, one=True, name='indico.plugin.ravem') assert log.message == "Failed to disconnect the room {0} from the Vidyo room {1} with error: {2}" \ .format(room_name, data.get('event_name'), error_message) assert len(httpretty.httpretty.latest_requests) == 2 status_request = httpretty.httpretty.latest_requests[0] request = httpretty.last_request() assert request.path.startswith(RAVEM_TEST_PATH + 'videoconference/disconnect') query = { 'type': [data.get('event_type')], 'where': ['room_name'], 'value': [room_name], } if data.get('event_type') == 'vidyo': query['vidyo_room_name'] = [data.get('event_name')] assert request.querystring == query assert status_request.path.startswith(RAVEM_TEST_PATH + 'getstatus') assert status_request.querystring == { 'service_name': ['videoconference'], 'where': ['room_name'], 'value': [room_name] }