github.com/crowdsecurity/crowdsec@v1.6.1/test/bats/99_lapi-stream-mode.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 } 23 24 #---------- 25 26 api() { 27 URI="$1" 28 curl -s -H "X-Api-Key: ${API_KEY}" "${CROWDSEC_API_URL}${URI}" 29 } 30 31 @test "adding decisions for multiple ips" { 32 rune -0 cscli decisions add -i '1111:2222:3333:4444:5555:6666:7777:8888' 33 assert_stderr --partial 'Decision successfully added' 34 rune -0 cscli decisions add -i '1.2.3.4' 35 assert_stderr --partial 'Decision successfully added' 36 rune -0 cscli decisions add -r '1.2.4.0/24' 37 assert_stderr --partial 'Decision successfully added' 38 } 39 40 @test "stream start" { 41 rune -0 api "/v1/decisions/stream?startup=true" 42 if is_db_mysql; then sleep 3; fi 43 rune -0 jq -r '.new' <(output) 44 assert_output --partial '1111:2222:3333:4444:5555:6666:7777:8888' 45 assert_output --partial '1.2.3.4' 46 assert_output --partial '1.2.4.0/24' 47 } 48 49 @test "stream cont (add)" { 50 rune -0 cscli decisions add -i '1.2.3.5' 51 if is_db_mysql; then sleep 3; fi 52 rune -0 api "/v1/decisions/stream" 53 rune -0 jq -r '.new' <(output) 54 assert_output --partial '1.2.3.5' 55 } 56 57 @test "stream cont (del)" { 58 rune -0 cscli decisions delete -i '1.2.3.4' 59 if is_db_mysql; then sleep 3; fi 60 rune -0 api "/v1/decisions/stream" 61 rune -0 jq -r '.deleted' <(output) 62 assert_output --partial '1.2.3.4' 63 } 64 65 @test "stream restart" { 66 rune -0 api "/v1/decisions/stream?startup=true" 67 api_out=${output} 68 rune -0 jq -r '.deleted' <(output) 69 assert_output --partial '1.2.3.4' 70 output=${api_out} 71 rune -0 jq -r '.new' <(output) 72 assert_output --partial '1111:2222:3333:4444:5555:6666:7777:8888' 73 assert_output --partial '1.2.3.5' 74 assert_output --partial '1.2.4.0/24' 75 }