github.com/crowdsecurity/crowdsec@v1.6.1/test/bats/97_ipv6_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.5; 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 ip 1111:2222:3333:4444:5555:6666:7777:8888" { 40 rune -0 cscli decisions add -i '1111:2222:3333:4444:5555:6666:7777:8888' 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 '.[].decisions[0].value' <(output) 47 assert_output '1111:2222:3333:4444:5555:6666:7777:8888' 48 } 49 50 @test "API - all decisions" { 51 rune -0 api "/v1/decisions" 52 rune -0 jq -r '.[].value' <(output) 53 assert_output '1111:2222:3333:4444:5555:6666:7777:8888' 54 } 55 56 @test "CLI - decisions for ip 1111:2222:3333:4444:5555:6666:7777:8888" { 57 rune -0 cscli decisions list -i '1111:2222:3333:4444:5555:6666:7777:8888' -o json 58 rune -0 jq -r '.[].decisions[0].value' <(output) 59 assert_output '1111:2222:3333:4444:5555:6666:7777:8888' 60 } 61 62 @test "API - decisions for ip 1111:2222:3333:4444:5555:6666:7777:888" { 63 rune -0 api '/v1/decisions?ip=1111:2222:3333:4444:5555:6666:7777:8888' 64 rune -0 jq -r '.[].value' <(output) 65 assert_output '1111:2222:3333:4444:5555:6666:7777:8888' 66 } 67 68 @test "CLI - decisions for ip 1211:2222:3333:4444:5555:6666:7777:8888" { 69 rune -0 cscli decisions list -i '1211:2222:3333:4444:5555:6666:7777:8888' -o json 70 assert_json '[]' 71 } 72 73 @test "API - decisions for ip 1211:2222:3333:4444:5555:6666:7777:888" { 74 rune -0 api '/v1/decisions?ip=1211:2222:3333:4444:5555:6666:7777:8888' 75 assert_output 'null' 76 } 77 78 @test "CLI - decisions for ip 1111:2222:3333:4444:5555:6666:7777:8887" { 79 rune -0 cscli decisions list -i '1111:2222:3333:4444:5555:6666:7777:8887' -o json 80 assert_json '[]' 81 } 82 83 @test "API - decisions for ip 1111:2222:3333:4444:5555:6666:7777:8887" { 84 rune -0 api '/v1/decisions?ip=1111:2222:3333:4444:5555:6666:7777:8887' 85 assert_output 'null' 86 } 87 88 @test "CLI - decisions for range 1111:2222:3333:4444:5555:6666:7777:8888/48" { 89 rune -0 cscli decisions list -r '1111:2222:3333:4444:5555:6666:7777:8888/48' -o json 90 assert_json '[]' 91 } 92 93 @test "API - decisions for range 1111:2222:3333:4444:5555:6666:7777:8888/48" { 94 rune -0 api '/v1/decisions?range=1111:2222:3333:4444:5555:6666:7777:8888/48' 95 assert_output 'null' 96 } 97 98 @test "CLI - decisions for ip/range in 1111:2222:3333:4444:5555:6666:7777:8888/48" { 99 rune -0 cscli decisions list -r '1111:2222:3333:4444:5555:6666:7777:8888/48' --contained -o json 100 rune -0 jq -r '.[].decisions[0].value' <(output) 101 assert_output '1111:2222:3333:4444:5555:6666:7777:8888' 102 } 103 104 @test "API - decisions for ip/range in 1111:2222:3333:4444:5555:6666:7777:8888/48" { 105 rune -0 api '/v1/decisions?range=1111:2222:3333:4444:5555:6666:7777:8888/48&&contains=false' 106 rune -0 jq -r '.[].value' <(output) 107 assert_output '1111:2222:3333:4444:5555:6666:7777:8888' 108 } 109 110 @test "CLI - decisions for range 1111:2222:3333:4444:5555:6666:7777:8888/64" { 111 rune -0 cscli decisions list -r '1111:2222:3333:4444:5555:6666:7777:8888/64' -o json 112 assert_json '[]' 113 } 114 115 @test "API - decisions for range 1111:2222:3333:4444:5555:6666:7777:8888/64" { 116 rune -0 api '/v1/decisions?range=1111:2222:3333:4444:5555:6666:7777:8888/64' 117 assert_output 'null' 118 } 119 120 @test "CLI - decisions for ip/range in 1111:2222:3333:4444:5555:6666:7777:8888/64" { 121 rune -0 cscli decisions list -r '1111:2222:3333:4444:5555:6666:7777:8888/64' -o json --contained 122 rune -0 jq -r '.[].decisions[0].value' <(output) 123 assert_output '1111:2222:3333:4444:5555:6666:7777:8888' 124 } 125 126 @test "API - decisions for ip/range in 1111:2222:3333:4444:5555:6666:7777:8888/64" { 127 rune -0 api '/v1/decisions?range=1111:2222:3333:4444:5555:6666:7777:8888/64&&contains=false' 128 rune -0 jq -r '.[].value' <(output) 129 assert_output '1111:2222:3333:4444:5555:6666:7777:8888' 130 } 131 132 @test "adding decision for ip 1111:2222:3333:4444:5555:6666:7777:8889" { 133 rune -0 cscli decisions add -i '1111:2222:3333:4444:5555:6666:7777:8889' 134 assert_stderr --partial 'Decision successfully added' 135 } 136 137 @test "deleting decision for ip 1111:2222:3333:4444:5555:6666:7777:8889" { 138 rune -0 cscli decisions delete -i '1111:2222:3333:4444:5555:6666:7777:8889' 139 assert_stderr --partial '1 decision(s) deleted' 140 } 141 142 @test "CLI - decisions for ip 1111:2222:3333:4444:5555:6666:7777:8889 after delete" { 143 rune -0 cscli decisions list -i '1111:2222:3333:4444:5555:6666:7777:8889' -o json 144 assert_json '[]' 145 } 146 147 @test "deleting decision for range 1111:2222:3333:4444:5555:6666:7777:8888/64" { 148 rune -0 cscli decisions delete -r '1111:2222:3333:4444:5555:6666:7777:8888/64' --contained 149 assert_stderr --partial '1 decision(s) deleted' 150 } 151 152 @test "CLI - decisions for ip/range in 1111:2222:3333:4444:5555:6666:7777:8888/64 after delete" { 153 rune -0 cscli decisions list -r '1111:2222:3333:4444:5555:6666:7777:8888/64' -o json --contained 154 assert_json '[]' 155 }