--raw-output '.machines | keys[]' > /dev/null 2>&1
}
+restore()
+{
+ local config="$1"
+ local date="$2"
+ local number="$3"
+ local machine="$4"
+ local path="$5"
+ local origin="$6"
+ local backup_path=
+ local backup_name=
+ local remote_user=
+ local remote_machine=
+ local remote_port=
+
+ backup_path=$(echo "$config" \
+ | jq --raw-output ".backup_path")
+ backup_name=$(echo "$config" \
+ | jq --raw-output ".backup_name")
+ remote_user=$(echo "$config" \
+ | jq --raw-output ".machines.\"$machine\".remote_user")
+ [ "$remote_user" != "null" ] \
+ || errlog "missing remote user in $CONFIG_FILE" \
+ || return $?
+ remote_machine=$(echo "$config" \
+ | jq --raw-output ".machines.\"$machine\".remote_machine")
+ [ "$remote_machine" != "null" ] \
+ || errlog "missing remote machine in $CONFIG_FILE" \
+ || return $?
+ remote_port=$(echo "$config" \
+ | jq --raw-output ".machines.\"$machine\".remote_port")
+ [ "$remote_port" != "null" ] \
+ || errlog "missing remote port in $CONFIG_FILE" \
+ || return $?
+}
+
main()
{
local CONFIG_FILE=${CONFIG_FILE:="config.yaml"}
|| return $?
[ -n "$machine" ] || errlog "missing machine (-r)" || return $?
[ -n "$path" ] || errlog "missing path (-p)" || return $?
+
+ restore "$config" "$date" "$number" "$machine" "$path" "$origin" \
+ || return $?
}
[ "$TESTMODE" == "ON" ] && return 0
assert_line --index 1 "ℹ️ INFO: backup path build/test"
assert_line --index 2 "ℹ️ INFO: backup name backup"
assert_line --index 3 "❌ ERROR: missing path (-p)"
+}
+
+# bats test_tags=backup:config
+@test "failure config missing remote user" {
+ yq() {
+ echo '{
+ "backup_path": "build/test",
+ "backup_name": "backup",
+ "machines": {
+ "testpc1.example.com": {}
+ }
+ }'
+ }
+
+ run main -d "2000-01-01" -n "01" -r "testpc1.example.com" -p "/testpath"
+
+ assert_failure
+ assert_line --index 0 "⭐ START: restore"
+ assert_line --index 1 "ℹ️ INFO: backup path build/test"
+ assert_line --index 2 "ℹ️ INFO: backup name backup"
+ assert_line --index 3 "❌ ERROR: missing remote user in src/config-example.yaml"
+}
+
+# bats test_tags=backup:config
+@test "failure config missing remote machine" {
+ yq() {
+ echo '{
+ "backup_path": "build/test",
+ "backup_name": "backup",
+ "machines": {
+ "testpc1.example.com": {
+ "remote_user": "testuser"
+ }
+ }
+ }'
+ }
+
+ run main -d "2000-01-01" -n "01" -r "testpc1.example.com" -p "/testpath"
+
+ assert_failure
+ assert_line --index 0 "⭐ START: restore"
+ assert_line --index 1 "ℹ️ INFO: backup path build/test"
+ assert_line --index 2 "ℹ️ INFO: backup name backup"
+ assert_line --index 3 "❌ ERROR: missing remote machine in src/config-example.yaml"
+}
+
+# bats test_tags=backup:config
+@test "failure config missing remote port" {
+ yq() {
+ echo '{
+ "backup_path": "build/test",
+ "backup_name": "backup",
+ "machines": {
+ "testpc1.example.com": {
+ "remote_user": "testuser",
+ "remote_machine": "rmachine"
+ }
+ }
+ }'
+ }
+
+ run main -d "2000-01-01" -n "01" -r "testpc1.example.com" -p "/testpath"
+
+ assert_failure
+ assert_line --index 0 "⭐ START: restore"
+ assert_line --index 1 "ℹ️ INFO: backup path build/test"
+ assert_line --index 2 "ℹ️ INFO: backup name backup"
+ assert_line --index 3 "❌ ERROR: missing remote port in src/config-example.yaml"
}
\ No newline at end of file