Пример #1
0
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]
    }
Пример #2
0
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]
    }
Пример #3
0
    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)
Пример #4
0
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]
    }
Пример #5
0
 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)
Пример #6
0
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]
    }
Пример #7
0
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]
    }