From 468407db052458acdc9ba83987ff44699d780cfb Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Mon, 8 May 2023 21:54:52 +0200 Subject: [PATCH] Add test for empty or no config for all providers --- tests/imds.test | 17 ++---------- tests/test_env.sh | 11 ++++++++ tests/tiny-cloud.test | 64 ++++++++++++++++++++++++++++++++++++++----- 3 files changed, 71 insertions(+), 21 deletions(-) diff --git a/tests/imds.test b/tests/imds.test index 6a54a74..120bb00 100755 --- a/tests/imds.test +++ b/tests/imds.test @@ -30,31 +30,20 @@ aws_set_fake_meta() { | tr '/' '_') } -aws_create_fake_nc() { - fake_bin nc <<-EOF - #!/bin/sh - input="\$(cat)" - case "\$input" in - -*) echo "nc: bad input: \$input" >&2; exit 1;; - esac - echo "token-foo" - EOF -} - imds_aws_hostname_body() { - aws_create_fake_nc + fake_netcat aws_set_fake_meta hostname myhostname CLOUD=aws atf_check -o match:"myhostname" imds @hostname } imds_aws_local_hostname_body() { - aws_create_fake_nc + fake_netcat aws_set_fake_meta local-hostname myhostname CLOUD=aws atf_check -o match:"myhostname" imds @local-hostname } imds_aws_ssh_keys_body() { - aws_create_fake_nc + fake_netcat aws_set_fake_meta public-keys 0=testuser aws_set_fake_meta public-keys/0/openssh-key "ssh-ed25519 keydata" diff --git a/tests/test_env.sh b/tests/test_env.sh index a040a4f..41d891d 100644 --- a/tests/test_env.sh +++ b/tests/test_env.sh @@ -72,3 +72,14 @@ fake_interfaces() { n=$((n+1)) done } + +fake_netcat() { + fake_bin nc <<-EOF + #!/bin/sh + input="\$(cat)" + case "\$input" in + -*) echo "nc: bad input: \$input" >&2; exit 1;; + esac + echo "token-foo" + EOF +} diff --git a/tests/tiny-cloud.test b/tests/tiny-cloud.test index 93013a2..9e0d4c8 100755 --- a/tests/tiny-cloud.test +++ b/tests/tiny-cloud.test @@ -4,16 +4,66 @@ export PREFIX="$srcdir" export MOCK=echo +PROVIDERS="alpine aws azure gcp nocloud oci" init_tests \ - tiny_cloud_help + tiny_cloud_help \ + no_metadata_early \ + no_userdata_main \ + no_userdata_final tiny_cloud_help_body() { - CLOUD=nocloud atf_check -s not-exit:0 \ - -e match:"Usage" \ - tiny-cloud --invalid + for provider in $PROVIDERS; do + CLOUD="$provider" atf_check -s not-exit:0 \ + -e match:"Usage" \ + tiny-cloud --invalid - CLOUD=nocloud atf_check -s exit:0 \ - -o match:"Usage" \ - tiny-cloud --help + CLOUD="$provider" atf_check -s exit:0 \ + -o match:"Usage" \ + tiny-cloud --help + done +} + +no_metadata_early_body() { + fake_netcat + for provider in $PROVIDERS; do + # TODO: -e not-match:"UNKNOWN" \ + CLOUD="$provider" atf_check \ + -e not-match:"not found" \ + -e not-match:"o such file" \ + -o match:"rc-update add.*sshd" \ + tiny-cloud early + done +} + +no_userdata_main_body() { + fake_netcat + for provider in $PROVIDERS; do + # we should not set empty hostname + # we should not create .ssh dir for non-existing user + # TODO: -e not-match:"UNKNOWN" \ + CLOUD="$provider" atf_check \ + -e ignore \ + -o not-match:"hostname.*-F" \ + -o not-match:"chown.*/\.ssh" \ + tiny-cloud main + for i in etc/hostname .ssh; do + if [ -e "$i" ]; then + atf_fail "$i should not have been created" + fi + done + done +} + +no_userdata_final_body() { + fake_netcat + for provider in $PROVIDERS; do + # TODO: -e not-match:"UNKNOWN" \ + CLOUD="$provider" atf_check \ + -e match:"bootstrap_complete .*" \ + tiny-cloud final + CLOUD="$provider" atf_check \ + -e match:"bootstrap marked.*incomplete" \ + tiny-cloud --bootstrap incomplete + done }