From 84e2af0c2c6324c96c3ac51d4be093c5b96df87b Mon Sep 17 00:00:00 2001 From: Ismo Vuorinen Date: Mon, 30 Jun 2025 13:35:16 +0300 Subject: [PATCH] fix: correct jail checks and add tests (#7) --- tests/f2b.bats | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 tests/f2b.bats diff --git a/tests/f2b.bats b/tests/f2b.bats new file mode 100644 index 0000000..85bedd0 --- /dev/null +++ b/tests/f2b.bats @@ -0,0 +1,49 @@ +#!/usr/bin/env bats + +setup() { + export PATH="$BATS_TEST_DIRNAME/bin:$PATH" + mkdir -p "$BATS_TEST_DIRNAME/bin" + cat > "$BATS_TEST_DIRNAME/bin/fail2ban-client" <<'MOCK' +#!/usr/bin/env bash +cmd=$1 +shift +case "$cmd" in + ping) + echo "pong" + ;; + status) + if [ -z "$1" ]; then + echo "Status" + echo "|- Number of jail: 2" + echo "\`- Jail list: sshd, testjail" + else + echo "Status for the jail: $1" + fi + ;; + -V) + echo "0.11.2" + ;; + *) + echo "Mocked fail2ban-client: $cmd $*" + ;; +esac +MOCK + chmod +x "$BATS_TEST_DIRNAME/bin/fail2ban-client" +} + +@test "status invalid jail" { + run "$BATS_TEST_DIRNAME/../f2b" status invalid + [ "$status" -eq 1 ] + [[ "$output" == *"Error: Jail 'invalid' does not exist."* ]] +} + +@test "logs invalid jail" { + run "$BATS_TEST_DIRNAME/../f2b" logs invalid + [ "$status" -eq 1 ] + [[ "$output" == *"Error: Jail 'invalid' does not exist."* ]] +} + +@test "logs valid jail" { + run "$BATS_TEST_DIRNAME/../f2b" logs sshd + [ "$status" -eq 0 ] +}