#!/usr/bin/env atf-sh # vim:set ft=sh # shellcheck shell=sh . $(atf_get_srcdir)/test_env.sh export PREFIX="$srcdir" export MOCK=echo lib="$srcdir"/lib/tiny-cloud/init init_tests \ set_hostname \ set_ssh_keys 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\"; init__set_hostname" atf_check -o match:"^myhostname$" cat etc/hostname } 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\"; init__set_ssh_keys" atf_check -o match:"^ssh-ed25519 keydata" \ -o match:"^ssh-rsa foobar" \ cat home/alpine/.ssh/authorized_keys }