#!/usr/bin/env atf-sh # shellcheck shell=sh . $(atf_get_srcdir)/test_env.sh export PREFIX="$srcdir" init_tests \ imds_help \ imds_space \ imds_aws_hostname \ imds_aws_local_hostname \ imds_aws_ssh_keys \ imds_nocloud_cmdline_local_hostname \ imds_nocloud_cidata_hostname \ imds_nocloud_cidata_local_hostname imds_help_body() { atf_check -o match:"Usage: imds" imds -h } imds_space_body() { CLOUD=nocloud atf_check -o match:'^ $' imds +s CLOUD=nocloud atf_check -o match:'^\t$' imds +t CLOUD=nocloud atf_check -o match:'^$' imds +n } aws_set_fake_meta() { local key="$1" value="$2" echo "$value" > $(echo 169.254.169.254/latest/meta-data/"$key" \ | tr '/' '_') } imds_aws_hostname_body() { fake_netcat aws_set_fake_meta hostname myhostname CLOUD=aws atf_check -o match:"myhostname" imds @hostname } imds_aws_local_hostname_body() { fake_netcat aws_set_fake_meta local-hostname myhostname CLOUD=aws atf_check -o match:"myhostname" imds @local-hostname } imds_aws_ssh_keys_body() { fake_netcat aws_set_fake_meta public-keys 0=testuser aws_set_fake_meta public-keys/0/openssh-key "ssh-ed25519 keydata" CLOUD=aws atf_check -o match:"ssh-ed25519 keydata" imds @ssh-keys } imds_nocloud_cmdline_local_hostname_body() { atf_require_prog yx mkdir proc for key in h local-hostname; do echo "BOOT_IMAGE=/boot/vmlinuz-lts ro ds=nocloud;$key=myhostname" > proc/cmdline CLOUD=nocloud atf_check \ -o match:'^myhostname$' \ imds @local-hostname done } imds_nocloud_cidata_hostname_body() { atf_require_prog yx fake_metadata_nocloud <<-EOF hostname: myhostname EOF CLOUD=nocloud atf_check \ -o match:'^myhostname$' \ imds @hostname } imds_nocloud_cidata_local_hostname_body() { atf_require_prog yx fake_metadata_nocloud <<-EOF local-hostname: my-local-hostname EOF CLOUD=nocloud atf_check \ -o match:'^my-local-hostname$' \ imds @local-hostname }