def test_get_room_status_error(caplog, httpretty, room_name, error):
    RavemPlugin.settings.set("api_endpoint", RAVEM_TEST_API_ENDPOINT)
    httpretty.register_uri(
        httpretty.GET,
        RAVEM_TEST_API_ENDPOINT + "rooms/details",
        status=200,
        content_type="application/json",
        body=json.dumps({"error": error}),
    )

    room_verbose_name = "room_verbose_name"
    with pytest.raises(RavemException) as excinfo:
        get_room_status(room_name, room_verbose_name)

    assert str(
        excinfo.value
    ) == f"Failed to get status of room {room_verbose_name} with error: {error}"
    log = extract_logs(caplog, one=True, name="indico.plugin.ravem")
    assert log.message == f"Failed to get status of room {room_verbose_name} with error: {error}"

    assert len(httpretty.httpretty.latest_requests) == 1
    request = httpretty.last_request()

    assert request.path.startswith(RAVEM_TEST_PATH + "rooms/details")
    assert request.querystring == {
        "where": ["room_name"],
        "value": [room_name]
    }
Esempio n. 2
0
def test_get_room_status(httpretty, room_name, status, connected, endpoint, 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')
            }})
    )

    status = get_room_status(room_name)
    assert len(httpretty.httpretty.latest_requests) == 1
    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['vc_room_name'] == data.get('event_name')
    assert status['connected'] == connected
    assert status['service_type'] == data.get('event_type')
    assert status['room_endpoint'] == endpoint()
Esempio n. 3
0
 def _process(self):
     try:
         response = get_room_status(self.room_name, room_special_name=self.room_special_name)
         response['success'] = True
     except RavemException as err:
         response = {'success': False, 'reason': 'operation-failed', 'message': err.message}
     return jsonify(response)
Esempio n. 4
0
def test_get_room_status_service_not_found(caplog, httpretty, room_name):
    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': 'Service not found'})
    )

    with pytest.raises(RavemException) as excinfo:
        get_room_status(room_name)

    assert excinfo.value.message == "Vidyo is not supported in the room {0}".format(room_name)
    log = extract_logs(caplog, one=True, name='indico.plugin.ravem')
    assert log.message == "Vidyo is not supported in the room {0}".format(room_name)

    assert len(httpretty.httpretty.latest_requests) == 1
    request = httpretty.last_request()

    assert request.path.startswith(RAVEM_TEST_PATH + 'getstatus')
    assert request.querystring == {'service_name': ['videoconference'], 'where': ['room_name'], 'value': [room_name]}
Esempio n. 5
0
 def _process(self):
     if self.event_vc_room.vc_room.type == 'vidyo':
         return {
             'success': False,
             'reason': 'unsupported',
             'message': '<a target="_blank" href="https://cern.ch/go/6SNm">'
                        'Vidyo is no longer supported</a>'
         }
     try:
         response = get_room_status(self.room.name, self.room.verbose_name)
         response['success'] = True
     except RavemException as err:
         response = {'success': False, 'reason': err.reason, 'message': str(err)}
     return jsonify(response)
def test_get_room_status(httpretty, room_name, service_type, connected, data):
    RavemPlugin.settings.set("api_endpoint", RAVEM_TEST_API_ENDPOINT)
    service_api = get_api(service_type)
    vc_room_id = service_api.get_room_id(data)
    httpretty.register_uri(
        httpretty.GET,
        RAVEM_TEST_API_ENDPOINT + "rooms/details",
        status=200,
        content_type="application/json",
        body=json.dumps({
            "roomName":
            room_name,
            "deviceType":
            service_type,
            "services": [{
                "status": connected,
                "eventName": data["id"],
                "name": "videoconference",
            }],
        }),
    )

    status = get_room_status(room_name)
    assert len(httpretty.httpretty.latest_requests) == 1
    request = httpretty.last_request()

    assert request.path.startswith(RAVEM_TEST_PATH + "rooms/details")
    assert request.querystring == {
        "where": ["room_name"],
        "value": [room_name]
    }

    assert status["room_name"] == room_name
    assert status["connected"] == connected
    assert status["vc_room_id"] == vc_room_id
    assert status["service_type"] == service_type