92a5d50082
- load_config blockiert Shell-Operatoren (;|&`) in .env-Werten - validate_path prueft Sonderzeichen und Path-Traversal in Pfad-Variablen - validate_config prüft DARKTABLE_BIN-basename und ruft validate_path auf - Lockdir-Trap erst nach erfolgreicher Lock-Akquisition registriert (verhindert dass externer Lockdir bei gescheitertem Lock entfernt wird) - uninstall.sh nutzt rmdir statt rm -rf fuer Lockdir - security.bats mit 10 Tests fuer alle Sicherheitsanforderungen Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
60 lines
1.8 KiB
Bash
60 lines
1.8 KiB
Bash
#!/usr/bin/env bats
|
|
|
|
load helpers/setup
|
|
|
|
SYNC_SCRIPT="$BATS_TEST_DIRNAME/../scripts/darktable_sync.sh"
|
|
|
|
setup() {
|
|
create_valid_env
|
|
mkdir -p "$HOME/.config/darktable"
|
|
touch "$HOME/.config/darktable/library.db"
|
|
touch "$HOME/.config/darktable/data.db"
|
|
mkdir -p "$HOME/Pictures"
|
|
export DISPLAY=:99
|
|
}
|
|
|
|
@test "sync_pending wird gesetzt wenn Server nicht erreichbar" {
|
|
run_with_stubs env SSH_STUB_FAIL=1 bash "$SYNC_SCRIPT"
|
|
[ "$status" -eq 0 ]
|
|
[ -f "$CONFIG_DIR/sync_pending" ]
|
|
}
|
|
|
|
@test "sync_pending wird entfernt bei erfolgreichem Sync" {
|
|
touch "$CONFIG_DIR/sync_pending"
|
|
run_with_stubs env SSH_STUB_FAIL=0 bash "$SYNC_SCRIPT"
|
|
[ "$status" -eq 0 ]
|
|
[ ! -f "$CONFIG_DIR/sync_pending" ]
|
|
}
|
|
|
|
@test "sync_pending wird gesetzt wenn rsync fehlschlaegt" {
|
|
run_with_stubs env SSH_STUB_FAIL=0 RSYNC_STUB_FAIL=1 bash "$SYNC_SCRIPT"
|
|
[ "$status" -eq 1 ]
|
|
[ -f "$CONFIG_DIR/sync_pending" ]
|
|
}
|
|
|
|
@test "DB-Backup wird vor Download erstellt" {
|
|
run_with_stubs env SSH_STUB_FAIL=0 bash "$SYNC_SCRIPT"
|
|
[ "$status" -eq 0 ]
|
|
[ -f "$HOME/.config/darktable/library.db.bak" ]
|
|
[ -f "$HOME/.config/darktable/data.db.bak" ]
|
|
}
|
|
|
|
@test "Versionskonflikt: gleiche Major.Minor gibt kein Exit 1" {
|
|
run_with_stubs env SSH_STUB_FAIL=0 SSH_STUB_OUTPUT="this is darktable 5.0.1" \
|
|
DARKTABLE_STUB_VERSION="5.0.1" bash "$SYNC_SCRIPT"
|
|
[ "$status" -eq 0 ]
|
|
}
|
|
|
|
@test "Versionskonflikt: andere Major.Minor gibt Exit 1" {
|
|
run_with_stubs env SSH_STUB_FAIL=0 SSH_STUB_OUTPUT="this is darktable 4.8.0" \
|
|
DARKTABLE_STUB_VERSION="5.0.0" bash "$SYNC_SCRIPT"
|
|
[ "$status" -eq 1 ]
|
|
[ -f "$CONFIG_DIR/sync_pending" ]
|
|
}
|
|
|
|
@test "Lockdir wird nach Abschluss entfernt" {
|
|
run_with_stubs env SSH_STUB_FAIL=0 bash "$SYNC_SCRIPT"
|
|
[ "$status" -eq 0 ]
|
|
[ ! -d "$CONFIG_DIR/sync.lock" ]
|
|
}
|