diff "$log_file" <(echo -ne "$exp")
)
+test_mount_with_credential() {
+ local credfile tmpdir unit
+ credfile="/tmp/mount-cred"
+ tmpdir="/tmp/test-54-mount"
+ unit=$(systemd-escape --suffix mount --path "$tmpdir")
+
+ echo foo >"$credfile"
+ mkdir -p "$tmpdir"
+
+ # Set up test mount unit
+ cat >/run/systemd/system/"$unit" <<EOF
+[Mount]
+What=tmpfs
+Where=$tmpdir
+Type=thisisatest
+LoadCredential=loadcred:$credfile
+EOF
+
+ # Set up test mount type
+ cat >/usr/sbin/mount.thisisatest <<EOF
+#!/usr/bin/env bash
+# Mount after verifying credential file content
+if [ \$(cat \${CREDENTIALS_DIRECTORY}/loadcred) = "foo" ]; then
+ mount -t tmpfs \$1 \$2
+fi
+EOF
+ chmod +x /usr/sbin/mount.thisisatest
+
+ # Verify mount succeeds
+ systemctl daemon-reload
+ systemctl start "$unit"
+ systemctl --no-pager show -p SubState --value "$unit" | grep -q mounted
+
+ # Verify mount fails with different credential file content
+ echo bar >"$credfile"
+ (! systemctl restart "$unit")
+
+ # Stop unit and delete files
+ systemctl stop "$unit"
+ rm -f "$credfile" /run/systemd/system/"$unit" /usr/sbin/mount.thisisatest
+ rm -rf "$tmpdir"
+}
+
# Sanity checks
#
# Create a dummy "full" disk (similar to /dev/full) to check out-of-space
systemctl start user@0.service
XDG_RUNTIME_DIR=/run/user/0 systemd-run --pipe --user --unit=waldi.service -p LoadCredentialEncrypted=mytest:/tmp/usertest.creds cat /run/user/0/credentials/waldi.service/mytest | cmp /tmp/usertest.data
+# Test mount unit with credential
+test_mount_with_credential
+
systemd-analyze log-level info
touch /testok