github.com/crowdsecurity/crowdsec@v1.6.1/test/bats/98_ipv4_range.bats (about)

     1  #!/usr/bin/env bats
     2  # vim: ft=bats:list:ts=8:sts=4:sw=4:et:ai:si:
     3  
     4  set -u
     5  
     6  setup_file() {
     7      load "../lib/setup_file.sh"
     8      ./instance-data load
     9      ./instance-crowdsec start
    10      API_KEY=$(cscli bouncers add testbouncer -o raw)
    11      export API_KEY
    12      CROWDSEC_API_URL="http://localhost:8080"
    13      export CROWDSEC_API_URL
    14  }
    15  
    16  teardown_file() {
    17      load "../lib/teardown_file.sh"
    18  }
    19  
    20  setup() {
    21      load "../lib/setup.sh"
    22      if is_db_mysql; then sleep 0.3; fi
    23  }
    24  
    25  api() {
    26      URI="$1"
    27      curl -s -H "X-Api-Key: ${API_KEY}" "${CROWDSEC_API_URL}${URI}"
    28  }
    29  
    30  #----------
    31  
    32  @test "cli - first decisions list: must be empty" {
    33      # delete community pull
    34      rune -0 cscli decisions delete --all
    35      rune -0 cscli decisions list -o json
    36      assert_json '[]'
    37  }
    38  
    39  @test "adding decision for range 4.4.4.0/24" {
    40      rune -0 cscli decisions add -r '4.4.4.0/24'
    41      assert_stderr --partial 'Decision successfully added'
    42  }
    43  
    44  @test "CLI - all decisions" {
    45      rune -0 cscli decisions list -o json
    46      rune -0 jq -r '.[0].decisions[0].value' <(output)
    47      assert_output '4.4.4.0/24'
    48  }
    49  
    50  @test "API - all decisions" {
    51      rune -0 api '/v1/decisions'
    52      rune -0 jq -r '.[0].value' <(output)
    53      assert_output '4.4.4.0/24'
    54  }
    55  
    56  # check ip within/outside of range
    57  
    58  @test "CLI - decisions for ip 4.4.4." {
    59      rune -0 cscli decisions list -i '4.4.4.3' -o json
    60      rune -0 jq -r '.[0].decisions[0].value' <(output)
    61      assert_output '4.4.4.0/24'
    62  }
    63  
    64  @test "API - decisions for ip 4.4.4." {
    65      rune -0 api '/v1/decisions?ip=4.4.4.3'
    66      rune -0 jq -r '.[0].value' <(output)
    67      assert_output '4.4.4.0/24'
    68  }
    69  
    70  @test "CLI - decisions for ip contained in 4.4.4." {
    71      rune -0 cscli decisions list -i '4.4.4.4' -o json --contained
    72      assert_json '[]'
    73  }
    74  
    75  @test "API - decisions for ip contained in 4.4.4." {
    76      rune -0 api '/v1/decisions?ip=4.4.4.4&contains=false'
    77      assert_output 'null'
    78  }
    79  
    80  @test "CLI - decisions for ip 5.4.4." {
    81      rune -0 cscli decisions list -i '5.4.4.3' -o json
    82      assert_json '[]'
    83  }
    84  
    85  @test "API - decisions for ip 5.4.4." {
    86      rune -0 api '/v1/decisions?ip=5.4.4.3'
    87      assert_output 'null'
    88  }
    89  
    90  @test "CLI - decisions for range 4.4.0.0/1" {
    91      rune -0 cscli decisions list -r '4.4.0.0/16' -o json
    92      assert_json '[]'
    93  }
    94  
    95  @test "API - decisions for range 4.4.0.0/1" {
    96      rune -0 api '/v1/decisions?range=4.4.0.0/16'
    97      assert_output 'null'
    98  }
    99  
   100  @test "CLI - decisions for ip/range in 4.4.0.0/1" {
   101      rune -0 cscli decisions list -r '4.4.0.0/16' -o json --contained
   102      rune -0 jq -r '.[0].decisions[0].value' <(output)
   103      assert_output '4.4.4.0/24'
   104  }
   105  
   106  @test "API - decisions for ip/range in 4.4.0.0/1" {
   107      rune -0 api '/v1/decisions?range=4.4.0.0/16&contains=false'
   108      rune -0 jq -r '.[0].value' <(output)
   109      assert_output '4.4.4.0/24'
   110  }
   111  
   112  # check subrange
   113  
   114  @test "CLI - decisions for range 4.4.4.2/2" {
   115      rune -0 cscli decisions list -r '4.4.4.2/28' -o json
   116      rune -0 jq -r '.[].decisions[0].value' <(output)
   117      assert_output '4.4.4.0/24'
   118  }
   119  
   120  @test "API - decisions for range 4.4.4.2/2" {
   121      rune -0 api '/v1/decisions?range=4.4.4.2/28'
   122      rune -0 jq -r '.[].value' <(output)
   123      assert_output '4.4.4.0/24'
   124  }
   125  
   126  @test "CLI - decisions for range 4.4.3.2/2" {
   127      rune -0 cscli decisions list -r '4.4.3.2/28' -o json
   128      assert_json '[]'
   129  }
   130  
   131  @test "API - decisions for range 4.4.3.2/2" {
   132      rune -0 api '/v1/decisions?range=4.4.3.2/28'
   133      assert_output 'null'
   134  }