def test_dissociate_sip_endpoint_associated_to_device(user, line, sip, extension, device): with a.line_endpoint_sip(line, sip), a.user_line(user, line), a.line_extension( line, extension), a.line_device(line, device): response = confd.lines(line['id']).endpoints.sip(sip['id']).delete() response.assert_match(400, e.resource_associated())
def test_updating_line_associated_with_autoprov_device_does_not_fail( line, sip, device): with a.line_endpoint_sip(line, sip, check=False): with db.queries() as queries: queries.associate_line_device(line['id'], device['id']) response = confd.lines(line['id']).put() response.assert_ok()
def test_delete_endpoint_dissociates_line(line, sip): with a.line_endpoint_sip(line, sip, check=False): response = confd.endpoints.sip(sip['id']).delete() response.assert_deleted() response = confd.lines(line['id']).endpoints.sip.get() response.assert_status(404)
def test_get_line_associated_to_a_sip_endpoint(line, sip): response = confd.endpoints.sip(sip['id']).lines.get() response.assert_status(404) with a.line_endpoint_sip(line, sip): response = confd.endpoints.sip(sip['id']).lines.get() assert_that(response.item, has_entries({'line_id': line['id'], 'endpoint': 'sip', 'endpoint_id': sip['id']}))
def test_associate_line_with_endpoint(line, sip, extension): with a.line_endpoint_sip(line, sip, check=False): url = confd.lines(line['id']).extensions response = url.post(extension_id=extension['id']) response.assert_created('lines', 'extensions') assert_that( response.item, has_entries({ 'line_id': line['id'], 'extension_id': extension['id'] }))
def test_given_user_has_incall_when_exporting_then_csv_has_incall_fields( user, line, sip, incall): expected = has_entries(uuid=user['uuid'], incall_exten=incall['exten'], incall_context=incall['context']) with a.line_endpoint_sip(line, sip), a.user_line(user, line), a.line_extension( line, incall): response = confd_csv.users.export.get() assert_that(response.csv(), has_item(expected))
def test_caller_id_on_sip_line(user, line, sip, extension): with a.line_endpoint_sip(line, sip), a.user_line(user, line), a.line_extension( line, extension): response = confd.lines(line['id']).get() assert_that( response.item, has_entries({ 'caller_id_name': 'Jôhn Smîth', 'caller_id_num': '1000' }))
def test_get_user_line_main_associated_endpoints_sip(user, line, sip): with a.line_endpoint_sip(line, sip), a.user_line(user, line): expected = has_entries({ 'username': has_length(8), 'secret': has_length(8), 'type': 'friend', 'host': 'dynamic', 'options': instance_of(list), }) response = confd.users( user['uuid']).lines.main.associated.endpoints.sip.get() assert_that(response.item, expected)
def test_search_on_summary_view(user, line, sip, extension): url = confd.users(view='summary') with a.line_endpoint_sip(line, sip), a.user_line(user, line), a.line_extension( line, extension): yield check_search, url, 'firstname', 'âbou', user['firstname'] yield check_search, url, 'lastname', 'man', user['lastname'] yield check_search, url, 'provisioning_code', line[ 'provisioning_code'], line['provisioning_code'] yield check_search, url, 'extension', extension['exten'], extension[ 'exten']
def test_given_user_has_multiple_incalls_when_exporting_then_csv_has_incall_fields( user, line, sip, incall1, incall2): expected_incall = ";".join([incall1['exten'], incall2['exten']]) expected_context = ";".join([incall1['context'], incall2['context']]) expected = has_entries(uuid=user['uuid'], incall_exten=expected_incall, incall_context=expected_context) with a.line_endpoint_sip(line, sip), a.user_line(user, line), \ a.line_extension(line, incall1), a.line_extension(line, incall2): response = confd_csv.users.export.get() assert_that(response.csv(), has_item(expected))
def test_given_user_has_sip_line_when_exporting_then_csv_has_line_fields( user, line, sip): expected = has_entries(uuid=user['uuid'], line_protocol="sip", provisioning_code=line['provisioning_code'], context=line['context'], sip_username=sip['username'], sip_secret=sip['secret']) with a.line_endpoint_sip(line, sip), a.user_line(user, line): response = confd_csv.users.export.get() assert_that(response.csv(), has_item(expected))
def test_put_errors(line, sip): line_put = confd.lines(line['id']).put yield s.check_missing_required_field_returns_error, line_put, 'context' yield s.check_bogus_field_returns_error, line_put, 'context', 123 yield s.check_bogus_field_returns_error, line_put, 'provisioning_code', 123456 yield s.check_bogus_field_returns_error, line_put, 'provisioning_code', 'number' yield s.check_bogus_field_returns_error, line_put, 'provisioning_code', None yield s.check_bogus_field_returns_error, line_put, 'position', 'one' yield s.check_bogus_field_returns_error, line_put, 'position', None yield s.check_bogus_field_returns_error, line_put, 'registrar', None yield s.check_bogus_field_returns_error, line_put, 'registrar', 123 yield s.check_bogus_field_returns_error, line_put, 'registrar', 'invalidregistrar' with a.line_endpoint_sip(line, sip): yield s.check_bogus_field_returns_error, line_put, 'caller_id_num', 'number' yield s.check_bogus_field_returns_error, line_put, 'caller_id_name', 123456
def test_summary_view_on_sip_endpoint(user, line, sip, extension): expected = has_entries(id=user['id'], uuid=user['uuid'], firstname=user['firstname'], lastname=user['lastname'], provisioning_code=line['provisioning_code'], extension=extension['exten'], context=extension['context'], entity=config.ENTITY_NAME, enabled=True, protocol='sip') with a.line_endpoint_sip(line, sip), a.line_extension(line, extension), \ a.user_line(user, line): response = confd.users.get(view='summary', id=user['id']) assert_that(response.items, contains(expected))
def test_given_config_registrar_has_changed_when_sip_line_updated_then_provd_updated( provd, user, line, sip, extension, device): registrar = provd.configs.get('default') registrar['registrar_main'] = '10.0.1.2' registrar['proxy_main'] = '11.1.2.3' provd.configs.update(registrar) with a.line_endpoint_sip(line, sip), a.user_line(user, line), \ a.line_extension(line, extension), a.line_device(line, device): response = confd.lines(line['id']).put() response.assert_updated() provd_config = provd.configs.get(device['id']) sip_line = provd_config['raw_config']['sip_lines']['1'] assert_that(sip_line, has_entries(registrar_ip='10.0.1.2', proxy_ip='11.1.2.3'))
def test_when_sip_username_and_password_are_updated_then_provd_is_updated( provd, user, line, sip, extension, device): with a.line_endpoint_sip(line, sip), a.user_line(user, line), \ a.line_extension(line, extension), a.line_device(line, device): response = confd.endpoints.sip(sip['id']).put(username="******", secret="mysecret") response.assert_updated() provd_config = provd.configs.get(device['id']) sip_line = provd_config['raw_config']['sip_lines']['1'] assert_that( sip_line, has_entries({ 'auth_username': '******', 'username': '******', 'password': '******' }))
def test_when_extension_updated_on_sip_line_then_provd_is_updated( user, line, sip, extension, device): exten = h.extension.find_available_exten(config.CONTEXT) line_cid = h.extension.find_available_exten(config.CONTEXT, exclude=[exten]) with a.line_endpoint_sip(line, sip), a.user_line(user, line), \ a.line_extension(line, extension), a.line_device(line, device): response = confd.extensions(extension['id']).put(exten=exten) response.assert_updated() response = confd.lines(line['id']).put(caller_id_num=line_cid) response.assert_updated() provd_config = provd.configs.get(device['id']) sip_line = provd_config['raw_config']['sip_lines']['1'] assert_that(sip_line, has_entries(number=exten))
def test_updating_user_line_or_extension_associated_with_autoprov_device_does_not_fail( user, line, sip, extension, device): with a.line_endpoint_sip(line, sip, check=False), a.line_extension(line, extension, check=False), \ a.user_line(user, line, check=False): with db.queries() as queries: queries.associate_line_device(line['id'], device['id']) response = confd.endpoints.sip(sip['id']).put() response.assert_ok() response = confd.lines(line['id']).put() response.assert_ok() response = confd.users(user['id']).put() response.assert_ok() response = confd.extensions(extension['id']).put() response.assert_ok()
def test_associate_with_another_endpoint_when_already_associated(line, sip1, sip2): with a.line_endpoint_sip(line, sip1): response = confd.lines(line['id']).endpoints.sip(sip2['id']).put() response.assert_match(400, e.resource_associated('Line', 'Endpoint'))
def test_associate_user_to_line_with_endpoint(user, line, sip): with a.line_endpoint_sip(line, sip, check=False): response = confd.users(user['id']).lines.post(line_id=line['id']) response.assert_created('users', 'lines') assert_that(response.item, has_entries({'user_id': user['id'], 'line_id': line['id']}))
def test_dissociate_when_associated_to_user(line, sip, user): with a.line_endpoint_sip(line, sip), a.user_line(user, line): response = confd.lines(line['id']).endpoints.sip(sip['id']).delete() response.assert_match(400, e.resource_associated('Line', 'User'))
def test_dissociate_when_associated_to_extension(line, sip, extension): with a.line_endpoint_sip(line, sip), a.line_extension(line, extension): response = confd.lines(line['id']).endpoints.sip(sip['id']).delete() response.assert_match(400, e.resource_associated('Line', 'Extension'))