#!/usr/bin/env bats load helpers/setup COMMON_SCRIPT="$BATS_TEST_DIRNAME/../scripts/darktable_common.sh" @test "check_dependency schlaegt fehl wenn Tool fehlt" { run bash -c "source '$COMMON_SCRIPT'; check_dependency nicht_existierendes_tool" [ "$status" -eq 1 ] [[ "$output" == *"nicht_existierendes_tool"* ]] [[ "$output" == *"sudo apt install"* ]] } @test "check_dependency besteht wenn Tool vorhanden" { run bash -c "source '$COMMON_SCRIPT'; check_dependency bash" [ "$status" -eq 0 ] } @test "load_config schlaegt fehl wenn .env fehlt" { rm -f "$CONFIG_DIR/.env" run bash -c "source '$COMMON_SCRIPT'; load_config" [ "$status" -eq 1 ] [[ "$output" == *"nicht gefunden"* ]] } @test "load_config laedt .env erfolgreich" { create_valid_env run bash -c "source '$COMMON_SCRIPT'; load_config; echo \$SERVER_IP" [ "$status" -eq 0 ] [[ "$output" == *"192.168.1.100"* ]] } @test "validate_config schlaegt fehl wenn Variable leer" { create_valid_env echo "SERVER_IP=" >> "$CONFIG_DIR/.env" run bash -c "source '$COMMON_SCRIPT'; load_config; validate_config" [ "$status" -eq 1 ] [[ "$output" == *"SERVER_IP"* ]] } @test "server_reachable gibt false zurueck wenn SSH fehlschlaegt" { create_valid_env run_with_stubs bash -c " export SSH_STUB_FAIL=1 source '$COMMON_SCRIPT' load_config server_reachable " [ "$status" -eq 1 ] } @test "server_reachable gibt true zurueck wenn SSH erfolgreich" { create_valid_env run_with_stubs bash -c " export SSH_STUB_FAIL=0 source '$COMMON_SCRIPT' load_config server_reachable " [ "$status" -eq 0 ] } @test "ask_user: j-Eingabe gibt Exit 0" { TMP_SCRIPT=$(mktemp) echo "source '$COMMON_SCRIPT'; ask_user 'Titel' 'Frage?'" > "$TMP_SCRIPT" run bash -c "echo 'j' | env PATH='$STUBS_DIR:$PATH' bash '$TMP_SCRIPT'" rm -f "$TMP_SCRIPT" [ "$status" -eq 0 ] } @test "ask_user: n-Eingabe gibt Exit 1" { TMP_SCRIPT=$(mktemp) echo "source '$COMMON_SCRIPT'; ask_user 'Titel' 'Frage?'" > "$TMP_SCRIPT" run bash -c "echo 'n' | env PATH='$STUBS_DIR:$PATH' bash '$TMP_SCRIPT'" rm -f "$TMP_SCRIPT" [ "$status" -eq 1 ] } # --- cleanup_old_backups --- @test "cleanup_old_backups: nicht existierendes Verzeichnis gibt kein Fehler" { run bash -c "source '$COMMON_SCRIPT'; cleanup_old_backups '/tmp/nonexistent_bak_$RANDOM'" [ "$status" -eq 0 ] } @test "cleanup_old_backups: Datei juenger als 730 Tage bleibt erhalten" { BACKUP="$BATS_TMPDIR/backup_test" mkdir -p "$BACKUP" touch "$BACKUP/recent.jpg" run bash -c "source '$COMMON_SCRIPT'; cleanup_old_backups '$BACKUP'" [ "$status" -eq 0 ] [ -f "$BACKUP/recent.jpg" ] rm -rf "$BACKUP" } @test "cleanup_old_backups: Datei aelter als 730 Tage wird geloescht" { BACKUP="$BATS_TMPDIR/backup_old" mkdir -p "$BACKUP" touch -d "3 years ago" "$BACKUP/old.jpg" run bash -c "source '$COMMON_SCRIPT'; cleanup_old_backups '$BACKUP'" [ "$status" -eq 0 ] [ ! -f "$BACKUP/old.jpg" ] rm -rf "$BACKUP" } @test "cleanup_old_backups: leere Unterverzeichnisse werden entfernt" { BACKUP="$BATS_TMPDIR/backup_empty" mkdir -p "$BACKUP/subdir" touch -d "3 years ago" "$BACKUP/subdir/old.jpg" run bash -c "source '$COMMON_SCRIPT'; cleanup_old_backups '$BACKUP'" [ "$status" -eq 0 ] [ ! -d "$BACKUP/subdir" ] rm -rf "$BACKUP" }