]> gitweb.hhaalo.de Git - simple-backup.git/commitdiff
add test for cryptsetup parameters
authorBastian Dehn <hhaalo@arcor.de>
Sun, 16 Aug 2026 15:33:05 +0000 (17:33 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 16 Aug 2026 15:33:05 +0000 (17:33 +0200)
src/backupmount
tests/backupmount_tests.bats

index 4fdd547f4212b7ca331f95059c48c7b650ae8627..1d1139f43274f13b431c10d490d56ba61b4ee9c9 100755 (executable)
@@ -76,10 +76,17 @@ mount_device()
        echo "ℹ️ INFO: use key $key"
 
        volume=$(echo "$config" \
-               | jq --raw-output ".media.\"$media\".volume")
+               | jq --raw-output ".backup_volume")
        [ "$volume" != "null" ] \
                || errlog "missing volume in $CONFIG_FILE" \
                || return $?
+       echo "ℹ️ INFO: volume open luks-crypt-volume"
+
+       cryptsetupargs=("open"
+               "--key-file $key"
+               "$device"
+               "$volume")
+       cryptsetup "${cryptsetupargs[@]}"
 }
 
 mount_backup()
index 6dbcfbc6b690d4bf516712c94f14b4441b0cc302..dde1a43ed60024a8d79d2edd4fda95d88a19994f 100755 (executable)
@@ -4,16 +4,23 @@ setup() {
        bats_load_library 'bats-support'
        bats_load_library 'bats-assert'
        export TESTMODE="ON"
+       export CRYPTSETUP_LOG="build/test/cryptsetup.log"
        export CONFIG_FILE="src/config-example.yaml"
        source src/backupmount
+       mkdir --parents "build/test"
        command() {
                return 0
        }
+       cryptsetup() {
+               printf "%s\n" "${#@}" > "$CRYPTSETUP_LOG"
+               printf "%s\n" "$@" >> "$CRYPTSETUP_LOG"
+       }
 }
 
 teardown() {
        rm --recursive --force "build/test"
        unset TESTMODE
+       unset CRYPTSETUP_LOG
        unset CONFIG_FILE
 }
 
@@ -218,4 +225,27 @@ teardown() {
        assert_line --index 1 "ℹ️ INFO: media day with device /dev/path/to/day found"
        assert_line --index 2 "ℹ️ INFO: use key /path/to/key"
        assert_line --index 3 "❌ ERROR: missing volume in src/config-example.yaml"
+}
+
+# bats test_tags=backupmount:mount
+@test "success open volume for media day" {
+       exists_block_device() {
+               return 0
+       }
+       exists_key() {
+               return 0
+       }
+
+       run main "mount"
+
+       assert_success
+       assert_line --index 0 "⭐ START: backupmount"
+       assert_line --index 1 "ℹ️ INFO: media day with device /dev/path/to/day found"
+       assert_line --index 2 "ℹ️ INFO: use key /path/to/luks-key-file-day"
+       assert_line --index 3 "ℹ️ INFO: volume open luks-crypt-volume"
+       assert_equal "$(awk 'NR==1 {print; exit}' "$CRYPTSETUP_LOG")" "4"
+       assert_equal "$(awk 'NR==2 {print; exit}' "$CRYPTSETUP_LOG")" "open"
+       assert_equal "$(awk 'NR==3 {print; exit}' "$CRYPTSETUP_LOG")" "--key-file /path/to/luks-key-file-day"
+       assert_equal "$(awk 'NR==4 {print; exit}' "$CRYPTSETUP_LOG")" "/dev/path/to/day"
+       assert_equal "$(awk 'NR==5 {print; exit}' "$CRYPTSETUP_LOG")" "luks-crypt-volume"
 }
\ No newline at end of file