From a552bc1cd1330b10c84b6c4408100c9eb3e5825f Mon Sep 17 00:00:00 2001 From: Alessio Garzi Date: Tue, 28 Jan 2025 12:40:20 +0100 Subject: [PATCH] MT#61969 New scenario invite_offline_deregistered New scenario to test registrations with contact: *. The scenario checks that contact * is treated as special character by kamailio proxy and ensures that the callee if offline. Change-Id: I25dfd00278668120413b3f4da17559421bbfde1c --- .../cdr_tag_data_test.yml.tt2 | 3 + .../cdr_test.yml.tt2 | 10 ++ .../media181sec.pcap | 1 + .../prefs.json.tt2 | 5 + .../responder00_01.yml.tt2 | 0 .../invite_offline_deregistered/scenario.yml | 43 +++++++ .../sipp_scenario00.xml | 109 ++++++++++++++++++ .../sipp_scenario00_test.yml.tt2 | 26 +++++ .../sipp_scenario_responder00.xml | 54 +++++++++ .../sipp_scenario_responder00_test.yml.tt2 | 8 ++ 10 files changed, 259 insertions(+) create mode 100644 scenarios/invite_offline_deregistered/cdr_tag_data_test.yml.tt2 create mode 100644 scenarios/invite_offline_deregistered/cdr_test.yml.tt2 create mode 120000 scenarios/invite_offline_deregistered/media181sec.pcap create mode 100644 scenarios/invite_offline_deregistered/prefs.json.tt2 create mode 100644 scenarios/invite_offline_deregistered/responder00_01.yml.tt2 create mode 100644 scenarios/invite_offline_deregistered/scenario.yml create mode 100644 scenarios/invite_offline_deregistered/sipp_scenario00.xml create mode 100644 scenarios/invite_offline_deregistered/sipp_scenario00_test.yml.tt2 create mode 100644 scenarios/invite_offline_deregistered/sipp_scenario_responder00.xml create mode 100644 scenarios/invite_offline_deregistered/sipp_scenario_responder00_test.yml.tt2 diff --git a/scenarios/invite_offline_deregistered/cdr_tag_data_test.yml.tt2 b/scenarios/invite_offline_deregistered/cdr_tag_data_test.yml.tt2 new file mode 100644 index 00000000..3cac73c4 --- /dev/null +++ b/scenarios/invite_offline_deregistered/cdr_tag_data_test.yml.tt2 @@ -0,0 +1,3 @@ +cdr: + - val: '[% scenarios.0.username %]' + type: 'header=P-Preferred-Identity' \ No newline at end of file diff --git a/scenarios/invite_offline_deregistered/cdr_test.yml.tt2 b/scenarios/invite_offline_deregistered/cdr_test.yml.tt2 new file mode 100644 index 00000000..0607defc --- /dev/null +++ b/scenarios/invite_offline_deregistered/cdr_test.yml.tt2 @@ -0,0 +1,10 @@ +cdr: + - source_user: '[% scenarios.0.username %]' + source_domain: 'invite-offline-deregistered.scenarios.test' + source_cli: '[% invite_offline_deregistered_scenarios_test.testuser1002.phone_number %]' + destination_user: 'testuser1003' + destination_domain: 'invite-offline-deregistered.scenarios.test' + destination_user_dialed: 'testuser1003' + call_type: 'call' + call_status: 'noanswer' + call_code: '480' \ No newline at end of file diff --git a/scenarios/invite_offline_deregistered/media181sec.pcap b/scenarios/invite_offline_deregistered/media181sec.pcap new file mode 120000 index 00000000..d95ed875 --- /dev/null +++ b/scenarios/invite_offline_deregistered/media181sec.pcap @@ -0,0 +1 @@ +../media181sec.pcap \ No newline at end of file diff --git a/scenarios/invite_offline_deregistered/prefs.json.tt2 b/scenarios/invite_offline_deregistered/prefs.json.tt2 new file mode 100644 index 00000000..6ba39b88 --- /dev/null +++ b/scenarios/invite_offline_deregistered/prefs.json.tt2 @@ -0,0 +1,5 @@ +{ + "@invite-offline-deregistered.scenarios.test": { + "nat_sipping": "no" + } +} diff --git a/scenarios/invite_offline_deregistered/responder00_01.yml.tt2 b/scenarios/invite_offline_deregistered/responder00_01.yml.tt2 new file mode 100644 index 00000000..e69de29b diff --git a/scenarios/invite_offline_deregistered/scenario.yml b/scenarios/invite_offline_deregistered/scenario.yml new file mode 100644 index 00000000..fc4feff9 --- /dev/null +++ b/scenarios/invite_offline_deregistered/scenario.yml @@ -0,0 +1,43 @@ +--- +test_uuid: invite_offline_deregistered +description: Call to a user who deregistered using special value '*' in contact header as stated in RFC 3261 +domains: + invite-offline-deregistered.scenarios.test: + reseller_id: 1 +customers: + 'customer.test': + contacts: + - email: "customer.test@spce.test" + reseller_id: 1 + details: + status: 'active' + type: 'sipaccount' + billing_profile_id: 1 + reseller_id: 1 +subscribers: + invite-offline-deregistered.scenarios.test: + testuser1003: + customer: 'customer.test' + password: testuser + cc: 43 + ac: 1 + sn: 1003 + testuser1002: + customer: 'customer.test' + password: testuser + cc: 43 + ac: 1 + sn: 1002 + alias_numbers: + - cc: 34 + ac: 96 + sn: 5711941 +scenarios: + - ip: 127.126.0.1 + username: testuser1002 + domain: invite-offline-deregistered.scenarios.test + responders: + - ip: 127.1.0.1 + username: testuser1003 + domain: invite-offline-deregistered.scenarios.test + register: 'yes' diff --git a/scenarios/invite_offline_deregistered/sipp_scenario00.xml b/scenarios/invite_offline_deregistered/sipp_scenario00.xml new file mode 100644 index 00000000..de8af353 --- /dev/null +++ b/scenarios/invite_offline_deregistered/sipp_scenario00.xml @@ -0,0 +1,109 @@ + + + + + ;tag=[pid]SIPpTag00[call_number] + To: + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 1 INVITE + Contact: + P-Preferred-Identity: + Max-Forwards: 70 + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 8 + a=rtpmap:8 PCMA/8000 + a=ptime:50 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [peer_tag_param] + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 1 ACK + Contact: + Max-Forwards: 70 + Content-Length: 0 + + ]]> + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 2 INVITE + Contact: + P-Preferred-Identity: + Max-Forwards: 70 + [field1 file="caller.csv"] + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 8 + a=rtpmap:8 PCMA/8000 + a=ptime:50 + + ]]> + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [peer_tag_param] + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 2 ACK + Contact: + Max-Forwards: 70 + Content-Length: 0 + + ]]> + + + + + + + + diff --git a/scenarios/invite_offline_deregistered/sipp_scenario00_test.yml.tt2 b/scenarios/invite_offline_deregistered/sipp_scenario00_test.yml.tt2 new file mode 100644 index 00000000..28f85c3a --- /dev/null +++ b/scenarios/invite_offline_deregistered/sipp_scenario00_test.yml.tt2 @@ -0,0 +1,26 @@ +messages: +- - 'SIP/2.0 100 Trying' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'Server: Sipwise NGCP LB' + - 'Content-Length:\s+0' +- - 'SIP/2.0 407 Proxy Authentication Required' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Proxy-Authenticate: Digest realm="invite-offline-deregistered.scenarios.test", nonce="[^"]+"' + - 'Server: Sipwise NGCP Proxy' + - 'Content-Length:\s+0' +- - 'SIP/2.0 100 Trying' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'Server: Sipwise NGCP LB' + - 'Content-Length:\s+0' +- - 'SIP/2.0 480 Offline' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Server: Sipwise NGCP Proxy' + - 'Content-Length:\s+0' diff --git a/scenarios/invite_offline_deregistered/sipp_scenario_responder00.xml b/scenarios/invite_offline_deregistered/sipp_scenario_responder00.xml new file mode 100644 index 00000000..a25855b1 --- /dev/null +++ b/scenarios/invite_offline_deregistered/sipp_scenario_responder00.xml @@ -0,0 +1,54 @@ + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 1 REGISTER + Contact: * + Expires: 0 + Max-Forwards: 70 + Content-Length: 0 + + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 2 REGISTER + [field2 file="callee.csv" line=0] + Contact: * + Expires: 0 + Max-Forwards: 70 + Content-Length: 0 + + + ]]> + + + + + + + + diff --git a/scenarios/invite_offline_deregistered/sipp_scenario_responder00_test.yml.tt2 b/scenarios/invite_offline_deregistered/sipp_scenario_responder00_test.yml.tt2 new file mode 100644 index 00000000..f448a652 --- /dev/null +++ b/scenarios/invite_offline_deregistered/sipp_scenario_responder00_test.yml.tt2 @@ -0,0 +1,8 @@ +messages: +- - 'SIP/2.0 401 Unauthorized' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ REGISTER' + - 'WWW-Authenticate: Digest realm="invite-offline-deregistered.scenarios.test", nonce="[^"]+"' + - 'Server: Sipwise NGCP Proxy' + - 'Content-Length:\s+0'