def test_update_ipbx(app, client): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.ipbx import IPBX from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.tenant import Tenant tenant = Tenant(name='fabio', uuid='5a6c0c40-b481-41bb-a41a-75d1cc25ff34') tenant_2 = Tenant(name='sileht', uuid='ff69a896-8025-4b0c-993e-1ee6449091c5') domain = Domain(domain='testdomain.com', tenant=tenant) domain_2 = Domain(domain='otherdomain.com', tenant=tenant_2) ipbx = IPBX( tenant=tenant, domain=domain, customer=1, ip_fqdn='mypbx.com', ip_address="10.0.0.1", registered=True, username='******', password='******', realm='realm', ) session = SessionLocal(bind=app.engine) session.add_all([tenant, tenant_2, domain, domain_2, ipbx]) session.commit() # response = client.put( "/1.0/ipbxs/%s" % ipbx.id, json={ 'ip_fqdn': 'mypbx2.com', 'tenant_uuid': str(tenant_2.uuid), 'domain_id': domain_2.id, 'username': '******', 'password': '******', 'registered': False, }, ) assert response.status_code == 200 assert response.json() == { "id": ipbx.id, "customer": 1, "normalization_profile_id": None, "ip_fqdn": "mypbx2.com", "port": 5060, "ip_address": "10.0.0.1", "domain_id": domain_2.id, "tenant_uuid": str(tenant_2.uuid), "registered": False, "username": "******", "realm": "realm", }
def test_create_ipbx_password_too_long(app_auth, client_auth_with_token): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.tenant import Tenant tenant = Tenant(name='fabio', uuid="ffffffff-ffff-4c1c-ad1c-ffffffffffff") domain = Domain(domain='testdomain.com', tenant=tenant) session = SessionLocal(bind=app_auth.engine) session.add_all([tenant, domain]) session.commit() # response = client_auth_with_token.post( "/1.0/ipbxs", json={ "tenant_uuid": str(tenant.uuid), "domain_id": domain.id, "customer": 1, "ip_fqdn": "mypbx.com", "port": 5060, "ip_address": "10.0.0.1", "registered": True, "username": '******' * 128, # String(50) "password": '******' * 248, # String(192) }, ) assert response.status_code >= 400 and response.status_code < 500
def test_update_domain(app, client): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.tenant import Tenant session = SessionLocal(bind=app.engine) tenant = Tenant(name='test', uuid="3ab844af-8039-45d9-a3aa-bae6f298228f") tenant_2 = Tenant(name='test_2', uuid="38a334ec-8960-4367-80a3-b44c568df279") domain = Domain(domain='testdomain.com', tenant=tenant) session.add_all([domain, tenant, tenant_2]) session.commit() # response = client.put( "/1.0/domains/%s" % domain.id, json={ 'domain': 'otherdomain.com', 'tenant_uuid': str(tenant_2.uuid) }, ) assert response.status_code == 200 assert response.json() == { 'id': domain.id, 'domain': 'otherdomain.com', 'tenant_uuid': str(tenant_2.uuid), }
def create_routing_rule(app_auth, tenant_uuid, suffix=1): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.carrier import Carrier from wazo_router_confd.models.carrier_trunk import CarrierTrunk from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.tenant import Tenant from wazo_router_confd.models.ipbx import IPBX from wazo_router_confd.models.routing_group import RoutingGroup from wazo_router_confd.models.routing_rule import RoutingRule session = SessionLocal(bind=app_auth.engine) tenant = session.query(Tenant).filter(Tenant.uuid == tenant_uuid).first() if tenant is None: tenant = Tenant(name="tenant_{}".format(suffix), uuid=tenant_uuid) session.add(tenant) domain = Domain(domain='testdomain_{}.com'.format(suffix), tenant=tenant) ipbx = IPBX( tenant=tenant, domain=domain, customer=1, ip_fqdn='mypbx.com', registered=True, username='******', password='******', ) carrier = Carrier(name='carrier_{}'.format(suffix), tenant=tenant) carrier_trunk = CarrierTrunk( name='carrier_trunk_{}'.format(suffix), carrier=carrier, sip_proxy='proxy.somedomain.com', ) carrier_trunk_2 = CarrierTrunk( name='carrier_trunk_{}_bis'.format(suffix), carrier=carrier, sip_proxy='proxy.somedomain.com', ) routing_rule = RoutingRule( prefix="39", carrier_trunk=carrier_trunk, ipbx=ipbx, did_regex=r'^(\+?1)?(8(00|44|55|66|77|88)[2-9]\d{6})$', route_type="pstn", ) routing_group = RoutingGroup(tenant=tenant, routing_rule=routing_rule) session.add_all([ tenant, domain, carrier, carrier_trunk, carrier_trunk_2, ipbx, routing_rule, routing_group, ]) session.commit() session.flush() return routing_rule, ipbx, carrier_trunk, tenant, session
def test_kamailio_routing_did_with_no_matching_ipbx(app, client): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.carrier import Carrier from wazo_router_confd.models.carrier_trunk import CarrierTrunk from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.tenant import Tenant from wazo_router_confd.models.ipbx import IPBX from wazo_router_confd.models.did import DID session = SessionLocal(bind=app.engine) tenant = Tenant(name='fabio', uuid='5a6c0c40-b481-41bb-a41a-75d1cc25ff34') domain = Domain(domain='testdomain.com', tenant=tenant) ipbx = IPBX( tenant=tenant, domain=domain, customer=1, ip_fqdn='mypbx.com', registered=True, username='******', password='******', ) carrier = Carrier(name='carrier', tenant=tenant) carrier_trunk = CarrierTrunk(name='carrier_trunk1', carrier=carrier, sip_proxy='proxy.somedomain.com') did = DID( did_regex=r'^39[0-9]+$', did_prefix='39', tenant=tenant, ipbx=ipbx, carrier_trunk=carrier_trunk, ) session.add_all([tenant, domain, ipbx, carrier, carrier_trunk, did]) session.commit() # request_from_name = "From name" request_from_uri = "sip:[email protected]" request_from_tag = "from_tag" request_to_name = "to name" request_to_uri = "sip:[email protected]" request_to_tag = "to_tag" # response = client.post( "/1.0/kamailio/routing", json={ "event": "sip-routing", "source_ip": "10.0.0.1", "source_port": 5060, "call_id": "call-id", "from_name": request_from_name, "from_uri": request_from_uri, "from_tag": request_from_tag, "to_uri": request_to_uri, "to_name": request_to_name, "to_tag": request_to_tag, }, ) assert response.status_code == 200 assert response.json() == {"auth": None, "rtjson": {"success": False}}
def create_domain(db: Session, principal: Principal, domain: schema.DomainCreate) -> Domain: domain.tenant_uuid = tenant_service.get_uuid(principal, db, domain.tenant_uuid) db_domain = Domain(domain=domain.domain, tenant_uuid=domain.tenant_uuid) db.add(db_domain) db.commit() db.refresh(db_domain) return db_domain
def test_kamailio_cdr_failed_no_tenant(app, client): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.carrier import Carrier from wazo_router_confd.models.carrier_trunk import CarrierTrunk from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.tenant import Tenant from wazo_router_confd.models.ipbx import IPBX from wazo_router_confd.models.did import DID session = SessionLocal(bind=app.engine) tenant = Tenant(name='fabio', uuid='5a6c0c40-b481-41bb-a41a-75d1cc25ff34') domain = Domain(domain='testdomain.com', tenant=tenant) ipbx = IPBX( tenant=tenant, domain=domain, customer=1, ip_fqdn='mypbx.com', registered=True, username='******', password='******', ) carrier = Carrier(name='carrier', tenant=tenant) carrier_trunk = CarrierTrunk( name='carrier_trunk1', carrier=carrier, sip_proxy='proxy.somedomain.com' ) did = DID( did_regex=r'^39[0-9]+$', did_prefix='39', tenant=tenant, ipbx=ipbx, carrier_trunk=carrier_trunk, ) session.add_all([tenant, domain, ipbx, carrier, carrier_trunk, did]) session.commit() # request_from_uri = "*****@*****.**" request_to_uri = "*****@*****.**" call_start = 1570752000 duration = 60 # response = client.post( "/1.0/kamailio/cdr", json={ "tenant_uuid": "5ecdf9dd-36d3-4735-a5e8-99bd297bc325", "event": "sip-routing", "source_ip": "10.0.0.1", "source_port": 5060, "call_id": "call-id", "from_uri": request_from_uri, "to_uri": request_to_uri, "call_start": call_start, "duration": duration, }, ) assert response.status_code == 200 assert response.json() == {"success": False, "cdr": None}
def test_kamailio_routing_with_no_matching_ipbx(app=None, client=None): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.tenant import Tenant from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.ipbx import IPBX session = SessionLocal(bind=app.engine) tenant = Tenant(name='fabio') domain = Domain(domain='testdomain.com', tenant=tenant) ipbx = IPBX( customer=1, ip_fqdn='mypbx.com', domain=domain, registered=True, username='******', sha1='da39a3ee5e6b4b0d3255bfef95601890afd80709', sha1b='f10e2821bbbea527ea02200352313bc059445190', tenant=tenant, ) session.add_all([tenant, domain, ipbx]) session.commit() # request_from_name = "From name" request_from_uri = "*****@*****.**" request_from_tag = "from_tag" request_to_name = "to name" request_to_uri = "*****@*****.**" request_to_tag = "to_tag" # response = client.post( "/kamailio/routing", json={ "event": "sip-routing", "source_ip": "10.0.0.1", "source_port": 5060, "call_id": "call-id", "from_name": request_from_name, "from_uri": request_from_uri, "from_tag": request_from_tag, "to_uri": request_to_uri, "to_name": request_to_name, "to_tag": request_to_tag, }, ) assert response.status_code == 200 assert response.json() == { "version": "1.0", "routing": "serial", "routes": [] }
def test_create_duplicated_domain(app=None, client=None): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.tenant import Tenant session = SessionLocal(bind=app.engine) tenant = Tenant(name='fabio') domain = Domain(domain='testdomain.com', tenant=tenant) session.add_all([domain, tenant]) session.commit() # response = client.post("/domains/", json={ "domain": "testdomain.com", "tenant_id": 1 }) assert response.status_code == 400
def test_update_ipbx(app=None, client=None): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.ipbx import IPBX from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.tenant import Tenant tenant = Tenant(name='fabio') domain = Domain(domain='testdomain.com', tenant=tenant) ipbx = IPBX( tenant=tenant, domain=domain, customer=1, ip_fqdn='mypbx.com', registered=True, username='******', sha1='da39a3ee5e6b4b0d3255bfef95601890afd80709', sha1b='f10e2821bbbea527ea02200352313bc059445190', ) session = SessionLocal(bind=app.engine) session.add_all([tenant, domain, ipbx]) session.commit() # response = client.put( "/ipbx/1", json={ 'ip_fqdn': 'mypbx2.com', 'tenant_id': 2, 'domain_id': 3, 'username': '******', 'registered': False, }, ) assert response.status_code == 200 assert response.json() == { "id": 1, "customer": 1, "ip_fqdn": "mypbx2.com", "port": 5060, "domain_id": 3, "tenant_id": 2, "registered": False, "username": "******", "sha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "sha1b": "f10e2821bbbea527ea02200352313bc059445190", }
def test_get_dids(app, client): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.carrier import Carrier from wazo_router_confd.models.carrier_trunk import CarrierTrunk from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.tenant import Tenant from wazo_router_confd.models.ipbx import IPBX from wazo_router_confd.models.did import DID session = SessionLocal(bind=app.engine) tenant = Tenant(name='fabio', uuid='5a6c0c40-b481-41bb-a41a-75d1cc25ff34') domain = Domain(domain='testdomain.com', tenant=tenant) ipbx = IPBX( tenant=tenant, domain=domain, customer=1, ip_fqdn='mypbx.com', registered=True, username='******', password='******', ) carrier = Carrier(name='carrier', tenant=tenant) carrier_trunk = CarrierTrunk(name='carrier_trunk1', carrier=carrier, sip_proxy='proxy.somedomain.com') did = DID( did_regex=r'^(\+?1)?(8(00|44|55|66|77|88)[2-9]\d{6})$', tenant=tenant, ipbx=ipbx, carrier_trunk=carrier_trunk, ) session.add_all([tenant, domain, ipbx, carrier, carrier_trunk, did]) session.commit() # response = client.get("/1.0/dids") assert response.status_code == 200 assert response.json() == { "items": [{ "id": did.id, "did_regex": r"^(\+?1)?(8(00|44|55|66|77|88)[2-9]\d{6})$", "tenant_uuid": str(tenant.uuid), "ipbx_id": ipbx.id, "carrier_trunk_id": carrier_trunk.id, }] }
def test_kamailio_routing_outbound_with_no_matching_ipbx(app, client): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.tenant import Tenant from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.ipbx import IPBX session = SessionLocal(bind=app.engine) tenant = Tenant(name='fabio', uuid='5a6c0c40-b481-41bb-a41a-75d1cc25ff34') domain = Domain(domain='testdomain.com', tenant=tenant) ipbx = IPBX( customer=1, ip_fqdn='10.0.0.2', domain=domain, registered=True, username='******', password='******', tenant=tenant, ) session.add_all([tenant, domain, ipbx]) session.commit() # request_from_name = "From name" request_from_uri = "*****@*****.**" request_from_tag = "from_tag" request_to_name = "to name" request_to_uri = "*****@*****.**" request_to_tag = "to_tag" # response = client.post( "/1.0/kamailio/routing", json={ "event": "sip-routing", "source_ip": "10.0.0.1", "source_port": 5060, "call_id": "call-id", "from_name": request_from_name, "from_uri": request_from_uri, "from_tag": request_from_tag, "to_uri": request_to_uri, "to_name": request_to_name, "to_tag": request_to_tag, }, ) assert response.status_code == 200 assert response.json() == {"auth": None, "rtjson": {"success": False}}
def test_get_domains(app=None, client=None): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.tenant import Tenant session = SessionLocal(bind=app.engine) tenant = Tenant(name='fabio') domain = Domain(domain='testdomain.com', tenant=tenant) session.add_all([domain, tenant]) session.commit() # response = client.get("/domains/") assert response.status_code == 200 assert response.json() == [{ 'id': 1, 'domain': 'testdomain.com', 'tenant_id': 1 }]
def test_get_domain(app_auth, client_auth_with_token): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.tenant import Tenant session = SessionLocal(bind=app_auth.engine) tenant = Tenant(name='fabio', uuid="ffffffff-ffff-4c1c-ad1c-ffffffffffff") domain = Domain(domain='testdomain.com', tenant=tenant) session.add_all([domain, tenant]) session.commit() # response = client_auth_with_token.get("/1.0/domains/%s" % domain.id) assert response.status_code == 200 assert response.json() == { "id": domain.id, "domain": "testdomain.com", "tenant_uuid": str(tenant.uuid), }
def test_get_domain(app, client): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.tenant import Tenant session = SessionLocal(bind=app.engine) tenant = Tenant(name='fabio', uuid="3ab844af-8039-45d9-a3aa-bae6f298228f") domain = Domain(domain='testdomain.com', tenant=tenant) session.add_all([domain, tenant]) session.commit() # response = client.get("/1.0/domains/%s" % domain.id) assert response.status_code == 200 assert response.json() == { "id": domain.id, "domain": "testdomain.com", "tenant_uuid": str(tenant.uuid), }
def test_create_duplicated_domain(app_auth, client_auth_with_token): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.tenant import Tenant session = SessionLocal(bind=app_auth.engine) tenant = Tenant(name='fabio', uuid="ffffffff-ffff-4c1c-ad1c-ffffffffffff") domain = Domain(domain='testdomain.com', tenant=tenant) session.add_all([domain, tenant]) session.commit() # response = client_auth_with_token.post( "/1.0/domains", json={ "domain": "testdomain.com", "tenant_uuid": str(tenant.uuid) }, ) assert response.status_code == 409
def test_kamailio_auth_ip_address_username_fails(app_auth, client_auth_with_token): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.tenant import Tenant from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.ipbx import IPBX from wazo_router_confd.services import password session = SessionLocal(bind=app_auth.engine) tenant = Tenant(name='fabio', uuid="ffffffff-ffff-4c1c-ad1c-ffffffffffff") domain = Domain(domain='testdomain.com', tenant=tenant) ipbx = IPBX( customer=1, ip_fqdn='mypbx.com', domain=domain, registered=True, ip_address="10.0.0.1", username='******', password_ha1=password.hash_ha1('user', domain.domain, 'password'), tenant=tenant, ) session.add_all([tenant, domain, ipbx]) session.commit() # response = client_auth_with_token.post( "/1.0/kamailio/auth", json={ "source_ip": "10.0.0.1", "username": "******", "password": "******", }, ) assert response.status_code == 200 assert response.json() == { "success": False, "tenant_uuid": None, "carrier_trunk_id": None, "ipbx_id": None, "domain": None, "username": None, "password_ha1": None, }
def test_create_ipbx(app_auth, client_auth_with_token): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.tenant import Tenant tenant = Tenant(name='fabio', uuid="ffffffff-ffff-4c1c-ad1c-ffffffffffff") domain = Domain(domain='testdomain.com', tenant=tenant) session = SessionLocal(bind=app_auth.engine) session.add_all([tenant, domain]) session.commit() # response = client_auth_with_token.post( "/1.0/ipbxs", json={ "tenant_uuid": str(tenant.uuid), "domain_id": domain.id, "customer": 1, "ip_fqdn": "mypbx.com", "port": 5060, "ip_address": "10.0.0.1", "registered": True, "username": "******", "password": "******", "realm": "realm", }, ) assert response.status_code == 200 assert response.json() == { "id": mock.ANY, "tenant_uuid": str(tenant.uuid), "domain_id": domain.id, "normalization_profile_id": None, "customer": 1, "ip_fqdn": "mypbx.com", "port": 5060, "ip_address": "10.0.0.1", "registered": True, "username": "******", "realm": "realm", }
def test_get_ipbxs(app_auth, client_auth_with_token): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.tenant import Tenant from wazo_router_confd.models.ipbx import IPBX tenant = Tenant(name='fabio', uuid="ffffffff-ffff-4c1c-ad1c-ffffffffffff") domain = Domain(domain='testdomain.com', tenant=tenant) ipbx = IPBX( tenant=tenant, domain=domain, customer=1, ip_fqdn='mypbx.com', ip_address="10.0.0.1", registered=True, username='******', password='******', realm='realm', ) session = SessionLocal(bind=app_auth.engine) session.add_all([tenant, domain, ipbx]) session.commit() # response = client_auth_with_token.get("/1.0/ipbxs") assert response.status_code == 200 assert response.json() == { "items": [{ "id": ipbx.id, "customer": 1, "normalization_profile_id": None, "ip_fqdn": "mypbx.com", "port": 5060, "ip_address": "10.0.0.1", "domain_id": domain.id, "tenant_uuid": str(tenant.uuid), "registered": True, "username": "******", "realm": "realm", }] }
def test_kamailio_dbtext_uacreg(app, client): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.tenant import Tenant from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.carrier import Carrier from wazo_router_confd.models.carrier_trunk import CarrierTrunk session = SessionLocal(bind=app.engine) tenant = Tenant(name='fabio', uuid='5a6c0c40-b481-41bb-a41a-75d1cc25ff34') domain = Domain(domain='testdomain.com', tenant=tenant) carrier = Carrier(name='carrier1', tenant=tenant) carrier_trunk = CarrierTrunk( name='trunk1', carrier=carrier, sip_proxy='192.168.1.1', registered=True, auth_username='******', auth_password='******', realm='realm', registrar_proxy='registrar', from_domain='domain.com', expire_seconds=300, retry_seconds=10, ) session.add_all([tenant, domain, carrier, carrier_trunk]) session.commit() # response = client.get("/1.0/kamailio/dbtext/uacreg") assert response.status_code == 200 assert response.json() == { "content": ( "l_uuid(string) l_username(string) l_domain(string) " "r_username(string) r_domain(string) realm(string) " "auth_username(string) auth_password(string) auth_proxy(string) " "expires(int) flags(int) reg_delay(int)\n" "%s:username:domain.com:username:domain.com:realm:username:password:sip\\:registrar:300:16:0\n" ) % carrier_trunk.id }
def test_create_ipbx(app=None, client=None): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.tenant import Tenant tenant = Tenant(name='fabio') domain = Domain(domain='testdomain.com', tenant=tenant) session = SessionLocal(bind=app.engine) session.add_all([tenant, domain]) session.commit() # response = client.post( "/ipbx/", json={ "tenant_id": tenant.id, "domain_id": domain.id, "customer": 1, "ip_fqdn": "mypbx.com", "port": 5060, "registered": True, "username": "******", "sha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "sha1b": "f10e2821bbbea527ea02200352313bc059445190", }, ) assert response.status_code == 200 assert response.json() == { "id": 1, "tenant_id": 1, "domain_id": 1, "customer": 1, "ip_fqdn": "mypbx.com", "port": 5060, "registered": True, "username": "******", "sha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "sha1b": "f10e2821bbbea527ea02200352313bc059445190", }
def test_delete_ipbx(app, client): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.ipbx import IPBX from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.tenant import Tenant tenant = Tenant(name='fabio', uuid='5a6c0c40-b481-41bb-a41a-75d1cc25ff34') domain = Domain(domain='testdomain.com', tenant=tenant) ipbx = IPBX( tenant=tenant, domain=domain, customer=1, ip_fqdn='mypbx.com', registered=True, ip_address="10.0.0.1", username='******', password='******', realm='realm', ) session = SessionLocal(bind=app.engine) session.add_all([tenant, domain, ipbx]) session.commit() # response = client.delete("/1.0/ipbxs/%s" % ipbx.id) assert response.status_code == 200 assert response.json() == { "id": ipbx.id, "customer": 1, "normalization_profile_id": None, "ip_fqdn": "mypbx.com", "port": 5060, "ip_address": "10.0.0.1", "domain_id": domain.id, "tenant_uuid": str(tenant.uuid), "registered": True, "username": "******", "realm": "realm", }
def test_kamailio_routing_domain_with_single_authenticated_ipbx(app, client): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.tenant import Tenant from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.ipbx import IPBX session = SessionLocal(bind=app.engine) tenant = Tenant(name='fabio', uuid='5a6c0c40-b481-41bb-a41a-75d1cc25ff34') domain = Domain(domain='testdomain.com', tenant=tenant) ipbx = IPBX( customer=1, ip_fqdn='mypbx.com', domain=domain, registered=True, username='******', password='******', realm='realm', tenant=tenant, ) session.add_all([tenant, domain, ipbx]) session.commit() # request_from_name = "From name" request_from_uri = "sip:[email protected]" request_from_tag = "from_tag" request_to_name = "to name" request_to_uri = "sip:[email protected]" request_to_tag = "to_tag" # response = client.post( "/1.0/kamailio/routing", json={ "event": "sip-routing", "source_ip": "10.0.0.1", "source_port": 5060, "call_id": "call-id", "from_name": request_from_name, "from_uri": request_from_uri, "from_tag": request_from_tag, "to_uri": request_to_uri, "to_name": request_to_name, "to_tag": request_to_tag, }, ) assert response.status_code == 200 assert response.json() == { "auth": None, "rtjson": { "success": True, "version": "1.0", "routing": "serial", "routes": [ { "dst_uri": "sip:%s:5060" % (ipbx.ip_fqdn), "path": "", "socket": "", "headers": { "from": {"display": request_from_name, "uri": request_from_uri}, "to": {"display": request_to_name, "uri": request_to_uri}, "extra": "", }, "branch_flags": 8, "fr_timer": 5000, "fr_inv_timer": 30000, } ], "auth_username": "******", "auth_password": "******", "realm": "realm", }, }
def test_kamailio_routing_outbound_with_single_ipbx(app, client): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.tenant import Tenant from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.carrier import Carrier from wazo_router_confd.models.carrier_trunk import CarrierTrunk from wazo_router_confd.models.ipbx import IPBX from wazo_router_confd.models.normalization import NormalizationProfile session = SessionLocal(bind=app.engine) tenant = Tenant(name='fabio', uuid='5a6c0c40-b481-41bb-a41a-75d1cc25ff34') domain = Domain(domain='testdomain.com', tenant=tenant) normalization_profile = NormalizationProfile( tenant=tenant, name='Profile', country_code='39', area_code='040', intl_prefix='00', ld_prefix='', always_intl_prefix_plus=False, always_ld=False, ) carrier = Carrier(name='carrier1', tenant=tenant) carrier_trunk = CarrierTrunk( name='trunk1', carrier=carrier, sip_proxy='192.168.1.1', normalization_profile=normalization_profile, ) ipbx = IPBX( customer=1, ip_fqdn='10.0.0.1', domain=domain, registered=True, username='******', password='******', tenant=tenant, normalization_profile=normalization_profile, ) session.add_all( [tenant, domain, normalization_profile, ipbx, carrier, carrier_trunk]) session.commit() # request_from_name = "From name" request_from_uri = "sip:[email protected]" request_from_tag = "from_tag" request_to_name = "to name" request_to_uri = "sip:[email protected]" request_to_tag = "to_tag" # response = client.post( "/1.0/kamailio/routing", json={ "event": "sip-routing", "source_ip": "10.0.0.1", "source_port": 5060, "call_id": "call-id", "from_name": request_from_name, "from_uri": request_from_uri, "from_tag": request_from_tag, "to_uri": request_to_uri, "to_name": request_to_name, "to_tag": request_to_tag, }, ) assert response.status_code == 200 assert response.json() == { "auth": None, "rtjson": { "success": True, "version": "1.0", "routing": "serial", "routes": [{ "dst_uri": "sip:%s:%s" % (carrier_trunk.sip_proxy, carrier_trunk.sip_proxy_port), "path": "", "socket": "", "headers": { "from": { "display": request_from_name, "uri": request_from_uri }, "to": { "display": request_to_name, "uri": request_to_uri }, "extra": "", }, "branch_flags": 8, "fr_timer": 5000, "fr_inv_timer": 30000, }], }, }
def create_domain(db: Session, domain: schema.DomainCreate): db_domain = Domain(domain=domain.domain, tenant_id=domain.tenant_id) db.add(db_domain) db.commit() db.refresh(db_domain) return db_domain
def test_kamailio_routing_outbound_with_single_ipbx_and_authenticated_carrier_trunk( app, client): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.tenant import Tenant from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.carrier import Carrier from wazo_router_confd.models.carrier_trunk import CarrierTrunk from wazo_router_confd.models.ipbx import IPBX session = SessionLocal(bind=app.engine) tenant = Tenant(name='fabio', uuid='5a6c0c40-b481-41bb-a41a-75d1cc25ff34') domain = Domain(domain='testdomain.com', tenant=tenant) carrier = Carrier(name='carrier1', tenant=tenant) carrier_trunk = CarrierTrunk( name='trunk1', carrier=carrier, sip_proxy='192.168.1.1', registered=True, auth_username='******', auth_password='******', realm='realm', ) ipbx = IPBX( customer=1, ip_fqdn='10.0.0.1', domain=domain, registered=True, username='******', password='******', tenant=tenant, ) session.add_all([tenant, domain, ipbx, carrier, carrier_trunk]) session.commit() # request_from_name = "From name" request_from_uri = "sip:[email protected]" request_from_tag = "from_tag" request_to_name = "to name" request_to_uri = "sip:[email protected]" request_to_tag = "to_tag" # response = client.post( "/1.0/kamailio/routing", json={ "event": "sip-routing", "source_ip": "10.0.0.1", "source_port": 5060, "call_id": "call-id", "from_name": request_from_name, "from_uri": request_from_uri, "from_tag": request_from_tag, "to_uri": request_to_uri, "to_name": request_to_name, "to_tag": request_to_tag, }, ) assert response.status_code == 200 assert response.json() == { "auth": None, "rtjson": { "success": True, "version": "1.0", "routing": "serial", "routes": [{ "dst_uri": "sip:%s:%s" % (carrier_trunk.sip_proxy, carrier_trunk.sip_proxy_port), "path": "", "socket": "", "headers": { "from": { "display": request_from_name, "uri": request_from_uri }, "to": { "display": request_to_name, "uri": request_to_uri }, "extra": "P-Asserted-Identity: <sip:" + request_from_name + "@" + request_from_uri + ">\r\n", }, "branch_flags": 8, "fr_timer": 5000, "fr_inv_timer": 30000, }], "auth_username": "******", "auth_password": "******", "realm": "realm", }, }
def test_kamailio_routing_domain_with_single_ipbx_and_auth( app_auth, client_auth_with_token): from wazo_router_confd.database import SessionLocal from wazo_router_confd.models.tenant import Tenant from wazo_router_confd.models.domain import Domain from wazo_router_confd.models.carrier_trunk import CarrierTrunk from wazo_router_confd.models.carrier import Carrier from wazo_router_confd.models.ipbx import IPBX from wazo_router_confd.models.normalization import NormalizationProfile session = SessionLocal(bind=app_auth.engine) tenant = Tenant(name='fabio', uuid='0839cb47-5d31-4b5e-8c5b-a2481f9e212a') domain = Domain(domain='testdomain.com', tenant=tenant) normalization_profile = NormalizationProfile( tenant=tenant, name='Profile', country_code='39', area_code='040', intl_prefix='00', ld_prefix='', always_intl_prefix_plus=False, always_ld=False, ) ipbx = IPBX( customer=1, ip_fqdn='mypbx.com', ip_address='192.168.0.1', domain=domain, registered=True, username='******', password='******', normalization_profile=normalization_profile, tenant=tenant, ) carrier = Carrier(name="carrier", tenant=tenant) carrier_trunk = CarrierTrunk( name='carrier_trunk1', tenant=tenant, carrier=carrier, normalization_profile=normalization_profile, sip_proxy='proxy.somedomain.com', ip_address="10.0.0.1", ) session = SessionLocal(bind=app_auth.engine) session.add_all( [tenant, domain, normalization_profile, ipbx, carrier, carrier_trunk]) session.commit() # request_from_name = "From name" request_from_uri = "sip:[email protected]" request_from_tag = "from_tag" request_to_name = "to name" request_to_uri = "sip:[email protected]" request_to_tag = "to_tag" # response = client_auth_with_token.post( "/1.0/kamailio/routing", json={ "event": "sip-routing", "source_ip": "10.0.0.1", "source_port": 5060, "call_id": "call-id", "from_name": request_from_name, "from_uri": request_from_uri, "from_tag": request_from_tag, "to_uri": request_to_uri, "to_name": request_to_name, "to_tag": request_to_tag, "auth": True, }, ) assert response.status_code == 200 assert response.json() == { "auth": { 'tenant_uuid': str(tenant.uuid), 'carrier_trunk_id': carrier_trunk.id, 'ipbx_id': None, 'domain': None, 'username': None, 'password_ha1': None, 'success': True, }, "rtjson": { "success": True, "version": "1.0", "routing": "serial", "routes": [{ "dst_uri": "sip:%s:5060" % (ipbx.ip_fqdn), "path": "", "socket": "", "headers": { "from": { "display": request_from_name, "uri": request_from_uri }, "to": { "display": request_to_name, "uri": request_to_uri }, "extra": "P-Asserted-Identity: <sip:" + request_from_name + "@" + request_from_uri + ">\r\n", }, "branch_flags": 8, "fr_timer": 5000, "fr_inv_timer": 30000, }], }, }