mirror of
https://gitlab.alpinelinux.org/alpine/cloud/tiny-cloud.git
synced 2025-12-15 11:22:43 +03:00
99 lines
2.1 KiB
Plaintext
Executable File
99 lines
2.1 KiB
Plaintext
Executable File
#!/usr/bin/env atf-sh
|
|
|
|
. $(atf_get_srcdir)/test_env.sh
|
|
|
|
export PREFIX="$srcdir"
|
|
export MOCK=echo
|
|
lib="$srcdir"/lib/tiny-cloud/init-main
|
|
|
|
init_tests \
|
|
set_hostname \
|
|
set_ssh_keys \
|
|
save_userdata_plain \
|
|
save_userdata_compressed
|
|
|
|
|
|
set_nocloud_meta() {
|
|
local metadata="$(cat)"
|
|
fake_bin mount <<-EOF
|
|
#!/bin/sh
|
|
# find last arg which is the mount dir
|
|
while ! [ -d "\$1" ]; do
|
|
shift
|
|
done
|
|
printf "%s" "$metadata" \
|
|
> "\$1"/meta-data
|
|
EOF
|
|
|
|
fake_bin umount <<-EOF
|
|
#!/bin/sh
|
|
while ! [ -d "\$1" ]; do
|
|
shift
|
|
done
|
|
rm -f "\$1"/meta-data
|
|
EOF
|
|
mkdir -p mnt
|
|
}
|
|
|
|
set_hostname_body() {
|
|
set_nocloud_meta <<-EOF
|
|
hostname: myhostname
|
|
EOF
|
|
|
|
CLOUD="nocloud" atf_check \
|
|
-o match:"hostname.*-F $PWD/etc/hostname" \
|
|
sh -c ". \"$lib\"; set_hostname"
|
|
atf_check -o match:"^myhostname$" cat etc/hostname
|
|
|
|
rm etc/hostname
|
|
CLOUD="nocloud" atf_check \
|
|
-o not-match:"hostname.*-F $PWD/etc/hostname" \
|
|
sh -c "SKIP_INIT_ACTIONS=set_hostname ; . \"$lib\"; set_hostname"
|
|
if test -f etc/hostname; then
|
|
atf_fail "etc/hostname should not exist"
|
|
fi
|
|
}
|
|
|
|
set_ssh_keys_body() {
|
|
fake_bin getent <<-EOF
|
|
#!/bin/sh
|
|
echo "alpine:x:1000:1000:Linux User,,,:/home/alpine:/bin/sh"
|
|
EOF
|
|
set_nocloud_meta user-data <<-EOF
|
|
public-keys:
|
|
- openssh-key: ssh-ed25519 keydata
|
|
- openssh-key: ssh-rsa foobar
|
|
EOF
|
|
CLOUD="nocloud" atf_check \
|
|
-o match:"chown.*/\.ssh" \
|
|
sh -c ". \"$lib\"; set_ssh_keys"
|
|
atf_check -o match:"^ssh-ed25519 keydata" \
|
|
-o match:"^ssh-rsa foobar" \
|
|
cat home/alpine/.ssh/authorized_keys
|
|
}
|
|
|
|
save_userdata_plain_body() {
|
|
fake_userdata_nocloud <<-EOF
|
|
#userdata
|
|
EOF
|
|
CLOUD="nocloud" atf_check \
|
|
sh -c ". \"$lib\"; save_userdata"
|
|
atf_check -o match:"^#userdata" cat var/lib/cloud/user-data
|
|
}
|
|
|
|
save_userdata_compressed_body() {
|
|
for comp in gzip bzip2 xz lzma lzop lz4 zstd; do
|
|
# fake_userdata_nocloud will set PATH so dont run it in a subshell
|
|
printf "%s\n" "#userdata" | $comp -c > tmpfile
|
|
fake_userdata_nocloud < tmpfile
|
|
|
|
CLOUD="nocloud" atf_check \
|
|
sh -c ". \"$lib\"; save_userdata"
|
|
|
|
if ! grep "^#userdata" var/lib/cloud/user-data; then
|
|
atf_fail "$comp failed"
|
|
fi
|
|
done
|
|
}
|
|
|