diff --git a/bin/generate_test_tt2.py b/bin/generate_test_tt2.py index d3040a8d..1c8cf3a2 100755 --- a/bin/generate_test_tt2.py +++ b/bin/generate_test_tt2.py @@ -215,6 +215,10 @@ class Generator: f"{id_dom}.{key}.alias_numbers.{idx}", "phone_number", ) + if "phone_numbers" in ids["extra_info"]: + numbers = ids["extra_info"]["phone_numbers"] + for idx, phone_number in enumerate(numbers): + sip_rule(numbers, f"extra_info.phone_numbers", idx) return rules def __init__(self, _hdrs, _msg, _ids): diff --git a/tests/fixtures/incoming_peer/scenario_ids.yml b/tests/fixtures/incoming_peer/scenario_ids.yml new file mode 100644 index 00000000..2b6d5585 --- /dev/null +++ b/tests/fixtures/incoming_peer/scenario_ids.yml @@ -0,0 +1,44 @@ +--- +customer_test: + id: '13' +domains: +- incoming_peer_scenarios_lnp_test +extra_info: + phone_numbers: + - '4341003' + - '4318881003' +incoming_peer_scenarios_lnp_test: + testuser1001: + ac: '1' + cc: '43' + phone_number: '4311000' + sn: 1000 + uuid: 0376332b-87ea-422e-8d99-921b67215035 +peer_incoming_peer_00_host0: + id: '111' + ip: 172.30.1.2 + mport: 46003 + port: 52602 +peer_incoming_peer_01_host1: + id: '113' + ip: 172.30.1.2 + mport: 46006 + port: 52603 +scenarios: +- devid: '004321001' + domain: 127.0.2.1 + ip: 172.30.1.2 + mport: 46003 + peer: peer_incoming_peer_00_host0 + port: 52602 + responders: + - domain: incoming-peer.scenarios-lnp.test + ip: 172.30.1.2 + mport: 46006 + peer: peer_incoming_peer_01_host1 + port: 52603 + proto: udp + register: no + username: testuser1001 + username: '004321001' +server_ip: 192.168.2.109 diff --git a/tests/fixtures/incoming_peer/sipp_scenario00.msg b/tests/fixtures/incoming_peer/sipp_scenario00.msg new file mode 100644 index 00000000..bf4e427b --- /dev/null +++ b/tests/fixtures/incoming_peer/sipp_scenario00.msg @@ -0,0 +1,124 @@ +----------------------------------------------- 2021-07-21 12:54:08.270041 +UDP message sent (557 bytes): + +INVITE sip:4311000@incoming-peer.scenarios-lnp.test SIP/2.0 +Via: SIP/2.0/UDP 172.30.1.2:52602;branch=z9hG4bK-128684-1-0 +From: ;tag=128684SIPpTag001 +To: +Call-ID: NGCP%incoming_peer%///1-128684@172.30.1.2 +CSeq: 1 INVITE +Contact: +Max-Forwards: 70 +Content-Type: application/sdp +Content-Length: 144 + +v=0 +o=user1 53655765 2353687637 IN IP4 172.30.1.2 +s=- +c=IN IP4 172.30.1.2 +t=0 0 +m=audio 46003 RTP/AVP 8 +a=rtpmap:8 PCMA/8000 +a=ptime:50 + +----------------------------------------------- 2021-07-21 12:54:08.270169 +UDP message received [317] bytes : + +SIP/2.0 100 Trying +Via: SIP/2.0/UDP 172.30.1.2:52602;branch=z9hG4bK-128684-1-0;rport=52602 +From: ;tag=128684SIPpTag001 +To: +Call-ID: NGCP%incoming_peer%///1-128684@172.30.1.2 +CSeq: 1 INVITE +Server: Sipwise NGCP LB 9.X +Content-Length: 0 + + +----------------------------------------------- 2021-07-21 12:54:08.989450 +UDP message received [746] bytes : + +SIP/2.0 180 Ringing +Record-Route: +Record-Route: +Record-Route: +Via: SIP/2.0/UDP 172.30.1.2:52602;rport=52602;branch=z9hG4bK-128684-1-0 +From: ;tag=128684SIPpTag001 +To: ;tag=51BF81BF-60F7FCD000079A96-87FFF700 +Call-ID: NGCP%incoming_peer%///1-128684@172.30.1.2 +CSeq: 1 INVITE +Content-Length: 0 +Contact: + + +----------------------------------------------- 2021-07-21 12:54:09.568639 +UDP message received [950] bytes : + +SIP/2.0 200 OK +Record-Route: +Record-Route: +Record-Route: +Via: SIP/2.0/UDP 172.30.1.2:52602;rport=52602;branch=z9hG4bK-128684-1-0 +From: ;tag=128684SIPpTag001 +To: ;tag=51BF81BF-60F7FCD000079A96-87FFF700 +Call-ID: NGCP%incoming_peer%///1-128684@172.30.1.2 +CSeq: 1 INVITE +Content-Type: application/sdp +Content-Length: 176 +Contact: + +v=0 +o=user1 53655765 2353687637 IN IP4 192.168.2.109 +s=- +c=IN IP4 192.168.2.109 +t=0 0 +m=audio 30472 RTP/AVP 8 +a=rtpmap:8 PCMA/8000 +a=sendrecv +a=rtcp:30473 +a=ptime:50 + +----------------------------------------------- 2021-07-21 12:54:09.568850 +UDP message sent (737 bytes): + +ACK sip:ngcp-lb@192.168.2.109:5060;ngcpct=7369703a3132372e302e302e313a353038303b707278726f7574653d31 SIP/2.0 +Via: SIP/2.0/UDP 172.30.1.2:52602;branch=z9hG4bK-128684-1-5 +From: ;tag=128684SIPpTag001 +To: ;tag=51BF81BF-60F7FCD000079A96-87FFF700 +Call-ID: NGCP%incoming_peer%///1-128684@172.30.1.2 +Route: , , +CSeq: 1 ACK +Contact: +Max-Forwards: 70 +Content-Length: 0 + + +----------------------------------------------- 2021-07-21 12:54:11.076910 +UDP message sent (737 bytes): + +BYE sip:ngcp-lb@192.168.2.109:5060;ngcpct=7369703a3132372e302e302e313a353038303b707278726f7574653d31 SIP/2.0 +Via: SIP/2.0/UDP 172.30.1.2:52602;branch=z9hG4bK-128684-1-9 +From: ;tag=128684SIPpTag001 +To: ;tag=51BF81BF-60F7FCD000079A96-87FFF700 +Call-ID: NGCP%incoming_peer%///1-128684@172.30.1.2 +CSeq: 2 BYE +Contact: +Route: , , +Max-Forwards: 70 +Content-Length: 0 + + +----------------------------------------------- 2021-07-21 12:54:11.363907 +UDP message received [616] bytes : + +SIP/2.0 200 OK +Record-Route: +Record-Route: +Record-Route: +Via: SIP/2.0/UDP 172.30.1.2:52602;rport=52602;branch=z9hG4bK-128684-1-9 +From: ;tag=128684SIPpTag001 +To: ;tag=51BF81BF-60F7FCD000079A96-87FFF700 +Call-ID: NGCP%incoming_peer%///1-128684@172.30.1.2 +CSeq: 2 BYE +Content-Length: 0 + + diff --git a/tests/fixtures/incoming_peer/sipp_scenario00_test.yml.tt2 b/tests/fixtures/incoming_peer/sipp_scenario00_test.yml.tt2 new file mode 100644 index 00000000..0639fa27 --- /dev/null +++ b/tests/fixtures/incoming_peer/sipp_scenario00_test.yml.tt2 @@ -0,0 +1,44 @@ +messages: +- - 'SIP/2.0 100 Trying' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'Server: Sipwise NGCP LB' + - 'Content-Length: 0' +- - 'SIP/2.0 180 Ringing' + - 'Record-Route: ' + - 'Record-Route: ' + - 'Record-Route: ' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Content-Length: 0' + - 'Contact: ' +- - 'SIP/2.0 200 OK' + - 'Record-Route: ' + - 'Record-Route: ' + - 'Record-Route: ' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Content-Type: application/sdp' + - 'Content-Length: \d+' + - 'Contact: ' + - 'v=0' + - 'o=user1 \d+ \d+ IN IP4 [% server_ip %]' + - 's=-' + - 'c=IN IP4 [% server_ip %]' + - 't=0 0' + - 'm=audio \d+ RTP/AVP 8' + - 'a=rtpmap:8 PCMA/8000' + - 'a=sendrecv' + - 'a=rtcp:\d+' + - 'a=ptime:50' +- - 'SIP/2.0 200 OK' + - 'Record-Route: ' + - 'Record-Route: ' + - 'Record-Route: ' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ BYE' + - 'Content-Length: 0' diff --git a/tests/fixtures/incoming_peer/sipp_scenario_responder00.msg b/tests/fixtures/incoming_peer/sipp_scenario_responder00.msg new file mode 100644 index 00000000..e07eaeaf --- /dev/null +++ b/tests/fixtures/incoming_peer/sipp_scenario_responder00.msg @@ -0,0 +1,118 @@ +----------------------------------------------- 2021-07-21 12:54:08.902961 +UDP message received [1207] bytes : + +INVITE sip:4318881003@172.30.1.2:52603;transport=udp SIP/2.0 +Record-Route: +Record-Route: +Record-Route: +Via: SIP/2.0/UDP 192.168.2.109;branch=z9hG4bKf858.adf6bb0114f7dd356e0c532d6b575027.0 +Via: SIP/2.0/UDP 127.0.0.1:5062;rport=5062;branch=z9hG4bKf858.dd527662d6d0b89a14528a77e331b74c.0 +Via: SIP/2.0/UDP 127.0.0.1:5080;received=127.0.0.1;branch=z9hG4bKdPMVPaaz;rport=5080 +From: ;tag=7FEAFA60-60F7FCD0000D4994-C8D5F700 +To: +CSeq: 1929 INVITE +Call-ID: NGCP%incoming_peer%///1-128684@172.30.1.2_pbx-1 +Max-Forwards: 69 +P-Asserted-Identity: +Content-Type: application/sdp +Content-Length: 176 +Contact: + +v=0 +o=user1 53655765 2353687637 IN IP4 192.168.2.109 +s=- +c=IN IP4 192.168.2.109 +t=0 0 +m=audio 30464 RTP/AVP 8 +a=rtpmap:8 PCMA/8000 +a=sendrecv +a=rtcp:30465 +a=ptime:50 + +----------------------------------------------- 2021-07-21 12:54:08.903637 +UDP message sent (575 bytes): + +SIP/2.0 180 Ringing +Via: SIP/2.0/UDP 192.168.2.109;branch=z9hG4bKf858.adf6bb0114f7dd356e0c532d6b575027.0, SIP/2.0/UDP 127.0.0.1:5062;rport=5062;branch=z9hG4bKf858.dd527662d6d0b89a14528a77e331b74c.0, SIP/2.0/UDP 127.0.0.1:5080;received=127.0.0.1;branch=z9hG4bKdPMVPaaz;rport=5080 +From: ;tag=7FEAFA60-60F7FCD0000D4994-C8D5F700 +To: ;tag=128664SIPpTag011 +Call-ID: NGCP%incoming_peer%///1-128684@172.30.1.2_pbx-1 +CSeq: 1929 INVITE +Contact: +Content-Length: 0 + + +----------------------------------------------- 2021-07-21 12:54:09.414261 +UDP message sent (1008 bytes): + +SIP/2.0 200 OK +Via: SIP/2.0/UDP 192.168.2.109;branch=z9hG4bKf858.adf6bb0114f7dd356e0c532d6b575027.0, SIP/2.0/UDP 127.0.0.1:5062;rport=5062;branch=z9hG4bKf858.dd527662d6d0b89a14528a77e331b74c.0, SIP/2.0/UDP 127.0.0.1:5080;received=127.0.0.1;branch=z9hG4bKdPMVPaaz;rport=5080 +From: ;tag=7FEAFA60-60F7FCD0000D4994-C8D5F700 +To: ;tag=128664SIPpTag011 +Call-ID: NGCP%incoming_peer%///1-128684@172.30.1.2_pbx-1 +CSeq: 1929 INVITE +Record-Route: , , +Contact: +Content-Type: application/sdp +Content-Length: 144 + +v=0 +o=user1 53655765 2353687637 IN IP4 172.30.1.2 +s=- +c=IN IP4 172.30.1.2 +t=0 0 +m=audio 46006 RTP/AVP 8 +a=rtpmap:8 PCMA/8000 +a=ptime:50 + +----------------------------------------------- 2021-07-21 12:54:09.665452 +UDP message received [941] bytes : + +ACK sip:172.30.1.2:52603;transport=UDP SIP/2.0 +Record-Route: +Record-Route: +Record-Route: +Via: SIP/2.0/UDP 192.168.2.109;branch=z9hG4bKf858.389617254dff6530e5c56eb09c7a710b.0 +Via: SIP/2.0/UDP 127.0.0.1:5062;rport=5062;branch=z9hG4bKf858.8c94fff99c8582f8d211c71e4c3203e8.0 +Via: SIP/2.0/UDP 127.0.0.1:5080;received=127.0.0.1;branch=z9hG4bKFXaFsa~5;rport=5080 +From: ;tag=7FEAFA60-60F7FCD0000D4994-C8D5F700 +To: ;tag=128664SIPpTag011 +CSeq: 1929 ACK +Call-ID: NGCP%incoming_peer%///1-128684@172.30.1.2_pbx-1 +Max-Forwards: 68 +Content-Length: 0 +Contact: + + +----------------------------------------------- 2021-07-21 12:54:11.262049 +UDP message received [902] bytes : + +BYE sip:172.30.1.2:52603;transport=UDP SIP/2.0 +Record-Route: +Record-Route: +Record-Route: +Via: SIP/2.0/UDP 192.168.2.109;branch=z9hG4bK7668.9d54088116df98930959e62b8c631880.0 +Via: SIP/2.0/UDP 127.0.0.1:5062;rport=5062;branch=z9hG4bK7668.9c7423a55ca91fc961dba3fb6793f63f.0 +Via: SIP/2.0/UDP 127.0.0.1:5080;received=127.0.0.1;branch=z9hG4bKSYQKgazX;rport=5080 +From: ;tag=7FEAFA60-60F7FCD0000D4994-C8D5F700 +To: ;tag=128664SIPpTag011 +CSeq: 1930 BYE +Call-ID: NGCP%incoming_peer%///1-128684@172.30.1.2_pbx-1 +Max-Forwards: 68 +P-Asserted-Identity: +Content-Length: 0 + + +----------------------------------------------- 2021-07-21 12:54:11.262202 +UDP message sent (571 bytes): + +SIP/2.0 200 OK +Via: SIP/2.0/UDP 192.168.2.109;branch=z9hG4bK7668.9d54088116df98930959e62b8c631880.0, SIP/2.0/UDP 127.0.0.1:5062;rport=5062;branch=z9hG4bK7668.9c7423a55ca91fc961dba3fb6793f63f.0, SIP/2.0/UDP 127.0.0.1:5080;received=127.0.0.1;branch=z9hG4bKSYQKgazX;rport=5080 +From: ;tag=7FEAFA60-60F7FCD0000D4994-C8D5F700 +To: ;tag=128664SIPpTag011 +Call-ID: NGCP%incoming_peer%///1-128684@172.30.1.2_pbx-1 +CSeq: 1930 BYE +Contact: +Content-Length: 0 + + diff --git a/tests/fixtures/incoming_peer/sipp_scenario_responder00_test.yml.tt2 b/tests/fixtures/incoming_peer/sipp_scenario_responder00_test.yml.tt2 new file mode 100644 index 00000000..cc585d9b --- /dev/null +++ b/tests/fixtures/incoming_peer/sipp_scenario_responder00_test.yml.tt2 @@ -0,0 +1,40 @@ +messages: +- - 'INVITE sip:[% extra_info.phone_numbers.1 %]@[% scenarios.0.responders.0.ip %]:[% scenarios.0.responders.0.port %];transport=udp SIP/2.0' + - 'Record-Route: ' + - 'Record-Route: ' + - 'Record-Route: ' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'P-Asserted-Identity: ' + - 'Content-Type: application/sdp' + - 'Content-Length: \d+' + - 'Contact: ' + - 'v=0' + - 'o=user1 \d+ \d+ IN IP4 [% server_ip %]' + - 's=-' + - 'c=IN IP4 [% server_ip %]' + - 't=0 0' + - 'm=audio \d+ RTP/AVP 8' + - 'a=rtpmap:8 PCMA/8000' + - 'a=sendrecv' + - 'a=rtcp:\d+' + - 'a=ptime:50' +- - 'ACK sip:[% scenarios.0.responders.0.ip %]:[% scenarios.0.responders.0.port %];transport=UDP SIP/2.0' + - 'Record-Route: ' + - 'Record-Route: ' + - 'Record-Route: ' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ ACK' + - 'Content-Length: 0' + - 'Contact: ' +- - 'BYE sip:[% scenarios.0.responders.0.ip %]:[% scenarios.0.responders.0.port %];transport=UDP SIP/2.0' + - 'Record-Route: ' + - 'Record-Route: ' + - 'Record-Route: ' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ BYE' + - 'P-Asserted-Identity: ' + - 'Content-Length: 0' diff --git a/tests/test_generate_test_tt2.py b/tests/test_generate_test_tt2.py index e7811d52..429509dd 100644 --- a/tests/test_generate_test_tt2.py +++ b/tests/test_generate_test_tt2.py @@ -288,3 +288,29 @@ def test_invite_alias_devid_resp(generate_test_tt2_file, caplog): TT2_FILE.format("invite_alias_devid", "_responder02"), res.out_file ) assert res.returncode == 0 + + +def test_ok_incoming_peer(generate_test_tt2_file, caplog): + caplog.set_level(logging.DEBUG) + res = generate_test_tt2_file( + IDS_FILE.format("incoming_peer"), + MSG_FILE.format("incoming_peer", "00"), + ) + + assert check_filecontent( + TT2_FILE.format("incoming_peer", "00"), res.out_file + ) + assert res.returncode == 0 + + +def test_incoming_peer_resp(generate_test_tt2_file, caplog): + caplog.set_level(logging.DEBUG) + res = generate_test_tt2_file( + IDS_FILE.format("incoming_peer"), + MSG_FILE.format("incoming_peer", "_responder00"), + ) + + assert check_filecontent( + TT2_FILE.format("incoming_peer", "_responder00"), res.out_file + ) + assert res.returncode == 0