github.com/crowdsecurity/crowdsec@v1.6.1/test/bats/97_ipv4_single.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 "API - first decisions list: must be empty" { 40 rune -0 api '/v1/decisions' 41 assert_output 'null' 42 } 43 44 @test "adding decision for 1.2.3.4" { 45 rune -0 cscli decisions add -i '1.2.3.4' 46 assert_stderr --partial 'Decision successfully added' 47 } 48 49 @test "CLI - all decisions" { 50 rune -0 cscli decisions list -o json 51 rune -0 jq -r '.[0].decisions[0].value' <(output) 52 assert_output '1.2.3.4' 53 } 54 55 @test "API - all decisions" { 56 rune -0 api '/v1/decisions' 57 rune -0 jq -c '[ . | length, .[0].value ]' <(output) 58 assert_output '[1,"1.2.3.4"]' 59 } 60 61 # check ip match 62 63 @test "CLI - decision for 1.2.3.4" { 64 rune -0 cscli decisions list -i '1.2.3.4' -o json 65 rune -0 jq -r '.[0].decisions[0].value' <(output) 66 assert_output '1.2.3.4' 67 } 68 69 @test "API - decision for 1.2.3.4" { 70 rune -0 api '/v1/decisions?ip=1.2.3.4' 71 rune -0 jq -r '.[0].value' <(output) 72 assert_output '1.2.3.4' 73 } 74 75 @test "CLI - decision for 1.2.3.5" { 76 rune -0 cscli decisions list -i '1.2.3.5' -o json 77 assert_json '[]' 78 } 79 80 @test "API - decision for 1.2.3.5" { 81 rune -0 api '/v1/decisions?ip=1.2.3.5' 82 assert_output 'null' 83 } 84 85 ## check outer range match 86 87 @test "CLI - decision for 1.2.3.0/24" { 88 rune -0 cscli decisions list -r '1.2.3.0/24' -o json 89 assert_json '[]' 90 } 91 92 @test "API - decision for 1.2.3.0/24" { 93 rune -0 api '/v1/decisions?range=1.2.3.0/24' 94 assert_output 'null' 95 } 96 97 @test "CLI - decisions where IP in 1.2.3.0/24" { 98 rune -0 cscli decisions list -r '1.2.3.0/24' --contained -o json 99 rune -0 jq -r '.[0].decisions[0].value' <(output) 100 assert_output '1.2.3.4' 101 } 102 103 @test "API - decisions where IP in 1.2.3.0/24" { 104 rune -0 api '/v1/decisions?range=1.2.3.0/24&contains=false' 105 rune -0 jq -r '.[0].value' <(output) 106 assert_output '1.2.3.4' 107 }