#!/usr/bin/env bats # vim: ft=bats:list:ts=8:sts=4:sw=4:et:ai:si: set -u setup_file() { load "../lib/setup_file.sh" is_package_testing && return ./instance-data load tempfile=$(TMPDIR="${BATS_FILE_TMPDIR}" mktemp) export tempfile DUMMY_YAML="$(config_get '.config_paths.notification_dir')/dummy.yaml" # we test the template that is suggested in the email notification # the $alert is not a shell variable # shellcheck disable=SC2016 config_set "${DUMMY_YAML}" ' .group_wait="5s" | .group_threshold=2 | .output_file=strenv(tempfile) | .format=" {{range . -}} {{$alert := . -}} {{range .Decisions -}}

{{.Value}} will get {{.Type}} for next {{.Duration}} for triggering {{.Scenario}} on machine {{$alert.MachineID}}.

CrowdSec CTI

{{end -}} {{end -}} " ' config_set "$(config_get '.api.server.profiles_path')" ' .notifications=["dummy_default"] | .filters=["Alert.GetScope() == \"Ip\""] ' config_set ' .plugin_config.user="" | .plugin_config.group="" ' ./instance-crowdsec start } teardown_file() { load "../lib/teardown_file.sh" } setup() { is_package_testing && skip load "../lib/setup.sh" } #---------- @test "add two bans" { rune -0 cscli decisions add --ip 1.2.3.4 --duration 30s assert_stderr --partial 'Decision successfully added' rune -0 cscli decisions add --ip 1.2.3.5 --duration 30s assert_stderr --partial 'Decision successfully added' sleep 2 } @test "expected 1 notification" { rune -0 cat "${tempfile}" assert_output - <<-EOT

1.2.3.4 will get ban for next 30s for triggering manual 'ban' from 'githubciXXXXXXXXXXXXXXXXXXXXXXXX' on machine githubciXXXXXXXXXXXXXXXXXXXXXXXX.

CrowdSec CTI

1.2.3.5 will get ban for next 30s for triggering manual 'ban' from 'githubciXXXXXXXXXXXXXXXXXXXXXXXX' on machine githubciXXXXXXXXXXXXXXXXXXXXXXXX.

CrowdSec CTI

EOT }