From 129397e6fcb97eb274220ae6bcc83e84cd27c348 Mon Sep 17 00:00:00 2001 From: Victor Seva Date: Fri, 26 Jun 2015 13:39:19 +0200 Subject: [PATCH] MT#7571 use NGCP REST API instead of SOAP lib - prefs.yml -> prefs.json solving true/1 problem - disable non working scenarios: * incoming_foreign_dom * incoming_peer * invite_concurrent_max_out * invite_concurrent_max_out_per_account * invite_ignore_allowip * invite_peerout * invite_peerout_rewrite * invite_peerout_rewrite_pv_regex * register_allowip * register_ignore_allowip missing API parts: - peers settings - add/modify/delete peers * bin/create_peers.pl * bin/update_peer_host.pl TODO: - bin/create_ncos.pl - bin/create_rewrite_rules.pl - bin/create_subscribers_rewrite_rules.pl - bin/create_subscribers_speeddial_rules.pl Change-Id: I6d47e24669f9da22b5b3ac4fb410c50d2c9dbf53 --- .gitignore | 1 + bin/check.sh | 8 +- bin/create_peers.pl | 2 + bin/create_subscribers.pl | 194 ++++++--- bin/set_preferences.pl | 254 +++++++----- debian/control | 4 +- debian/install | 1 + get_results.sh | 3 +- lib/Sipwise/API.pm | 377 ++++++++++++++++++ run_tests.sh | 5 +- scenarios/auth_fail/scenario.yml | 14 + scenarios/incoming_foreign_dom/prefs.yml | 2 - scenarios/invite/scenario.yml | 15 + scenarios/invite_allowedcli_match/prefs.json | 11 + scenarios/invite_allowedcli_match/prefs.yml | 4 - .../invite_allowedcli_match/scenario.yml | 15 + .../invite_allowedcli_match_alias/prefs.json | 11 + .../invite_allowedcli_match_alias/prefs.yml | 5 - .../scenario.yml | 15 + .../invite_allowedcli_nonmatch/prefs.json | 11 + .../invite_allowedcli_nonmatch/prefs.yml | 4 - .../invite_allowedcli_nonmatch/scenario.yml | 15 + scenarios/invite_allowip/prefs.json | 8 + scenarios/invite_allowip/prefs.yml | 2 - scenarios/invite_allowip/scenario.yml | 15 + scenarios/invite_blockin_blst/prefs.json | 8 + scenarios/invite_blockin_blst/prefs.yml | 2 - scenarios/invite_blockin_blst/scenario.yml | 15 + scenarios/invite_blockin_clir/prefs.json | 11 + scenarios/invite_blockin_clir/prefs.yml | 5 - scenarios/invite_blockin_clir/scenario.yml | 15 + scenarios/invite_blockin_wlst/prefs.json | 8 + scenarios/invite_blockin_wlst/prefs.yml | 3 - scenarios/invite_blockin_wlst/scenario.yml | 15 + scenarios/invite_blockout_blst/prefs.json | 8 + scenarios/invite_blockout_blst/prefs.yml | 2 - scenarios/invite_blockout_blst/scenario.yml | 15 + scenarios/invite_blockout_ncos/prefs.json | 5 + scenarios/invite_blockout_ncos/prefs.yml | 2 - scenarios/invite_blockout_ncos/scenario.yml | 15 + .../invite_blockout_pinoverride/prefs.json | 10 + .../invite_blockout_pinoverride/prefs.yml | 3 - .../invite_blockout_pinoverride/scenario.yml | 15 + scenarios/invite_blockout_wlst/prefs.json | 9 + scenarios/invite_blockout_wlst/prefs.yml | 3 - scenarios/invite_blockout_wlst/scenario.yml | 15 + scenarios/invite_callforward/scenario.yml | 18 + scenarios/invite_concurrent_max/prefs.json | 5 + scenarios/invite_concurrent_max/prefs.yml | 2 - scenarios/invite_concurrent_max/scenario.yml | 16 + scenarios/invite_concurrent_max_out/prefs.yml | 3 - .../prefs.yml | 2 - .../prefs.json | 8 + .../prefs.yml | 4 - .../scenario.yml | 16 + .../invite_foreign_dom/0003_test.yml.tt2 | 1 - scenarios/invite_foreign_dom/prefs.json | 5 + scenarios/invite_foreign_dom/prefs.yml | 2 - scenarios/invite_foreign_dom/scenario.yml | 14 + scenarios/invite_ignore_allowip/prefs.yml | 3 - scenarios/invite_lateoam/scenario.yml | 15 + scenarios/invite_no_refer/scenario.yml | 15 + scenarios/invite_offline/scenario.yml | 15 + scenarios/invite_peerout_rewrite/prefs.yml | 4 - .../invite_peerout_rewrite_pv_regex/prefs.yml | 4 - scenarios/invite_redirect/scenario.yml | 16 + scenarios/invite_retrans/scenario.yml | 15 + scenarios/invite_speeddial/scenario.yml | 16 + scenarios/invite_tcp_udp/scenario.yml | 15 + scenarios/invite_tcp_udp_reinvite/prefs.json | 5 + scenarios/invite_tcp_udp_reinvite/prefs.yml | 2 - .../invite_tcp_udp_reinvite/scenario.yml | 15 + scenarios/invite_voicebox/scenario.yml | 15 + scenarios/register/scenario.yml | 14 + scenarios/register_allowip/prefs.yml | 2 - scenarios/register_bria/scenario.yml | 15 + scenarios/register_ignore_allowip/prefs.yml | 3 - scenarios/register_tcp/scenario.yml | 14 + scenarios/reminder/scenario.yml | 15 + .../incoming_foreign_dom/0003_test.yml.tt2 | 0 .../incoming_foreign_dom/0005_test.yml.tt2 | 0 .../incoming_foreign_dom/0006_test.yml.tt2 | 0 .../incoming_foreign_dom/0007_test.yml.tt2 | 0 .../incoming_foreign_dom/0008_test.yml.tt2 | 0 .../incoming_foreign_dom/0009_test.yml.tt2 | 0 .../incoming_foreign_dom/prefs.json | 5 + .../incoming_foreign_dom/scenario.yml | 14 + .../incoming_foreign_dom/sipp_scenario00.xml | 0 .../sipp_scenario_responder00.xml | 0 .../incoming_peer/0003_test.yml.tt2 | 0 .../incoming_peer/0005_test.yml.tt2 | 0 .../incoming_peer/0006_test.yml.tt2 | 0 .../incoming_peer/0007_test.yml.tt2 | 0 .../incoming_peer/0008_test.yml.tt2 | 0 .../incoming_peer/0009_test.yml.tt2 | 0 .../incoming_peer/peer.yml | 0 .../incoming_peer/scenario.yml | 14 + .../incoming_peer/sipp_scenario00.xml | 0 .../sipp_scenario_responder00.xml | 0 .../0001_test.yml.tt2 | 0 .../0003_test.yml.tt2 | 0 .../0005_test.yml.tt2 | 0 .../0006_test.yml.tt2 | 0 .../0008_test.yml.tt2 | 0 .../0010_test.yml.tt2 | 0 .../0012_test.yml.tt2 | 0 .../0014_test.yml.tt2 | 0 .../0016_test.yml.tt2 | 0 .../0017_test.yml.tt2 | 0 .../invite_concurrent_max_out/peer.yml | 0 .../invite_concurrent_max_out/prefs.json | 6 + .../invite_concurrent_max_out/scenario.yml | 14 + .../sipp_scenario00.xml | 0 .../sipp_scenario_responder00.xml | 0 .../0001_test.yml.tt2 | 0 .../0003_test.yml.tt2 | 0 .../0005_test.yml.tt2 | 0 .../0006_test.yml.tt2 | 0 .../0008_test.yml.tt2 | 0 .../0010_test.yml.tt2 | 0 .../0012_test.yml.tt2 | 0 .../0014_test.yml.tt2 | 0 .../0016_test.yml.tt2 | 0 .../0017_test.yml.tt2 | 0 .../peer.yml | 0 .../prefs.json | 5 + .../scenario.yml | 14 + .../sipp_scenario00.xml | 0 .../sipp_scenario_responder00.xml | 0 .../invite_ignore_allowip/0003_test.yml.tt2 | 0 .../invite_ignore_allowip/0005_test.yml.tt2 | 0 .../invite_ignore_allowip/0007_test.yml.tt2 | 0 .../invite_ignore_allowip/0008_test.yml.tt2 | 0 .../invite_ignore_allowip/0009_test.yml.tt2 | 0 .../invite_ignore_allowip/0010_test.yml.tt2 | 0 .../invite_ignore_allowip/0011_test.yml.tt2 | 0 .../invite_ignore_allowip/prefs.json | 8 + .../invite_ignore_allowip/scenario.yml | 15 + .../invite_ignore_allowip/sipp_scenario00.xml | 0 .../sipp_scenario_responder00.xml | 0 .../invite_peerout/0001_test.yml.tt2 | 0 .../invite_peerout/0003_test.yml.tt2 | 0 .../invite_peerout/0005_test.yml.tt2 | 0 .../invite_peerout/0006_test.yml.tt2 | 0 .../invite_peerout/0007_test.yml.tt2 | 0 .../invite_peerout/0008_test.yml.tt2 | 0 .../invite_peerout/0009_test.yml.tt2 | 0 .../invite_peerout/peer.yml | 0 .../invite_peerout/scenario.yml | 14 + .../invite_peerout/sipp_scenario00.xml | 0 .../sipp_scenario_responder00.xml | 0 .../invite_peerout_emergency/scenario.yml | 17 +- .../invite_peerout_rewrite/0001_test.yml.tt2 | 0 .../invite_peerout_rewrite/0003_test.yml.tt2 | 0 .../invite_peerout_rewrite/0005_test.yml.tt2 | 0 .../invite_peerout_rewrite/0006_test.yml.tt2 | 0 .../invite_peerout_rewrite/0007_test.yml.tt2 | 0 .../invite_peerout_rewrite/0008_test.yml.tt2 | 0 .../invite_peerout_rewrite/0009_test.yml.tt2 | 0 .../invite_peerout_rewrite/peer.yml | 0 .../invite_peerout_rewrite/prefs.json | 8 + .../invite_peerout_rewrite/rewrite.yml | 0 .../invite_peerout_rewrite/scenario.yml | 14 + .../sipp_scenario00.xml | 0 .../sipp_scenario_responder00.xml | 0 .../0001_test.yml.tt2 | 0 .../0003_test.yml.tt2 | 0 .../0005_test.yml.tt2 | 0 .../0006_test.yml.tt2 | 0 .../0007_test.yml.tt2 | 0 .../0008_test.yml.tt2 | 0 .../0009_test.yml.tt2 | 0 .../invite_peerout_rewrite_pv_regex/peer.yml | 0 .../prefs.json | 8 + .../rewrite.yml | 0 .../scenario.yml | 14 + .../sipp_scenario00.xml | 0 .../sipp_scenario_responder00.xml | 0 scenarios_disabled/presence/scenario.yml | 17 + .../register_allowip/0001_test.yml.tt2 | 0 .../register_allowip/0002_test.yml.tt2 | 0 .../register_allowip/prefs.json | 7 + .../register_allowip/scenario.yml | 14 + .../register_allowip/sipp_scenario00.xml | 0 .../register_ignore_allowip/0001_test.yml.tt2 | 0 .../register_ignore_allowip/0002_test.yml.tt2 | 0 .../register_ignore_allowip/prefs.json | 8 + .../register_ignore_allowip/scenario.yml | 14 + .../sipp_scenario00.xml | 0 189 files changed, 1476 insertions(+), 248 deletions(-) create mode 100644 lib/Sipwise/API.pm delete mode 100644 scenarios/incoming_foreign_dom/prefs.yml create mode 100644 scenarios/invite_allowedcli_match/prefs.json delete mode 100644 scenarios/invite_allowedcli_match/prefs.yml create mode 100644 scenarios/invite_allowedcli_match_alias/prefs.json delete mode 100644 scenarios/invite_allowedcli_match_alias/prefs.yml create mode 100644 scenarios/invite_allowedcli_nonmatch/prefs.json delete mode 100644 scenarios/invite_allowedcli_nonmatch/prefs.yml create mode 100644 scenarios/invite_allowip/prefs.json delete mode 100644 scenarios/invite_allowip/prefs.yml create mode 100644 scenarios/invite_blockin_blst/prefs.json delete mode 100644 scenarios/invite_blockin_blst/prefs.yml create mode 100644 scenarios/invite_blockin_clir/prefs.json delete mode 100644 scenarios/invite_blockin_clir/prefs.yml create mode 100644 scenarios/invite_blockin_wlst/prefs.json delete mode 100644 scenarios/invite_blockin_wlst/prefs.yml create mode 100644 scenarios/invite_blockout_blst/prefs.json delete mode 100644 scenarios/invite_blockout_blst/prefs.yml create mode 100644 scenarios/invite_blockout_ncos/prefs.json delete mode 100644 scenarios/invite_blockout_ncos/prefs.yml create mode 100644 scenarios/invite_blockout_pinoverride/prefs.json delete mode 100644 scenarios/invite_blockout_pinoverride/prefs.yml create mode 100644 scenarios/invite_blockout_wlst/prefs.json delete mode 100644 scenarios/invite_blockout_wlst/prefs.yml create mode 100644 scenarios/invite_concurrent_max/prefs.json delete mode 100644 scenarios/invite_concurrent_max/prefs.yml delete mode 100644 scenarios/invite_concurrent_max_out/prefs.yml delete mode 100644 scenarios/invite_concurrent_max_out_per_account/prefs.yml create mode 100644 scenarios/invite_concurrent_max_per_account/prefs.json delete mode 100644 scenarios/invite_concurrent_max_per_account/prefs.yml create mode 100644 scenarios/invite_foreign_dom/prefs.json delete mode 100644 scenarios/invite_foreign_dom/prefs.yml delete mode 100644 scenarios/invite_ignore_allowip/prefs.yml delete mode 100644 scenarios/invite_peerout_rewrite/prefs.yml delete mode 100644 scenarios/invite_peerout_rewrite_pv_regex/prefs.yml create mode 100644 scenarios/invite_tcp_udp_reinvite/prefs.json delete mode 100644 scenarios/invite_tcp_udp_reinvite/prefs.yml delete mode 100644 scenarios/register_allowip/prefs.yml delete mode 100644 scenarios/register_ignore_allowip/prefs.yml rename {scenarios => scenarios_disabled}/incoming_foreign_dom/0003_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/incoming_foreign_dom/0005_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/incoming_foreign_dom/0006_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/incoming_foreign_dom/0007_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/incoming_foreign_dom/0008_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/incoming_foreign_dom/0009_test.yml.tt2 (100%) create mode 100644 scenarios_disabled/incoming_foreign_dom/prefs.json rename {scenarios => scenarios_disabled}/incoming_foreign_dom/scenario.yml (53%) rename {scenarios => scenarios_disabled}/incoming_foreign_dom/sipp_scenario00.xml (100%) rename {scenarios => scenarios_disabled}/incoming_foreign_dom/sipp_scenario_responder00.xml (100%) rename {scenarios => scenarios_disabled}/incoming_peer/0003_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/incoming_peer/0005_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/incoming_peer/0006_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/incoming_peer/0007_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/incoming_peer/0008_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/incoming_peer/0009_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/incoming_peer/peer.yml (100%) rename {scenarios => scenarios_disabled}/incoming_peer/scenario.yml (52%) rename {scenarios => scenarios_disabled}/incoming_peer/sipp_scenario00.xml (100%) rename {scenarios => scenarios_disabled}/incoming_peer/sipp_scenario_responder00.xml (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out/0001_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out/0003_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out/0005_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out/0006_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out/0008_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out/0010_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out/0012_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out/0014_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out/0016_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out/0017_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out/peer.yml (100%) create mode 100644 scenarios_disabled/invite_concurrent_max_out/prefs.json rename {scenarios => scenarios_disabled}/invite_concurrent_max_out/scenario.yml (65%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out/sipp_scenario00.xml (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out/sipp_scenario_responder00.xml (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out_per_account/0001_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out_per_account/0003_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out_per_account/0005_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out_per_account/0006_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out_per_account/0008_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out_per_account/0010_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out_per_account/0012_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out_per_account/0014_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out_per_account/0016_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out_per_account/0017_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out_per_account/peer.yml (100%) create mode 100644 scenarios_disabled/invite_concurrent_max_out_per_account/prefs.json rename {scenarios => scenarios_disabled}/invite_concurrent_max_out_per_account/scenario.yml (65%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out_per_account/sipp_scenario00.xml (100%) rename {scenarios => scenarios_disabled}/invite_concurrent_max_out_per_account/sipp_scenario_responder00.xml (100%) rename {scenarios => scenarios_disabled}/invite_ignore_allowip/0003_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_ignore_allowip/0005_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_ignore_allowip/0007_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_ignore_allowip/0008_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_ignore_allowip/0009_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_ignore_allowip/0010_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_ignore_allowip/0011_test.yml.tt2 (100%) create mode 100644 scenarios_disabled/invite_ignore_allowip/prefs.json rename {scenarios => scenarios_disabled}/invite_ignore_allowip/scenario.yml (56%) rename {scenarios => scenarios_disabled}/invite_ignore_allowip/sipp_scenario00.xml (100%) rename {scenarios => scenarios_disabled}/invite_ignore_allowip/sipp_scenario_responder00.xml (100%) rename {scenarios => scenarios_disabled}/invite_peerout/0001_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout/0003_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout/0005_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout/0006_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout/0007_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout/0008_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout/0009_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout/peer.yml (100%) rename {scenarios => scenarios_disabled}/invite_peerout/scenario.yml (56%) rename {scenarios => scenarios_disabled}/invite_peerout/sipp_scenario00.xml (100%) rename {scenarios => scenarios_disabled}/invite_peerout/sipp_scenario_responder00.xml (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite/0001_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite/0003_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite/0005_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite/0006_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite/0007_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite/0008_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite/0009_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite/peer.yml (100%) create mode 100644 scenarios_disabled/invite_peerout_rewrite/prefs.json rename {scenarios => scenarios_disabled}/invite_peerout_rewrite/rewrite.yml (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite/scenario.yml (57%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite/sipp_scenario00.xml (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite/sipp_scenario_responder00.xml (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite_pv_regex/0001_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite_pv_regex/0003_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite_pv_regex/0005_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite_pv_regex/0006_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite_pv_regex/0007_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite_pv_regex/0008_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite_pv_regex/0009_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite_pv_regex/peer.yml (100%) create mode 100644 scenarios_disabled/invite_peerout_rewrite_pv_regex/prefs.json rename {scenarios => scenarios_disabled}/invite_peerout_rewrite_pv_regex/rewrite.yml (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite_pv_regex/scenario.yml (57%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite_pv_regex/sipp_scenario00.xml (100%) rename {scenarios => scenarios_disabled}/invite_peerout_rewrite_pv_regex/sipp_scenario_responder00.xml (100%) rename {scenarios => scenarios_disabled}/register_allowip/0001_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/register_allowip/0002_test.yml.tt2 (100%) create mode 100644 scenarios_disabled/register_allowip/prefs.json rename {scenarios => scenarios_disabled}/register_allowip/scenario.yml (54%) rename {scenarios => scenarios_disabled}/register_allowip/sipp_scenario00.xml (100%) rename {scenarios => scenarios_disabled}/register_ignore_allowip/0001_test.yml.tt2 (100%) rename {scenarios => scenarios_disabled}/register_ignore_allowip/0002_test.yml.tt2 (100%) create mode 100644 scenarios_disabled/register_ignore_allowip/prefs.json rename {scenarios => scenarios_disabled}/register_ignore_allowip/scenario.yml (55%) rename {scenarios => scenarios_disabled}/register_ignore_allowip/sipp_scenario00.xml (100%) diff --git a/.gitignore b/.gitignore index 341ce676..0a12ffeb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ *~ log result +mem *.pyc *_test.yml sipp_scenario_responder*_reg.xml diff --git a/bin/check.sh b/bin/check.sh index 9ab8213c..9ffd8721 100755 --- a/bin/check.sh +++ b/bin/check.sh @@ -92,10 +92,6 @@ function check_test # $1 domain function create_voip { - if ! /usr/bin/ngcp-create_domain "$1" ; then - echo "$(date) - Cannot create domain" - exit 1 - fi if ! "${BIN_DIR}/create_subscribers.pl" "${SCEN_CHECK_DIR}/scenario.yml" ; then echo "$(date) - Deleting domain:${DOMAIN}" delete_voip "$1" @@ -132,9 +128,9 @@ function create_voip_prefs "${BIN_DIR}/create_peers.pl" "${SCEN_CHECK_DIR}/peer.yml" fi - if [ -f "${SCEN_CHECK_DIR}/prefs.yml" ]; then + if [ -f "${SCEN_CHECK_DIR}/prefs.json" ]; then echo "$(date) - Setting preferences" - "${BIN_DIR}/set_preferences.pl" "${SCEN_CHECK_DIR}/prefs.yml" + "${BIN_DIR}/set_preferences.pl" "${SCEN_CHECK_DIR}/prefs.json" fi } diff --git a/bin/create_peers.pl b/bin/create_peers.pl index 3bb6fb33..000df528 100755 --- a/bin/create_peers.pl +++ b/bin/create_peers.pl @@ -21,6 +21,8 @@ use strict; use warnings; +die("Not implemented in REST"); + use English; use Getopt::Std; use Cwd 'abs_path'; diff --git a/bin/create_subscribers.pl b/bin/create_subscribers.pl index 1e18f270..39fdc307 100755 --- a/bin/create_subscribers.pl +++ b/bin/create_subscribers.pl @@ -1,6 +1,6 @@ #!/usr/bin/perl # -# Copyright: 2013 Sipwise Development Team +# Copyright: 2013-2015 Sipwise Development Team # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -24,88 +24,164 @@ use warnings; use English; use YAML; use Getopt::Long; -use Sipwise::Provisioning::Billing; -use Sipwise::Provisioning::Config; +use List::MoreUtils qw{ none }; +use Config::Tiny; +use Data::Dumper; +use Sipwise::API qw(all); -our %CONFIG = ( admin => 'cmd' ); - -my $config = Sipwise::Provisioning::Config->new()->get_config(); - -unless ($CONFIG{password} = $config->{acl}->{$CONFIG{admin}}->{password}) { - die "Error: No provisioning password found for user $CONFIG{admin}\n"; +my $config = Config::Tiny->read('/etc/default/ngcp-api'); +my $opts; +if ($config) { + $opts = {}; + $opts->{host} = $config->{_}->{NGCP_API_IP}; + $opts->{port} = $config->{_}->{NGCP_API_PORT}; + $opts->{sslverify} = $config->{_}->{NGCP_API_SSLVERIFY}; } - -our %BILLING = ( -# product => 'handle', - billing_profile => 'default', - ); +my $api = Sipwise::API->new($opts); +$opts = $api->opts; sub usage { - die "Usage:\n$PROGRAM_NAME scenario.yml\n". + return "Usage:\n$PROGRAM_NAME scenario.yml\n". "Options:\n". + " -d debug\n". " -h this help\n"; } my $help = 0; -my $debug = 0; -GetOptions ("h|help" => \$help, "d|debug" => \$debug) +GetOptions ("h|help" => \$help, "d|debug" => \$opts->{verbose}) or die("Error in command line arguments\n".usage()); die(usage()) unless (!$help); die("Wrong number of arguments\n".usage()) unless ($#ARGV == 0); -sub main +sub get_data { + my $val = shift; + my $data = { + administrative => $val->{admin} || 0, + domain_id => $val->{domain_id}, + customer_id => $val->{customer_id}, + username => $val->{username}, + password => $val->{password}, + primary_number => { + cc => $val->{cc}, + ac => $val->{ac}, + sn => $val->{sn} + }, + }; + my @aliases = (); + foreach (@{$val->{alias_numbers}}) { + my $alias = { + cc => $_->{cc}, + ac => $_->{ac}, + sn => $_->{sn} + }; + push(@aliases, $alias); + } + if(scalar(@aliases)>0) { + $data->{alias_numbers} = \@aliases; + } + return $data; +} + +sub manage_contacts { - my ($data, $bprov) = @_; - my @subs; - foreach my $domain (keys %{$data}) - { - foreach my $username (keys %{$data->{$domain}}) - { - my $s = $data->{$domain}->{$username}; - $s->{username} = $username; - $s->{domain} = $domain; - push(@subs, $s); - if($debug) { print("$username@$domain read\n"); } - } + my $data = shift; + my $type = shift; + foreach my $contact (@{$data->{contacts}}) + { + $data->{contact_id} = $api->check_contact_exists($contact, $type); + if(defined $data->{contact_id}) { + print "contact_$type [$contact->{email}] already there [$data->{contact_id}]\n"; + } else { + $data->{contact_id} = $api->create_contact($contact, $type); + print "contact_$type [$contact->{email}]: created [$data->{contact_id}]\n"; } - if(@subs) + } + return; +} + +sub manage_contracts +{ + my $data = shift; + foreach my $contract (@{$data->{contracts}}) + { + if(defined $data->{contact_id}) { - call_prov( $bprov, 'create_voip_account', { data => { %BILLING, subscribers => \@subs }}); - if($debug) { print("created ".($#subs+1)." subscribers"); } + $contract->{contact_id} = $data->{contact_id}; + $data->{contract_id} = $api->check_contract_exists($contract); + if(defined $data->{contract_id}) { + print "contract: already there [$data->{contract_id}]\n"; + } else { + $data->{contract_id} = $api->create_contract($contract); + print "contract : created [$data->{contract_id}]\n"; + } } - return; + } + return; } -sub call_prov { - # scalar, scalar, hash-ref - my ($bprov, $function, $parameter) = @_; - my $result; - - eval { - $result = $bprov->handle_request( $function, - { - authentication => { - type => 'system', - username => $CONFIG{admin}, - password => $CONFIG{password}, - }, - parameters => $parameter, - }); +sub manage_domains +{ + my $data = shift; + foreach my $domain (keys %{$data->{domains}}) + { + my $domain_data = $data->{domains}->{$domain}; + my $d_data = { + 'domain' => $domain }; + $domain_data->{domain_id} = $api->check_domain_exists($d_data); + if(defined $domain_data->{domain_id}) { + print "domain [$domain] already there [$domain_data->{domain_id}]\n"; + } else { + $d_data->{reseller_id} = $domain_data->{reseller_id}; - if($EVAL_ERROR) { - if(ref $EVAL_ERROR eq 'SOAP::Fault') { - die "Billing\::$function failed: ". $EVAL_ERROR->faultstring; - } else { - die "Billing\::$function failed: $EVAL_ERROR"; - } + $domain_data->{domain_id} = $api->create_domain($d_data); + print "domain [$domain]: created [$domain_data->{domain_id}]\n"; } + } + return; +} - return $result; +sub manage_customers +{ + my $data = shift; + foreach my $customer (keys %{$data->{customers}}) + { + my $customer_data = $data->{customers}->{$customer}; + manage_contacts($customer_data, 'customer'); + $customer_data->{details}->{contact_id} = $customer_data->{contact_id}; + $customer_data->{customer_id} = $api->check_customer_exists($customer_data->{details}); + if(defined $customer_data->{customer_id}) { + print "customer [$customer] already there [$customer_data->{customer_id}]\n"; + } else { + $customer_data->{customer_id} = $api->create_customer($customer_data->{details}); + print "customer [$customer]: created [$customer_data->{customer_id}]\n"; + } + } + return; } -my $cf = YAML::LoadFile($ARGV[0]); -my $bprov = Sipwise::Provisioning::Billing->new(); +sub main +{ + my $data = shift; + manage_customers($data); + manage_domains($data); -main($cf->{subscribers}, $bprov); + foreach my $domain (keys %{$data->{subscribers}}) + { + my $d_data = $data->{subscribers}->{$domain}; + foreach my $username (keys %{$d_data}) + { + my $s = $d_data->{$username}; + $s->{username} = $username; + $s->{domain_id} = $data->{domains}->{$domain}->{domain_id}; + $s->{customer_id} = $data->{customers}->{$s->{customer}}->{customer_id}; + $api->create_subscriber(get_data($s)); + print("$username\@$domain created\n"); + } + } + return; +} + +my $cf = YAML::LoadFile($ARGV[0]); +main($cf); diff --git a/bin/set_preferences.pl b/bin/set_preferences.pl index 0e07becb..bb5321ed 100755 --- a/bin/set_preferences.pl +++ b/bin/set_preferences.pl @@ -1,6 +1,6 @@ #!/usr/bin/perl # -# Copyright: 2013 Sipwise Development Team +# Copyright: 2013-2015 Sipwise Development Team # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -22,130 +22,164 @@ use strict; use warnings; use English; -use Getopt::Std; -use Cwd 'abs_path'; -use YAML; -use Sipwise::Provisioning::Voip; -use Sipwise::Provisioning::Config; +use JSON qw(); +use Getopt::Long; +use List::MoreUtils qw{ none }; +use Config::Tiny; +use Sipwise::API qw(all); +use Hash::Merge qw( merge ); use Data::Dumper; -our %CONFIG = ( admin => 'cmd' ); - -my $config = Sipwise::Provisioning::Config->new()->get_config(); - -unless ($CONFIG{password} = $config->{acl}->{$CONFIG{admin}}->{password}) { - die "Error: No provisioning password found for user $CONFIG{admin}\n"; +my $config = Config::Tiny->read('/etc/default/ngcp-api'); +my $opts; +if ($config) { + $opts = {}; + $opts->{host} = $config->{_}->{NGCP_API_IP}; + $opts->{port} = $config->{_}->{NGCP_API_PORT}; + $opts->{sslverify} = $config->{_}->{NGCP_API_SSLVERIFY}; } +my $api = Sipwise::API->new($opts); +$opts = $api->opts; -sub main; -sub usage; -sub call_prov; - -die usage() unless ($#ARGV == 0); +sub usage { + return "Usage:\n$PROGRAM_NAME prefs.json\n". + "Options:\n". + " -d debug\n". + " -h this help\n"; +} +my $help = 0; +GetOptions ("h|help" => \$help, "d|debug" => \$opts->{verbose}) + or die("Error in command line arguments\n".usage()); -our $vprov = Sipwise::Provisioning::Voip->new(); +die(usage()) unless (!$help); +die("Wrong number of arguments\n".usage()) unless ($#ARGV == 0); -main(); +sub set_subscriber_preferences +{ + my $subscriber = shift; + my $domain = shift; + my $prefs = shift; + my $subs_id = $api->check_subscriber_exists({ + 'domain'=>$domain, + 'username'=>$subscriber}); + if(defined $subs_id) { + my $subs_prefs = $api->get_subscriber_preferences($subs_id); + delete $subs_prefs->{_links}; + my $subs_prefs_id = $subs_prefs->{id}; + my $res = $api->set_subscriber_preferences($subs_prefs_id, + merge($prefs, $subs_prefs)); + if($opts->{verbose}) { + print Dumper $res; + } + if(defined $res) { + print "prefs created for ${subscriber}\@${domain}\n"; + } + } + else { + die("No subscriber ${subscriber}\@${domain} found"); + } + return; +} -sub get_peers +sub set_domain_preferences { - my $peers; - my $result = call_prov( $vprov, 'get_peer_groups'); - foreach (@{$result}) - { - my $res = call_prov( $vprov, 'get_peer_group_details', {id=>$_->{id}}); - foreach (@{$res->{peers}}) - { - $peers->{$_->{name}} = $_->{id}; - } - } - return $peers; + my $domain = shift; + my $prefs = shift; + my $domain_id = $api->check_domain_exists({'domain' => $domain}); + + if(defined $domain_id) { + my $dom_prefs = $api->get_domain_preferences($domain_id); + my $links = delete $dom_prefs->{_links}; + my $dom_prefs_id = $dom_prefs->{id}; + my $res = $api->set_domain_preferences($dom_prefs_id, + merge($prefs, $dom_prefs)); + if($opts->{verbose}) { + print Dumper $res; + } + if(defined $res) { + print "prefs created for ${domain}\n"; + } + } + else { + die("No domain ${domain} found"); + } + return; } -sub get_rewrites +sub set_peer_preferences { - my $rule_set; - my $result = call_prov( $vprov, 'get_rewrite_rule_sets'); - foreach (@{$result}) - { - $rule_set->{$_->{name}} = $_->{id}; - } - return $rule_set; + my $id = shift; + my $prefs = shift; + my $peer_id = $api->check_peer_exists($id); + + if(defined $peer_id) { + my $peer_prefs = $api->get_peer_preferences($peer_id); + delete $peer_prefs->{_links}; + my $peer_prefs_id = $peer_prefs->{id}; + return $api->set_peer_preferences($peer_prefs_id, + merge($prefs, $peer_prefs)); + } + else { + die("No peer ${id} found"); + } + return; } sub main { - my $filename = abs_path($ARGV[0]); - my $prefs = YAML::LoadFile($filename); - my $peers; - my $rule_set; - - for my $key (keys $prefs) - { - if (exists($prefs->{$key}->{rewrite_rule_set})) - { - if(!$rule_set) { $rule_set = get_rewrites($vprov); } - if (exists($rule_set->{$prefs->{$key}->{rewrite_rule_set}})) - { - $prefs->{$key}->{rewrite_rule_set} = $rule_set->{$prefs->{$key}->{rewrite_rule_set}}; - } - else - { - die("No rewrite_rule_set:$prefs->{$key}->{rewrite_rule_set} found"); - } - } - if ( $key =~ /@/ ) - { - my @fields = split /@/, $key; - if (!$fields[0]) - { - my $pref = { domain => $fields[1], preferences => $prefs->{$key} }; - call_prov( $vprov, 'set_domain_preferences', $pref); - } - else - { - my $pref = { username => $fields[0], domain => $fields[1], preferences => $prefs->{$key} }; - call_prov( $vprov, 'set_subscriber_preferences', $pref); - } - } - else - { - if (!$peers) { $peers = get_peers($vprov); } - my $pref = { id => $peers->{$key}, preferences => $prefs->{$key} }; - call_prov( $vprov, 'set_peer_preferences', $pref); - } - } - - exit; + my $prefs = shift; + my $peers; + my $rule_set; + + for my $key (keys %{$prefs}) + { + if (exists($prefs->{$key}->{rewrite_rule_set})) + { + my $rule_set_id = $api->check_rewriterule_exists( + $prefs->{$key}->{rewrite_rule_set}); + if (defined $rule_set_id) + { + $prefs->{$key}->{rewrite_rule_set} = $rule_set->{$prefs->{$key}->{rewrite_rule_set}}; + } + else + { + die("No rewrite_rule_set:$prefs->{$key}->{rewrite_rule_set} found"); + } + } + if ( $key =~ /@/ ) + { + my @fields = split /@/, $key; + if (!$fields[0]) + { + set_domain_preferences($fields[1], $prefs->{$key}); + } + else + { + set_subscriber_preferences($fields[0], $fields[1], $prefs->{$key}); + } + } + else + { + #set_peer_preferences($key, $prefs->{$key}); + die "API peer preferences *Not* implemented"; + } + } + + exit; } -sub call_prov { - # scalar, scalar, hash-ref - my ($prov, $function, $parameter) = @_; - my $result; - - eval { - $result = $prov->handle_request( $function, - { - authentication => { - type => 'system', - username => $CONFIG{admin}, - password => $CONFIG{password}, - }, - parameters => $parameter, - }); - }; - - if($EVAL_ERROR) { - if(ref $EVAL_ERROR eq 'SOAP::Fault') { - die "Billing\::$function failed: ". $EVAL_ERROR->faultstring; - } else { - die "Billing\::$function failed: $EVAL_ERROR"; - } - } - - return $result; +sub get_json { + my $filename = shift; + my $json_text = do { + open(my $json_fh, "<:encoding(UTF-8)", $filename) + or die("Can't open \$filename\": $ERRNO\n"); + undef $RS; # enable "slurp" mode + <$json_fh> + }; + + my $json = JSON->new; + return $json->decode($json_text); } -sub usage { - die "Usage:\n$PROGRAM_NAME prefs.yml\n"; -} +my $cf = get_json($ARGV[0]); + +main($cf); diff --git a/debian/control b/debian/control index c6f86ded..cdc5e0b1 100644 --- a/debian/control +++ b/debian/control @@ -10,6 +10,8 @@ Package: kamailio-config-tests Architecture: all Depends: curl, libgraphviz-perl, + libhash-merge-perl, + libjson-perl, libtemplate-perl, libtext-csv-perl, ngcp-ossbss-clients-perl, @@ -17,7 +19,7 @@ Depends: curl, python, python-pyinotify, python-yaml, - sip-tester ( >= 1:3.2-1~ ), + sip-tester ( >= 1:3.3-1~ ), tcpdump, ${misc:Depends} Description: Kamailio configuration tests diff --git a/debian/install b/debian/install index 7e56b4c9..e4187b34 100644 --- a/debian/install +++ b/debian/install @@ -1,5 +1,6 @@ bench.sh /usr/share/kamailio-config-tests/ bin/ /usr/share/kamailio-config-tests/ get_results.sh /usr/share/kamailio-config-tests/ +lib/ /usr/share/kamailio-config-tests/ run_tests.sh /usr/share/kamailio-config-tests/ scenarios/ /usr/share/kamailio-config-tests/ diff --git a/get_results.sh b/get_results.sh index 503f963c..b87c0f4a 100755 --- a/get_results.sh +++ b/get_results.sh @@ -1,5 +1,6 @@ #!/bin/bash -BASE_DIR="${BASE_DIR:-/usr/share/kamailio-config-tests}" +RUN_DIR="$(dirname "$0")" +export BASE_DIR=${BASE_DIR:-$RUN_DIR} BIN_DIR="${BASE_DIR}/bin" PROFILE="CE" DOMAIN="spce.test" diff --git a/lib/Sipwise/API.pm b/lib/Sipwise/API.pm new file mode 100644 index 00000000..6c88b1ad --- /dev/null +++ b/lib/Sipwise/API.pm @@ -0,0 +1,377 @@ +# +# Copyright: 2013-2015 Sipwise Development Team +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This package is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# On Debian systems, the complete text of the GNU General +# Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". +# +package Sipwise::API 0.001; + +use strict; +use warnings; + +use English; +use Hash::Merge qw( merge ); +use JSON qw(); +use LWP::UserAgent; +use IO::Socket::SSL; +use URI; +use Data::Dumper; + +my $opts_default = { + host => '127.0.0.1', + port => 1443, + auth_user => 'administrator', + auth_pwd => 'administrator', + verbose => 0, + sslverify => 'no', + admin => 0 +}; + +sub _get_id { + my $baseurl = shift; + my $location = shift; + my $id; + + ($id) = ($location =~ m/\Q$baseurl\E(\d+)/); + return $id; +} + +sub new { + my $class = shift; + my $opts = shift; + my $self = {}; + + $self->{opts} = merge($opts, $opts_default); + bless $self, $class; + + return $self; +} + +sub opts { + my $self = shift; + if (@_) { + $self->{opts} = shift; + } + return $self->{opts}; +} + +sub do_request { + my $self = shift; + my $ua = shift; + my $url = shift; + my $data = shift; + my $req_type = shift || 'POST'; + my $ct = 'application/json'; + + if($req_type =~ 'PATCH') { + $ct = 'application/json-patch+json'; + } + + my $req = HTTP::Request->new($req_type, $url); + $req->header('Content-Type' => $ct); + $req->header('Prefer' => 'return=representation'); + $req->content(JSON::to_json($data)); + my $res = $ua->request($req); + if(!$res->is_success) { + print "$url\n"; + print Dumper $data unless $self->{opts}->{verbose}; + } + return $res; +} + +sub do_query { + my $self = shift; + my $ua = shift; + my $url = shift; + my $data = shift; + my $URL = URI->new($url); + $URL->query_form($data); + my $req = HTTP::Request->new('GET', $URL); + + my $res = $ua->request($req); + if(!$res->is_success) { + print "$url\n"; + print Dumper $data unless $self->{opts}->{verbose}; + } + return $res; +} + +sub create_ua { + my $self = shift; + my $ua = LWP::UserAgent->new(); + + if($self->{opts}->{sslverify} eq 'no') { + $ua->ssl_opts( + verify_hostname => 0, + SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_NONE, + ); + } + $ua->credentials( + $self->{opts}->{host}.':'.$self->{opts}->{port}, + 'api_admin_http', + $self->{opts}->{auth_user}, + $self->{opts}->{auth_pwd} + ); + # debug!! + if($self->{opts}->{verbose}) { + $ua->show_progress(1); + $ua->add_handler("request_send", sub { shift->dump; return }); + $ua->add_handler("response_done", sub { shift->dump; return }); + } + return $ua; +} + +sub _create { + my $self = shift; + my $data = shift; + my $urldata = shift; + my $urlbase = 'https://'.$self->{opts}->{host}.':'.$self->{opts}->{port}; + + my $ua = $self->create_ua(); + my $res = $self->do_request($ua, $urlbase.$urldata, $data); + if($res->is_success) { + if($self->{opts}->{verbose}) { + print $res->status_line . ' ' . $res->header('Location') . "\n"; + } + return _get_id($urldata, $res->header('Location')); + } else { + die $res->as_string; + } + return; +} + +sub _get_content { + my $self = shift; + my $data = shift; + my $urldata = shift; + my $urlbase = 'https://'.$self->{opts}->{host}.':'.$self->{opts}->{port}; + my $ua = $self->create_ua(); + + my $res = $self->do_query($ua, $urlbase.$urldata, $data); + if($res->is_success) { + return JSON::from_json( $res->decoded_content ); + } + else { + die $res->as_string; + } + return; +} + +sub _set_content { + my $self = shift; + my $data = shift; + my $urldata = shift; + my $urlbase = 'https://'.$self->{opts}->{host}.':'.$self->{opts}->{port}; + my $ua = $self->create_ua(); + + my $res = $self->do_request($ua, $urlbase.$urldata, $data, 'PUT'); + if($res->is_success) { + return JSON::from_json( $res->decoded_content ); + } + else { + die $res->as_string; + } + return; +} + +sub _exists { + my $self = shift; + my $data = shift; + my $urldata = shift; + my $collection_id = shift; + my $collection = $self->_get_content($data, $urldata); + + if (defined $collection && $collection->{total_count} == 1) { + return $collection->{_embedded}->{$collection_id}->{id}; + } + return; +} + +sub check_contact_exists { + my $self = shift; + my $data = shift; + my $type = shift; + my $urldata = "/api/${type}contacts/"; + my $collection_id = "ngcp:${type}contacts"; + + return $self->_exists($data, $urldata, $collection_id); +} + +sub create_contact { + my $self = shift; + my $data = shift; + my $type = shift; + my $urldata = "/api/${type}contacts/"; + + return $self->_create($data, $urldata); +} + +sub check_contract_exists { + my $self = shift; + my $data = shift; + my $urldata = '/api/contracts/'; + my $collection_id = 'ngcp:contracts'; + + return $self->_exists($data, $urldata, $collection_id); +} + +sub create_contract { + my $self = shift; + my $data = shift; + my $urldata = '/api/contracts/'; + + return $self->_create($data, $urldata); +} + +sub check_reseller_exists { + my $self = shift; + my $data = shift; + my $urldata = '/api/resellers/'; + my $collection_id = 'ngcp:resellers'; + + return $self->_exists($data, $urldata, $collection_id); +} + +sub create_reseller { + my $self = shift; + my $data = shift; + my $urldata = '/api/resellers/'; + + return $self->_create($data, $urldata); +} + +sub check_domain_exists { + my $self = shift; + my $data = shift; + my $urldata = "/api/domains/"; + my $collection_id = 'ngcp:domains'; + + return $self->_exists($data, $urldata, $collection_id); +} + +sub get_domain_preferences { + my $self = shift; + my $id = shift; + my $urldata = "/api/domains/${id}"; + my $collection_id = 'ngcp:domainpreferences'; + + return $self->_get_content(undef, $urldata); +} + +sub set_domain_preferences { + my $self = shift; + my $id = shift; + my $data = shift; + my $urldata = "/api/domainpreferences/${id}"; + my $collection_id = 'ngcp:domainpreferences'; + + return $self->_set_content($data, $urldata); +} + +sub create_domain { + my $self = shift; + my $data = shift; + my $urldata = '/api/domains/'; + + return $self->_create($data, $urldata); +} + +sub check_customer_exists { + my $self = shift; + my $data = shift; + my $urldata = '/api/customers/'; + my $collection_id = 'ngcp:customers'; + + return $self->_exists($data, $urldata, $collection_id); +} + +sub create_customer { + my $self = shift; + my $data = shift; + my $urldata = '/api/customers/'; + + return $self->_create($data, $urldata); +} + +sub check_subscriber_exists { + my $self = shift; + my $data = shift; + my $urldata = '/api/subscribers/'; + my $collection_id = 'ngcp:subscribers'; + + return $self->_exists($data, $urldata, $collection_id); +} + +sub get_subscriber_preferences { + my $self = shift; + my $id = shift; + my $urldata = "/api/subscribers/${id}"; + my $collection_id = 'ngcp:subscriberpreferences'; + + return $self->_get_content(undef, $urldata); +} + +sub set_subscriber_preferences { + my $self = shift; + my $id = shift; + my $data = shift; + my $urldata = "/api/subscriberpreferences/${id}"; + my $collection_id = 'ngcp:subscriberpreferences'; + + return $self->_set_content($data, $urldata); +} + +sub create_subscriber { + my $self = shift; + my $data = shift; + my $urldata = '/api/subscribers/'; + + return $self->_create($data, $urldata); +} + +sub check_rewriterule_exists { + my $self = shift; + my $data = shift; + my $urldata = '/api/rewriterules/'; + my $collection_id = 'ngcp:rewriterules'; + + return $self->_exists($data, $urldata, $collection_id); +} + +sub create_rewriterule { + my $self = shift; + my $data = shift; + my $urldata = '/api/rewriterules/'; + + return $self->_create($data, $urldata); +} + +sub check_rewriteruleset_exists { + my $self = shift; + my $data = shift; + my $urldata = '/api/rewriterulesets/'; + my $collection_id = 'ngcp:rewriterules'; + + return $self->_exists($data, $urldata, $collection_id); +} + +sub create_rewriteruleset { + my $self = shift; + my $data = shift; + my $urldata = '/api/rewriterulesets/'; + + return $self->_create($data, $urldata); +} diff --git a/run_tests.sh b/run_tests.sh index 0121762f..e49162ea 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -1,5 +1,8 @@ #!/bin/bash -BASE_DIR=${BASE_DIR:-"/usr/share/kamailio-config-tests"} +RUN_DIR="$(dirname "$0")" +export BASE_DIR=${BASE_DIR:-$RUN_DIR} +# Set up the environment, to use local perl modules +export PERL5LIB="${BASE_DIR}/lib" BIN_DIR="${BASE_DIR}/bin" LOG_DIR="${BASE_DIR}/log" MLOG_DIR="${BASE_DIR}/mem" diff --git a/scenarios/auth_fail/scenario.yml b/scenarios/auth_fail/scenario.yml index b3dda463..14535f6f 100644 --- a/scenarios/auth_fail/scenario.yml +++ b/scenarios/auth_fail/scenario.yml @@ -1,7 +1,21 @@ test_uuid: auth_fail +domains: + 'spce.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: spce.test: testuser1003: + customer: 'customer.test' password: testuser cc: 43 ac: 1 diff --git a/scenarios/incoming_foreign_dom/prefs.yml b/scenarios/incoming_foreign_dom/prefs.yml deleted file mode 100644 index d3706949..00000000 --- a/scenarios/incoming_foreign_dom/prefs.yml +++ /dev/null @@ -1,2 +0,0 @@ -'@spce.test': - unauth_inbound_calls: yes diff --git a/scenarios/invite/scenario.yml b/scenarios/invite/scenario.yml index 149c3c52..70bde095 100644 --- a/scenarios/invite/scenario.yml +++ b/scenarios/invite/scenario.yml @@ -1,12 +1,27 @@ test_uuid: invite +domains: + 'spce.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: spce.test: testuser1003: + customer: 'customer.test' password: testuser cc: 43 ac: 1 sn: 1003 testuser1002: + customer: 'customer.test' password: testuser cc: 43 ac: 1 diff --git a/scenarios/invite_allowedcli_match/prefs.json b/scenarios/invite_allowedcli_match/prefs.json new file mode 100644 index 00000000..831f6cc1 --- /dev/null +++ b/scenarios/invite_allowedcli_match/prefs.json @@ -0,0 +1,11 @@ +{ + "testuser1002@spce.test": { + "allowed_clis": [ + "43110029*", + "43110021*" + ], + "cli": 4311002, + "user_cli": 43122122, + "inbound_upn": "from_display" + } +} diff --git a/scenarios/invite_allowedcli_match/prefs.yml b/scenarios/invite_allowedcli_match/prefs.yml deleted file mode 100644 index 5db9c1f1..00000000 --- a/scenarios/invite_allowedcli_match/prefs.yml +++ /dev/null @@ -1,4 +0,0 @@ -testuser1002@spce.test: - allowed_clis: [ "43110029*", "43110021*" ] - user_cli: 43122122 - inbound_upn: from_display diff --git a/scenarios/invite_allowedcli_match/scenario.yml b/scenarios/invite_allowedcli_match/scenario.yml index 06c2dd4a..dce97d60 100644 --- a/scenarios/invite_allowedcli_match/scenario.yml +++ b/scenarios/invite_allowedcli_match/scenario.yml @@ -1,12 +1,27 @@ test_uuid: invite_allowedcli_match +domains: + 'spce.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: spce.test: testuser1003: + customer: 'customer.test' password: testuser cc: 43 ac: 1 sn: 1003 testuser1002: + customer: 'customer.test' password: testuser cc: 43 ac: 1 diff --git a/scenarios/invite_allowedcli_match_alias/prefs.json b/scenarios/invite_allowedcli_match_alias/prefs.json new file mode 100644 index 00000000..1d0a67a0 --- /dev/null +++ b/scenarios/invite_allowedcli_match_alias/prefs.json @@ -0,0 +1,11 @@ +{ + "testuser1002@spce.test": { + "allowed_clis": [ + "43110029*", + "43110021*" + ], + "user_cli": 43122122, + "inbound_upn": "from_display", + "extension_in_npn": true + } +} diff --git a/scenarios/invite_allowedcli_match_alias/prefs.yml b/scenarios/invite_allowedcli_match_alias/prefs.yml deleted file mode 100644 index 29a53a28..00000000 --- a/scenarios/invite_allowedcli_match_alias/prefs.yml +++ /dev/null @@ -1,5 +0,0 @@ -testuser1002@spce.test: - allowed_clis: [ "43110029*", "43110021*" ] - user_cli: 43122122 - inbound_upn: from_display - extension_in_npn: 1 diff --git a/scenarios/invite_allowedcli_match_alias/scenario.yml b/scenarios/invite_allowedcli_match_alias/scenario.yml index 88a34a5e..0ed430b8 100644 --- a/scenarios/invite_allowedcli_match_alias/scenario.yml +++ b/scenarios/invite_allowedcli_match_alias/scenario.yml @@ -1,12 +1,27 @@ test_uuid: invite_allowedcli_match_alias +domains: + 'spce.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: spce.test: testuser1003: + customer: 'customer.test' password: testuser cc: 43 ac: 1 sn: 1003 testuser1002: + customer: 'customer.test' password: testuser cc: 43 ac: 1 diff --git a/scenarios/invite_allowedcli_nonmatch/prefs.json b/scenarios/invite_allowedcli_nonmatch/prefs.json new file mode 100644 index 00000000..831f6cc1 --- /dev/null +++ b/scenarios/invite_allowedcli_nonmatch/prefs.json @@ -0,0 +1,11 @@ +{ + "testuser1002@spce.test": { + "allowed_clis": [ + "43110029*", + "43110021*" + ], + "cli": 4311002, + "user_cli": 43122122, + "inbound_upn": "from_display" + } +} diff --git a/scenarios/invite_allowedcli_nonmatch/prefs.yml b/scenarios/invite_allowedcli_nonmatch/prefs.yml deleted file mode 100644 index 5db9c1f1..00000000 --- a/scenarios/invite_allowedcli_nonmatch/prefs.yml +++ /dev/null @@ -1,4 +0,0 @@ -testuser1002@spce.test: - allowed_clis: [ "43110029*", "43110021*" ] - user_cli: 43122122 - inbound_upn: from_display diff --git a/scenarios/invite_allowedcli_nonmatch/scenario.yml b/scenarios/invite_allowedcli_nonmatch/scenario.yml index c111915e..8ac54169 100644 --- a/scenarios/invite_allowedcli_nonmatch/scenario.yml +++ b/scenarios/invite_allowedcli_nonmatch/scenario.yml @@ -1,12 +1,27 @@ test_uuid: invite_allowedcli_nonmatch +domains: + 'spce.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: spce.test: testuser1003: + customer: 'customer.test' password: testuser cc: 43 ac: 1 sn: 1003 testuser1002: + customer: 'customer.test' password: testuser cc: 43 ac: 1 diff --git a/scenarios/invite_allowip/prefs.json b/scenarios/invite_allowip/prefs.json new file mode 100644 index 00000000..626fcd0e --- /dev/null +++ b/scenarios/invite_allowip/prefs.json @@ -0,0 +1,8 @@ +{ + "testuser1002@spce.test": { + "allowed_ips": [ + "1.2.3.4" + ], + "cli": 4311002 + } +} diff --git a/scenarios/invite_allowip/prefs.yml b/scenarios/invite_allowip/prefs.yml deleted file mode 100644 index bd5935b7..00000000 --- a/scenarios/invite_allowip/prefs.yml +++ /dev/null @@ -1,2 +0,0 @@ -testuser1002@spce.test: - allowed_ips: [ "1.2.3.4" ] diff --git a/scenarios/invite_allowip/scenario.yml b/scenarios/invite_allowip/scenario.yml index 8ca7b878..a57c9231 100644 --- a/scenarios/invite_allowip/scenario.yml +++ b/scenarios/invite_allowip/scenario.yml @@ -1,12 +1,27 @@ test_uuid: invite_allowip +domains: + 'spce.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: spce.test: testuser1003: + customer: 'customer.test' password: testuser cc: 43 ac: 1 sn: 1003 testuser1002: + customer: 'customer.test' password: testuser cc: 43 ac: 1 diff --git a/scenarios/invite_blockin_blst/prefs.json b/scenarios/invite_blockin_blst/prefs.json new file mode 100644 index 00000000..5e99d494 --- /dev/null +++ b/scenarios/invite_blockin_blst/prefs.json @@ -0,0 +1,8 @@ +{ + "testuser1003@spce.test": { + "block_in_list": [ + "4311001", + "4311002" + ] + } +} diff --git a/scenarios/invite_blockin_blst/prefs.yml b/scenarios/invite_blockin_blst/prefs.yml deleted file mode 100644 index 733f3821..00000000 --- a/scenarios/invite_blockin_blst/prefs.yml +++ /dev/null @@ -1,2 +0,0 @@ -testuser1003@spce.test: - block_in_list: [ "4311001", "4311002" ] diff --git a/scenarios/invite_blockin_blst/scenario.yml b/scenarios/invite_blockin_blst/scenario.yml index 369ab272..338d15a6 100644 --- a/scenarios/invite_blockin_blst/scenario.yml +++ b/scenarios/invite_blockin_blst/scenario.yml @@ -1,12 +1,27 @@ test_uuid: invite_blockin_blst +domains: + 'spce.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: spce.test: testuser1003: + customer: 'customer.test' password: testuser cc: 43 ac: 1 sn: 1003 testuser1002: + customer: 'customer.test' password: testuser cc: 43 ac: 1 diff --git a/scenarios/invite_blockin_clir/prefs.json b/scenarios/invite_blockin_clir/prefs.json new file mode 100644 index 00000000..082225e3 --- /dev/null +++ b/scenarios/invite_blockin_clir/prefs.json @@ -0,0 +1,11 @@ +{ + "testuser1002@spce.test": { + "clir": true + }, + "testuser1003@spce.test": { + "block_in_list": [ + "4311001" + ], + "block_in_clir": true + } +} diff --git a/scenarios/invite_blockin_clir/prefs.yml b/scenarios/invite_blockin_clir/prefs.yml deleted file mode 100644 index 4cb7cc07..00000000 --- a/scenarios/invite_blockin_clir/prefs.yml +++ /dev/null @@ -1,5 +0,0 @@ -testuser1002@spce.test: - clir: 1 -testuser1003@spce.test: - block_in_list: [ "4311001" ] - block_in_clir: 1 diff --git a/scenarios/invite_blockin_clir/scenario.yml b/scenarios/invite_blockin_clir/scenario.yml index e112a4db..09cef062 100644 --- a/scenarios/invite_blockin_clir/scenario.yml +++ b/scenarios/invite_blockin_clir/scenario.yml @@ -1,12 +1,27 @@ test_uuid: invite_blockin_clir +domains: + 'spce.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: spce.test: testuser1003: + customer: 'customer.test' password: testuser cc: 43 ac: 1 sn: 1003 testuser1002: + customer: 'customer.test' password: testuser cc: 43 ac: 1 diff --git a/scenarios/invite_blockin_wlst/prefs.json b/scenarios/invite_blockin_wlst/prefs.json new file mode 100644 index 00000000..7569b8df --- /dev/null +++ b/scenarios/invite_blockin_wlst/prefs.json @@ -0,0 +1,8 @@ +{ + "testuser1003@spce.test": { + "block_in_list": [ + "4311001" + ], + "block_in_mode": true + } +} diff --git a/scenarios/invite_blockin_wlst/prefs.yml b/scenarios/invite_blockin_wlst/prefs.yml deleted file mode 100644 index 64dea9bb..00000000 --- a/scenarios/invite_blockin_wlst/prefs.yml +++ /dev/null @@ -1,3 +0,0 @@ -testuser1003@spce.test: - block_in_list: [ "4311001" ] - block_in_mode: 1 diff --git a/scenarios/invite_blockin_wlst/scenario.yml b/scenarios/invite_blockin_wlst/scenario.yml index 6147c983..c58d963a 100644 --- a/scenarios/invite_blockin_wlst/scenario.yml +++ b/scenarios/invite_blockin_wlst/scenario.yml @@ -1,12 +1,27 @@ test_uuid: invite_blockin_wlst +domains: + 'spce.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: spce.test: testuser1003: + customer: 'customer.test' password: testuser cc: 43 ac: 1 sn: 1003 testuser1002: + customer: 'customer.test' password: testuser cc: 43 ac: 1 diff --git a/scenarios/invite_blockout_blst/prefs.json b/scenarios/invite_blockout_blst/prefs.json new file mode 100644 index 00000000..0ee2369d --- /dev/null +++ b/scenarios/invite_blockout_blst/prefs.json @@ -0,0 +1,8 @@ +{ + "testuser1002@spce.test": { + "block_out_list": [ + "4311003", + "4311001" + ] + } +} diff --git a/scenarios/invite_blockout_blst/prefs.yml b/scenarios/invite_blockout_blst/prefs.yml deleted file mode 100644 index ff3b70b0..00000000 --- a/scenarios/invite_blockout_blst/prefs.yml +++ /dev/null @@ -1,2 +0,0 @@ -testuser1002@spce.test: - block_out_list: [ "4311003", "4311001" ] diff --git a/scenarios/invite_blockout_blst/scenario.yml b/scenarios/invite_blockout_blst/scenario.yml index db1e2496..090fc8d6 100644 --- a/scenarios/invite_blockout_blst/scenario.yml +++ b/scenarios/invite_blockout_blst/scenario.yml @@ -1,12 +1,27 @@ test_uuid: invite_blockout_blst +domains: + 'spce.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: spce.test: testuser1003: + customer: 'customer.test' password: testuser cc: 43 ac: 1 sn: 1003 testuser1002: + customer: 'customer.test' password: testuser cc: 43 ac: 1 diff --git a/scenarios/invite_blockout_ncos/prefs.json b/scenarios/invite_blockout_ncos/prefs.json new file mode 100644 index 00000000..00c72fc0 --- /dev/null +++ b/scenarios/invite_blockout_ncos/prefs.json @@ -0,0 +1,5 @@ +{ + "testuser1002@spce.test": { + "ncos": "ncos_test_00" + } +} diff --git a/scenarios/invite_blockout_ncos/prefs.yml b/scenarios/invite_blockout_ncos/prefs.yml deleted file mode 100644 index a50b59a1..00000000 --- a/scenarios/invite_blockout_ncos/prefs.yml +++ /dev/null @@ -1,2 +0,0 @@ -testuser1002@spce.test: - ncos: ncos_test_00 diff --git a/scenarios/invite_blockout_ncos/scenario.yml b/scenarios/invite_blockout_ncos/scenario.yml index ac22868b..e5900b91 100644 --- a/scenarios/invite_blockout_ncos/scenario.yml +++ b/scenarios/invite_blockout_ncos/scenario.yml @@ -1,12 +1,27 @@ test_uuid: invite_blockout_ncos +domains: + 'spce.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: spce.test: testuser1003: + customer: 'customer.test' password: testuser cc: 43 ac: 1 sn: 1003 testuser1002: + customer: 'customer.test' password: testuser cc: 43 ac: 1 diff --git a/scenarios/invite_blockout_pinoverride/prefs.json b/scenarios/invite_blockout_pinoverride/prefs.json new file mode 100644 index 00000000..f96561dc --- /dev/null +++ b/scenarios/invite_blockout_pinoverride/prefs.json @@ -0,0 +1,10 @@ +{ + "testuser1002@spce.test": { + "block_out_list": [ + "4311001", + "4311003" + ], + "block_out_override_pin": 444, + "cli": 4311002 + } +} diff --git a/scenarios/invite_blockout_pinoverride/prefs.yml b/scenarios/invite_blockout_pinoverride/prefs.yml deleted file mode 100644 index 5e3983d6..00000000 --- a/scenarios/invite_blockout_pinoverride/prefs.yml +++ /dev/null @@ -1,3 +0,0 @@ -testuser1002@spce.test: - block_out_list: [ "4311001", "4311003" ] - block_out_override_pin: 444 diff --git a/scenarios/invite_blockout_pinoverride/scenario.yml b/scenarios/invite_blockout_pinoverride/scenario.yml index 811e1b75..8d560805 100644 --- a/scenarios/invite_blockout_pinoverride/scenario.yml +++ b/scenarios/invite_blockout_pinoverride/scenario.yml @@ -1,12 +1,27 @@ test_uuid: invite_blockout_pinoverride +domains: + 'spce.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: spce.test: testuser1003: + customer: 'customer.test' password: testuser cc: 43 ac: 1 sn: 1003 testuser1002: + customer: 'customer.test' password: testuser cc: 43 ac: 1 diff --git a/scenarios/invite_blockout_wlst/prefs.json b/scenarios/invite_blockout_wlst/prefs.json new file mode 100644 index 00000000..a5dbe4f3 --- /dev/null +++ b/scenarios/invite_blockout_wlst/prefs.json @@ -0,0 +1,9 @@ +{ + "testuser1002@spce.test": { + "block_out_list": [ + "4311001", + "4311002" + ], + "block_out_mode": true + } +} diff --git a/scenarios/invite_blockout_wlst/prefs.yml b/scenarios/invite_blockout_wlst/prefs.yml deleted file mode 100644 index f22302a6..00000000 --- a/scenarios/invite_blockout_wlst/prefs.yml +++ /dev/null @@ -1,3 +0,0 @@ -testuser1002@spce.test: - block_out_list: [ "4311001", "4311002" ] - block_out_mode: 1 diff --git a/scenarios/invite_blockout_wlst/scenario.yml b/scenarios/invite_blockout_wlst/scenario.yml index cddd4b35..52a6ed28 100644 --- a/scenarios/invite_blockout_wlst/scenario.yml +++ b/scenarios/invite_blockout_wlst/scenario.yml @@ -1,12 +1,27 @@ test_uuid: invite_blockout_wlst +domains: + 'spce.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: spce.test: testuser1003: + customer: 'customer.test' password: testuser cc: 43 ac: 1 sn: 1003 testuser1002: + customer: 'customer.test' password: testuser cc: 43 ac: 1 diff --git a/scenarios/invite_callforward/scenario.yml b/scenarios/invite_callforward/scenario.yml index 9b7ef02d..2db16bb9 100644 --- a/scenarios/invite_callforward/scenario.yml +++ b/scenarios/invite_callforward/scenario.yml @@ -1,27 +1,45 @@ test_uuid: invite_callforward +domains: + 'spce.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: spce.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 testuser1001: + customer: 'customer.test' password: testuser cc: 43 ac: 1 sn: 1001 testuser1004: + customer: 'customer.test' password: testuser cc: 43 ac: 1 sn: 1004 testuser1005: + customer: 'customer.test' password: testuser cc: 43 ac: 1 diff --git a/scenarios/invite_concurrent_max/prefs.json b/scenarios/invite_concurrent_max/prefs.json new file mode 100644 index 00000000..ee2cd9d4 --- /dev/null +++ b/scenarios/invite_concurrent_max/prefs.json @@ -0,0 +1,5 @@ +{ + "testuser1003@spce.test": { + "concurrent_max": 1 + } +} diff --git a/scenarios/invite_concurrent_max/prefs.yml b/scenarios/invite_concurrent_max/prefs.yml deleted file mode 100644 index 4d4df356..00000000 --- a/scenarios/invite_concurrent_max/prefs.yml +++ /dev/null @@ -1,2 +0,0 @@ -testuser1003@spce.test: - concurrent_max: 1 diff --git a/scenarios/invite_concurrent_max/scenario.yml b/scenarios/invite_concurrent_max/scenario.yml index 68d5ec6f..2f1f0887 100644 --- a/scenarios/invite_concurrent_max/scenario.yml +++ b/scenarios/invite_concurrent_max/scenario.yml @@ -1,17 +1,33 @@ test_uuid: invite_concurrent_max +domains: + 'spce.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: spce.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 testuser1004: + customer: 'customer.test' password: testuser cc: 43 ac: 1 diff --git a/scenarios/invite_concurrent_max_out/prefs.yml b/scenarios/invite_concurrent_max_out/prefs.yml deleted file mode 100644 index 42ecaf6d..00000000 --- a/scenarios/invite_concurrent_max_out/prefs.yml +++ /dev/null @@ -1,3 +0,0 @@ -testuser1002@spce.test: - concurrent_max: 2 - concurrent_max_out: 1 diff --git a/scenarios/invite_concurrent_max_out_per_account/prefs.yml b/scenarios/invite_concurrent_max_out_per_account/prefs.yml deleted file mode 100644 index 05e3dea8..00000000 --- a/scenarios/invite_concurrent_max_out_per_account/prefs.yml +++ /dev/null @@ -1,2 +0,0 @@ -testuser1002@spce.test: - concurrent_max_out_per_account: 1 diff --git a/scenarios/invite_concurrent_max_per_account/prefs.json b/scenarios/invite_concurrent_max_per_account/prefs.json new file mode 100644 index 00000000..69ff54bf --- /dev/null +++ b/scenarios/invite_concurrent_max_per_account/prefs.json @@ -0,0 +1,8 @@ +{ + "testuser1003@spce.test": { + "concurrent_max_per_account": 2 + }, + "testuser1004@spce.test": { + "concurrent_max_per_account": 2 + } +} diff --git a/scenarios/invite_concurrent_max_per_account/prefs.yml b/scenarios/invite_concurrent_max_per_account/prefs.yml deleted file mode 100644 index fdb53d09..00000000 --- a/scenarios/invite_concurrent_max_per_account/prefs.yml +++ /dev/null @@ -1,4 +0,0 @@ -testuser1003@spce.test: - concurrent_max_per_account: 2 -testuser1004@spce.test: - concurrent_max_per_account: 2 diff --git a/scenarios/invite_concurrent_max_per_account/scenario.yml b/scenarios/invite_concurrent_max_per_account/scenario.yml index e7ebc0ed..1a2ee53b 100644 --- a/scenarios/invite_concurrent_max_per_account/scenario.yml +++ b/scenarios/invite_concurrent_max_per_account/scenario.yml @@ -1,17 +1,33 @@ test_uuid: invite_concurrent_max_per_account +domains: + 'spce.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: spce.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 testuser1004: + customer: 'customer.test' password: testuser cc: 43 ac: 1 diff --git a/scenarios/invite_foreign_dom/0003_test.yml.tt2 b/scenarios/invite_foreign_dom/0003_test.yml.tt2 index 0b98a8a0..6397ec03 100644 --- a/scenarios/invite_foreign_dom/0003_test.yml.tt2 +++ b/scenarios/invite_foreign_dom/0003_test.yml.tt2 @@ -109,6 +109,5 @@ sip_out: 'P-Caller-UUID: \w+', 'P-Callee-UUID: \w+', 'P-Called-Party-ID: