bitbucket.org/Aishee/synsec@v0.0.0-20210414005726-236fc01a153d/scripts/func_tests/tests_post-install_99ip_mgmt.sh (about)

     1  #! /usr/bin/env bash
     2  # -*- coding: utf-8 -*-
     3  
     4  
     5  source tests_base.sh
     6  
     7  
     8  # Codes
     9  RED='\033[0;31m'
    10  GREEN='\033[0;32m'
    11  NC='\033[0m'
    12  OK_STR="${GREEN}OK${NC}"
    13  FAIL_STR="${RED}FAIL${NC}"
    14  
    15  
    16  SYNSEC_API_URL="http://localhost:8081"
    17  SYNSEC_VERSION=""
    18  API_KEY=""
    19  
    20  RELEASE_FOLDER_FULL=""
    21  FAILED="false"
    22  MUST_FAIL="false"
    23  
    24  ### Helpers
    25  function docurl
    26  {
    27      URI=$1
    28      curl -s -H "X-Api-Key: ${API_KEY}" "${SYNSEC_API_URL}${URI}"
    29  } 
    30  
    31  function bouncer_echo {
    32      if [[ ${FAILED} == "false" ]];
    33      then
    34          echo -e "[bouncer] $1: ${OK_STR}"
    35      else
    36          echo -e "[bouncer] $1: ${FAIL_STR}"
    37      fi
    38      FAILED="false"
    39  }
    40  
    41  function ccscli_echo {
    42      if [[ ${FAILED} == "false" ]];
    43      then
    44          echo -e "[ccscli]   $1: ${OK_STR}"
    45      else
    46          echo -e "[ccscli]   $1: ${FAIL_STR}"
    47      fi
    48      FAILED="false"
    49  }
    50  
    51  function test_ipv4_ip
    52  {
    53      echo ""
    54      echo "##########################################"
    55      echo "$FUNCNAME"
    56      echo "##########################################"
    57      echo ""
    58      
    59      ${CCSCLI} decisions list -o json | ${JQ} '. == null' > /dev/null || fail
    60      ccscli_echo "first decisions list"
    61      
    62      docurl /v1/decisions | ${JQ} '. == null' > /dev/null || fail
    63      bouncer_echo "first bouncer decisions request (must be empty)"
    64  
    65      #add ip decision
    66      echo "adding decision for 1.2.3.4"
    67      ${CCSCLI} decisions add -i 1.2.3.4  > /dev/null 2>&1 || fail
    68      
    69      ${CCSCLI} decisions list -o json | ${JQ} '.[].decisions[0].value == "1.2.3.4"' > /dev/null || fail
    70      ccscli_echo "getting all decision"
    71      
    72      docurl /v1/decisions | ${JQ} '.[0].value == "1.2.3.4"' > /dev/null || fail
    73      bouncer_echo "getting all decision"
    74  
    75      #check ip match
    76      ${CCSCLI} decisions list -i 1.2.3.4 -o json | ${JQ} '.[].decisions[0].value == "1.2.3.4"'  > /dev/null || fail
    77      ccscli_echo "getting decision for 1.2.3.4"
    78      
    79      docurl /v1/decisions?ip=1.2.3.4 | ${JQ} '.[0].value == "1.2.3.4"' > /dev/null || fail
    80      bouncer_echo "getting decision for 1.2.3.4"
    81  
    82      ${CCSCLI} decisions list -i 1.2.3.5 -o json | ${JQ} '. == null'  > /dev/null || fail
    83      ccscli_echo "getting decision for 1.2.3.5"
    84  
    85      docurl /v1/decisions?ip=1.2.3.5 | ${JQ} '. == null' > /dev/null || fail
    86      bouncer_echo "getting decision for 1.2.3.5"
    87  
    88      #check outer range match
    89      ${CCSCLI} decisions list -r 1.2.3.0/24 -o json | ${JQ} '. == null'  > /dev/null || fail
    90      ccscli_echo "getting decision for 1.2.3.0/24"
    91  
    92      docurl "/v1/decisions?range=1.2.3.0/24" | ${JQ} '. == null' > /dev/null || fail
    93      bouncer_echo "getting decision for 1.2.3.0/24"
    94  
    95      ${CCSCLI} decisions list -r 1.2.3.0/24 --contained -o json |${JQ} '.[].decisions[0].value == "1.2.3.4"'  > /dev/null || fail
    96      ccscli_echo "getting decisions where IP in 1.2.3.0/24"
    97  
    98      docurl "/v1/decisions?range=1.2.3.0/24&contains=false" | ${JQ} '.[0].value == "1.2.3.4"' > /dev/null || fail
    99      bouncer_echo "getting decisions where IP in 1.2.3.0/24"
   100  
   101  }
   102  
   103  function test_ipv4_range
   104  {
   105      echo ""
   106      echo "##########################################"
   107      echo "$FUNCNAME"
   108      echo "##########################################"
   109      echo ""
   110  
   111  
   112      ccscli_echo "adding decision for range 4.4.4.0/24"
   113      ${CCSCLI} decisions add -r 4.4.4.0/24 > /dev/null 2>&1 || fail
   114  
   115      ${CCSCLI} decisions list -o json | ${JQ} '.[0].decisions[0].value == "4.4.4.0/24", .[1].decisions[0].value == "1.2.3.4"'> /dev/null || fail
   116      ccscli_echo "getting all decision"
   117      
   118      docurl ${APIK} "/v1/decisions" | ${JQ} '.[0].value == "1.2.3.4", .[1].value == "4.4.4.0/24"'> /dev/null || fail
   119      bouncer_echo "getting all decision"
   120  
   121      #check ip within/outside of range
   122      ${CCSCLI} decisions list -i 4.4.4.3 -o json | ${JQ} '.[].decisions[0].value == "4.4.4.0/24"' > /dev/null || fail
   123      ccscli_echo "getting decisions for ip 4.4.4."
   124  
   125      docurl ${APIK} "/v1/decisions?ip=4.4.4.3" | ${JQ} '.[0].value == "4.4.4.0/24"' > /dev/null || fail
   126      bouncer_echo "getting decisions for ip 4.4.4."
   127  
   128      ${CCSCLI} decisions list -i 4.4.4.4 -o json --contained | ${JQ} '. == null'> /dev/null || fail
   129      ccscli_echo "getting decisions for ip contained in 4.4.4."
   130  
   131      docurl ${APIK} "/v1/decisions?ip=4.4.4.4&contains=false" | ${JQ} '. == null' > /dev/null || fail
   132      bouncer_echo "getting decisions for ip contained in 4.4.4."
   133  
   134      ${CCSCLI} decisions list -i 5.4.4.3 -o json | ${JQ} '. == null' > /dev/null || fail
   135      ccscli_echo "getting decisions for ip 5.4.4."
   136  
   137      docurl ${APIK} "/v1/decisions?ip=5.4.4.3" | ${JQ} '. == null' > /dev/null || fail
   138      bouncer_echo "getting decisions for ip 5.4.4."
   139  
   140      ${CCSCLI} decisions list -r 4.4.0.0/16 -o json | ${JQ} '. == null' > /dev/null || fail
   141      ccscli_echo "getting decisions for range 4.4.0.0/1"
   142  
   143      docurl ${APIK} "/v1/decisions?range=4.4.0.0/16" | ${JQ} '. == null' > /dev/null || fail
   144      bouncer_echo "getting decisions for range 4.4.0.0/1"
   145  
   146      ${CCSCLI} decisions list -r 4.4.0.0/16 -o json --contained | ${JQ} '.[].decisions[0].value == "4.4.4.0/24"' > /dev/null || fail
   147      ccscli_echo "getting decisions for ip/range in 4.4.0.0/1"
   148  
   149      docurl ${APIK} "/v1/decisions?range=4.4.0.0/16&contains=false" | ${JQ} '.[0].value == "4.4.4.0/24"' > /dev/null || fail
   150      bouncer_echo "getting decisions for ip/range in 4.4.0.0/1"
   151  
   152      #check subrange
   153      ${CCSCLI} decisions list -r 4.4.4.2/28 -o json | ${JQ} '.[].decisions[0].value == "4.4.4.0/24"' > /dev/null || fail
   154      ccscli_echo "getting decisions for range 4.4.4.2/2"
   155  
   156      docurl ${APIK} "/v1/decisions?range=4.4.4.2/28" | ${JQ} '.[].value == "4.4.4.0/24"' > /dev/null || fail
   157      bouncer_echo "getting decisions for range 4.4.4.2/2"
   158  
   159      ${CCSCLI} decisions list -r 4.4.3.2/28 -o json | ${JQ} '. == null' > /dev/null || fail
   160      ccscli_echo "getting decisions for range 4.4.3.2/2"
   161  
   162      docurl ${APIK} "/v1/decisions?range=4.4.3.2/28" | ${JQ} '. == null' > /dev/null || fail
   163      bouncer_echo "getting decisions for range 4.4.3.2/2"
   164  
   165  }
   166  
   167  function test_ipv6_ip
   168  {
   169  
   170      echo ""
   171      echo "##########################################"
   172      echo "$FUNCNAME"
   173      echo "##########################################"
   174      echo ""
   175  
   176      ccscli_echo "adding decision for ip 1111:2222:3333:4444:5555:6666:7777:8888"
   177      ${CCSCLI} decisions add -i 1111:2222:3333:4444:5555:6666:7777:8888 > /dev/null 2>&1
   178  
   179      ${CCSCLI} decisions list -o json | ${JQ} '.[].decisions[0].value == "1111:2222:3333:4444:5555:6666:7777:8888"'  > /dev/null || fail
   180      ccscli_echo "getting all decision"
   181  
   182      docurl ${APIK} "/v1/decisions" | ${JQ} '.[].value == "1111:2222:3333:4444:5555:6666:7777:8888"' > /dev/null || fail
   183      bouncer_echo "getting all decision"
   184  
   185      ${CCSCLI} decisions list -i 1111:2222:3333:4444:5555:6666:7777:8888 -o json | ${JQ} '.[].decisions[0].value == "1111:2222:3333:4444:5555:6666:7777:8888"'  > /dev/null || fail
   186      ccscli_echo "getting decisions for ip 1111:2222:3333:4444:5555:6666:7777:8888"
   187      
   188      docurl ${APIK} "/v1/decisions?ip=1111:2222:3333:4444:5555:6666:7777:8888" | ${JQ} '.[].value == "1111:2222:3333:4444:5555:6666:7777:8888"' > /dev/null || fail
   189      bouncer_echo "getting decisions for ip 1111:2222:3333:4444:5555:6666:7777:888"
   190  
   191      ${CCSCLI} decisions list -i 1211:2222:3333:4444:5555:6666:7777:8888 -o json | ${JQ} '. == null' > /dev/null || fail
   192      ccscli_echo "getting decisions for ip 1211:2222:3333:4444:5555:6666:7777:8888"
   193  
   194      docurl ${APIK} "/v1/decisions?ip=1211:2222:3333:4444:5555:6666:7777:8888" | ${JQ} '. == null' > /dev/null || fail
   195      bouncer_echo "getting decisions for ip 1211:2222:3333:4444:5555:6666:7777:888"
   196  
   197      ${CCSCLI} decisions list -i 1111:2222:3333:4444:5555:6666:7777:8887 -o json | ${JQ} '. == null' > /dev/null || fail
   198      ccscli_echo "getting decisions for ip 1111:2222:3333:4444:5555:6666:7777:8887"
   199  
   200      docurl ${APIK} "/v1/decisions?ip=1111:2222:3333:4444:5555:6666:7777:8887" | ${JQ} '. == null' > /dev/null || fail
   201      bouncer_echo "getting decisions for ip 1111:2222:3333:4444:5555:6666:7777:888"
   202  
   203      ${CCSCLI} decisions list -r 1111:2222:3333:4444:5555:6666:7777:8888/48 -o json | ${JQ} '. == null' > /dev/null || fail
   204      ccscli_echo "getting decisions for range 1111:2222:3333:4444:5555:6666:7777:8888/48"
   205  
   206      docurl ${APIK} "/v1/decisions?range=1111:2222:3333:4444:5555:6666:7777:8888/48" | ${JQ} '. == null' > /dev/null || fail
   207      bouncer_echo "getting decisions for range 1111:2222:3333:4444:5555:6666:7777:8888/48"
   208  
   209      ${CCSCLI} decisions list -r 1111:2222:3333:4444:5555:6666:7777:8888/48 --contained -o json | ${JQ} '.[].decisions[0].value == "1111:2222:3333:4444:5555:6666:7777:8888"' > /dev/null || fail
   210      ccscli_echo "getting decisions for ip/range in range 1111:2222:3333:4444:5555:6666:7777:8888/48"
   211  
   212      docurl ${APIK} "/v1/decisions?range=1111:2222:3333:4444:5555:6666:7777:8888/48&&contains=false" | ${JQ} '.[].value == "1111:2222:3333:4444:5555:6666:7777:8888"' > /dev/null || fail
   213      bouncer_echo "getting decisions for ip/range in 1111:2222:3333:4444:5555:6666:7777:8888/48"
   214  
   215      ${CCSCLI} decisions list -r 1111:2222:3333:4444:5555:6666:7777:8888/64 -o json | ${JQ} '. == null' > /dev/null || fail
   216      ccscli_echo "getting decisions for range 1111:2222:3333:4444:5555:6666:7777:8888/64"
   217  
   218      docurl ${APIK} "/v1/decisions?range=1111:2222:3333:4444:5555:6666:7777:8888/64" | ${JQ} '. == null' > /dev/null || fail
   219      bouncer_echo "getting decisions for range 1111:2222:3333:4444:5555:6666:7777:8888/64"
   220  
   221      ${CCSCLI} decisions list -r 1111:2222:3333:4444:5555:6666:7777:8888/64 -o json --contained | ${JQ} '.[].decisions[0].value == "1111:2222:3333:4444:5555:6666:7777:8888"'  > /dev/null || fail
   222      ccscli_echo "getting decisions for ip/range in 1111:2222:3333:4444:5555:6666:7777:8888/64"
   223  
   224      docurl ${APIK} "/v1/decisions?range=1111:2222:3333:4444:5555:6666:7777:8888/64&&contains=false" | ${JQ} '.[].value == "1111:2222:3333:4444:5555:6666:7777:8888"' > /dev/null || fail
   225      bouncer_echo "getting decisions for ip/range in 1111:2222:3333:4444:5555:6666:7777:8888/64"
   226  
   227      ccscli_echo "adding decision for ip 1111:2222:3333:4444:5555:6666:7777:8889"
   228      ${CCSCLI} decisions add -i 1111:2222:3333:4444:5555:6666:7777:8889 > /dev/null 2>&1
   229  
   230      ccscli_echo "deleting decision for ip 1111:2222:3333:4444:5555:6666:7777:8889"
   231      ${CCSCLI} decisions delete -i 1111:2222:3333:4444:5555:6666:7777:8889
   232  
   233      ${CCSCLI} decisions list -i 1111:2222:3333:4444:5555:6666:7777:8889 -o json | ${JQ} '. == null' > /dev/null || fail
   234      ccscli_echo "getting decisions for ip 1111:2222:3333:4444:5555:6666:7777:8889 after delete"
   235  
   236      ccscli_echo "deleting decision for range 1111:2222:3333:4444:5555:6666:7777:8888/64"
   237      ${CCSCLI} decisions delete -r 1111:2222:3333:4444:5555:6666:7777:8888/64 --contained
   238  
   239      ${CCSCLI} decisions list -r 1111:2222:3333:4444:5555:6666:7777:8888/64 -o json --contained | ${JQ} '. == null'  > /dev/null || fail
   240      ccscli_echo "getting decisions for ip/range in 1111:2222:3333:4444:5555:6666:7777:8888/64 after delete"
   241  }
   242  
   243  function test_ipv6_range
   244  {
   245      echo ""
   246      echo "##########################################"
   247      echo "$FUNCNAME"
   248      echo "##########################################"
   249      echo ""
   250  
   251      ccscli_echo "adding decision for range aaaa:2222:3333:4444::/64"
   252      ${CCSCLI} decisions add -r aaaa:2222:3333:4444::/64 > /dev/null 2>&1 || fail
   253       
   254      ${CCSCLI} decisions list -o json | ${JQ} '.[0].decisions[0].value == "aaaa:2222:3333:4444::/64"' > /dev/null || fail
   255      ccscli_echo "getting all decision"
   256  
   257      docurl ${APIK} "/v1/decisions" | ${JQ} '.[0].value == "aaaa:2222:3333:4444::/64"' > /dev/null || fail
   258      bouncer_echo "getting all decision"
   259  
   260      #check ip within/out of range
   261      ${CCSCLI} decisions list -i aaaa:2222:3333:4444:5555:6666:7777:8888 -o json | ${JQ} '.[].decisions[0].value == "aaaa:2222:3333:4444::/64"'  > /dev/null || fail
   262      ccscli_echo "getting decisions for ip aaaa:2222:3333:4444:5555:6666:7777:8888"
   263  
   264      docurl ${APIK} "/v1/decisions?ip=aaaa:2222:3333:4444:5555:6666:7777:8888" | ${JQ} '.[].value == "aaaa:2222:3333:4444::/64"' > /dev/null || fail
   265      bouncer_echo "getting decisions for ip aaaa:2222:3333:4444:5555:6666:7777:8888"
   266  
   267      ${CCSCLI} decisions list -i aaaa:2222:3333:4445:5555:6666:7777:8888 -o json | ${JQ} '. == null' > /dev/null || fail
   268      ccscli_echo "getting decisions for ip aaaa:2222:3333:4445:5555:6666:7777:8888"
   269  
   270      docurl ${APIK} "/v1/decisions?ip=aaaa:2222:3333:4445:5555:6666:7777:8888" | ${JQ} '. == null' > /dev/null || fail
   271      bouncer_echo "getting decisions for ip aaaa:2222:3333:4445:5555:6666:7777:8888"
   272  
   273      ${CCSCLI} decisions list -i aaa1:2222:3333:4444:5555:6666:7777:8887 -o json | ${JQ} '. == null' > /dev/null || fail
   274      ccscli_echo "getting decisions for ip aaa1:2222:3333:4444:5555:6666:7777:8887"
   275  
   276      docurl ${APIK} "/v1/decisions?ip=aaa1:2222:3333:4444:5555:6666:7777:8887" | ${JQ} '. == null' > /dev/null || fail
   277      bouncer_echo "getting decisions for ip aaa1:2222:3333:4444:5555:6666:7777:8887"
   278  
   279      #check subrange within/out of range
   280      ${CCSCLI} decisions list -r aaaa:2222:3333:4444:5555::/80 -o json | ${JQ} '.[].decisions[0].value == "aaaa:2222:3333:4444::/64"'  > /dev/null || fail
   281      ccscli_echo "getting decisions for range aaaa:2222:3333:4444:5555::/80"
   282      
   283      docurl ${APIK} "/v1/decisions?range=aaaa:2222:3333:4444:5555::/80" | ${JQ} '.[].value == "aaaa:2222:3333:4444::/64"' > /dev/null || fail
   284      bouncer_echo "getting decisions for range aaaa:2222:3333:4444:5555::/80"
   285  
   286      ${CCSCLI} decisions list -r aaaa:2222:3333:4441:5555::/80 -o json | ${JQ} '. == null'  > /dev/null || fail
   287      ccscli_echo "getting decisions for range aaaa:2222:3333:4441:5555::/80"
   288      
   289      docurl ${APIK} "/v1/decisions?range=aaaa:2222:3333:4441:5555::/80" | ${JQ} '. == null' > /dev/null || fail
   290      bouncer_echo "getting decisions for range aaaa:2222:3333:4441:5555::/80"
   291  
   292      ${CCSCLI} decisions list -r aaa1:2222:3333:4444:5555::/80 -o json | ${JQ} '. == null'  > /dev/null || fail
   293      ccscli_echo "getting decisions for range aaa1:2222:3333:4444:5555::/80"
   294  
   295      docurl ${APIK} "/v1/decisions?range=aaa1:2222:3333:4444:5555::/80" | ${JQ} '. == null' > /dev/null || fail
   296      bouncer_echo "getting decisions for range aaa1:2222:3333:4444:5555::/80"
   297  
   298      #check outer range
   299      ${CCSCLI} decisions list -r aaaa:2222:3333:4444:5555:6666:7777:8888/48 -o json | ${JQ} '. == null' > /dev/null || fail
   300      ccscli_echo "getting decisions for range aaaa:2222:3333:4444:5555:6666:7777:8888/48"
   301  
   302      docurl ${APIK} "/v1/decisions?range=aaaa:2222:3333:4444:5555:6666:7777:8888/48" | ${JQ} '. == null' > /dev/null || fail
   303      bouncer_echo "getting decisions for range aaaa:2222:3333:4444:5555:6666:7777:8888/48"
   304  
   305      ${CCSCLI} decisions list -r aaaa:2222:3333:4444:5555:6666:7777:8888/48 -o json --contained | ${JQ} '.[].decisions[0].value == "aaaa:2222:3333:4444::/64"' > /dev/null || fail
   306      ccscli_echo "getting decisions for ip/range in aaaa:2222:3333:4444:5555:6666:7777:8888/48"
   307  
   308      docurl ${APIK} "/v1/decisions?range=aaaa:2222:3333:4444:5555:6666:7777:8888/48&contains=false" | ${JQ} '.[].value == "aaaa:2222:3333:4444::/64"' > /dev/null || fail
   309      bouncer_echo "getting decisions for ip/range in aaaa:2222:3333:4444:5555:6666:7777:8888/48"
   310  
   311      ${CCSCLI} decisions list -r aaaa:2222:3333:4445:5555:6666:7777:8888/48 -o json | ${JQ} '. == null' > /dev/null || fail
   312      ccscli_echo "getting decisions for ip/range aaaa:2222:3333:4445:5555:6666:7777:8888/48"
   313  
   314      docurl ${APIK} "/v1/decisions?range=aaaa:2222:3333:4445:5555:6666:7777:8888/48" | ${JQ} '. == null' > /dev/null || fail
   315      bouncer_echo "getting decisions for ip/range in aaaa:2222:3333:4445:5555:6666:7777:8888/48"
   316  
   317      #bbbb:db8:: -> bbbb:db8:0000:0000:0000:7fff:ffff:ffff
   318      ${CCSCLI} decisions add -r bbbb:db8::/81 > /dev/null 2>&1
   319      ccscli_echo "adding decision for range bbbb:db8::/81" > /dev/null || fail
   320  
   321      ${CCSCLI} decisions list -o json -i bbbb:db8:0000:0000:0000:6fff:ffff:ffff | ${JQ} '.[].decisions[0].value == "bbbb:db8::/81"'  > /dev/null || fail
   322      ccscli_echo "getting decisions for ip bbbb:db8:0000:0000:0000:6fff:ffff:ffff"
   323      
   324      docurl ${APIK} "/v1/decisions?ip=bbbb:db8:0000:0000:0000:6fff:ffff:ffff" | ${JQ} '.[].value == "bbbb:db8::/81"' > /dev/null || fail
   325      bouncer_echo "getting decisions for ip in bbbb:db8:0000:0000:0000:6fff:ffff:ffff"
   326  
   327      ${CCSCLI} decisions list -o json -i bbbb:db8:0000:0000:0000:8fff:ffff:ffff | ${JQ} '. == null' > /dev/null || fail
   328      ccscli_echo "getting decisions for ip bbbb:db8:0000:0000:0000:8fff:ffff:ffff"
   329  
   330      docurl ${APIK} "/v1/decisions?ip=bbbb:db8:0000:0000:0000:8fff:ffff:ffff" | ${JQ} '. == null' > /dev/null || fail
   331      bouncer_echo "getting decisions for ip in bbbb:db8:0000:0000:0000:8fff:ffff:ffff"
   332  
   333      ccscli_echo "deleting decision for range aaaa:2222:3333:4444:5555:6666:7777:8888/48"
   334      ${CCSCLI} decisions delete -r aaaa:2222:3333:4444:5555:6666:7777:8888/48 --contained > /dev/null 2>&1 || fail
   335      
   336      ${CCSCLI} decisions list -o json -r aaaa:2222:3333:4444::/64 | ${JQ} '. == null' > /dev/null || fail
   337      ccscli_echo "getting decisions for range aaaa:2222:3333:4444::/64 after delete"
   338  
   339      ccscli_echo "adding decision for ip bbbb:db8:0000:0000:0000:8fff:ffff:ffff"
   340      ${CCSCLI} decisions add -i bbbb:db8:0000:0000:0000:8fff:ffff:ffff > /dev/null 2>&1 || fail
   341      ccscli_echo "adding decision for ip bbbb:db8:0000:0000:0000:6fff:ffff:ffff"
   342      ${CCSCLI} decisions add -i bbbb:db8:0000:0000:0000:6fff:ffff:ffff > /dev/null 2>&1 || fail
   343  
   344      ccscli_echo "deleting decision for range bbbb:db8::/81"
   345      ${CCSCLI} decisions delete -r bbbb:db8::/81 --contained > /dev/null 2>&1 || fail
   346      
   347      ${CCSCLI} decisions list -o json | ${JQ} '.[].decisions[0].value == "bbbb:db8:0000:0000:0000:8fff:ffff:ffff"' > /dev/null || fail
   348      ccscli_echo "getting all decisions"
   349  
   350  }
   351  
   352  
   353  function start_test
   354  {
   355  
   356      ## ipv4 testing
   357      ${CCSCLI} decisions delete --all
   358  
   359      test_ipv4_ip
   360      test_ipv4_range
   361  
   362      ## ipv6 testing
   363      ${CCSCLI} decisions delete --all
   364      test_ipv6_ip
   365      test_ipv6_range
   366  }
   367  
   368  
   369  usage() {
   370        echo "Usage:"
   371        echo ""
   372        echo "    ./ip_mgmt_tests.sh -h                                   Display this help message."
   373        echo "    ./ip_mgmt_tests.sh                                      Run all the testsuite. Go must be available to make the release"
   374        echo "    ./ip_mgmt_tests.sh --release <path_to_release_folder>   If go is not installed, please provide a path to the synsec-vX.Y.Z release folder"
   375        echo ""
   376        exit 0  
   377  }
   378  
   379  while [[ $# -gt 0 ]]
   380  do
   381      key="${1}"
   382      case ${key} in
   383      --release|-r)
   384          RELEASE_FOLDER="${2}"
   385          shift #past argument
   386          shift
   387          ;;   
   388      -h|--help)
   389          usage
   390          exit 0
   391          ;;
   392      *)    # unknown option
   393          echo "Unknown argument ${key}."
   394          usage
   395          exit 1
   396          ;;
   397      esac
   398  done
   399  
   400  
   401  start_test
   402  
   403  if [[ "${MUST_FAIL}" == "true" ]];
   404  then
   405      echo ""
   406      echo "One or more tests have failed !"
   407      exit 1
   408  fi