From 5af4defb6bd9a998d62171d03e8bac5fb2807876 Mon Sep 17 00:00:00 2001 From: Callahan Kovacs Date: Thu, 3 Oct 2024 15:51:57 -0500 Subject: [PATCH] tests: add spread tests for registries Signed-off-by: Callahan Kovacs --- tests/spread/store/registries/editor.sh | 12 +++++++ tests/spread/store/registries/task.yaml | 44 +++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100755 tests/spread/store/registries/editor.sh create mode 100644 tests/spread/store/registries/task.yaml diff --git a/tests/spread/store/registries/editor.sh b/tests/spread/store/registries/editor.sh new file mode 100755 index 0000000000..b5b634ae61 --- /dev/null +++ b/tests/spread/store/registries/editor.sh @@ -0,0 +1,12 @@ +#! /bin/bash + +validation_set_file="$1" + +# flip-flop between 'access' being read and write +if grep -q "^ access:.*read" "$validation_set_file"; then + access="write" +else + access="read" +fi + +sed -i "s/ access:.*/ access: $access/g" "$validation_set_file" diff --git a/tests/spread/store/registries/task.yaml b/tests/spread/store/registries/task.yaml new file mode 100644 index 0000000000..9986b76405 --- /dev/null +++ b/tests/spread/store/registries/task.yaml @@ -0,0 +1,44 @@ +summary: test the registries commands + +environment: + SNAPCRAFT_ASSERTION_KEY: "$(HOST: echo ${SNAPCRAFT_ASSERTION_KEY})" + SNAPCRAFT_STORE_CREDENTIALS: "$(HOST: echo ${SNAPCRAFT_STORE_CREDENTIALS_STAGING})" + +prepare: | + if [[ -z "$SNAPCRAFT_STORE_CREDENTIALS" ]]; then + ERROR "No credentials set in env SNAPCRAFT_STORE_CREDENTIALS" + fi + + if [[ -z "$SNAPCRAFT_ASSERTION_KEY" ]]; then + ERROR "No gpg key set in env SNAPCRAFT_ASSERTION_KEY" + fi + + # setup snap gpg dir + mkdir -p "$HOME/.snap/gnupg" + chmod 700 "$HOME/.snap/gnupg" + + # import a registered key + echo "$SNAPCRAFT_ASSERTION_KEY" | base64 --decode > store-key.txt + gpg --homedir "$HOME/.snap/gnupg" --import store-key.txt + rm -f store-key.txt + + snap install yq + # registries only available in edge + snap refresh snapd --edge + +execute: | + # ensure snapcraft is logged in and can access the store + snapcraft whoami + + # snapcraft will use a fake file editor + export EDITOR="$PWD/editor.sh" + + snapcraft edit-registries "$(snapcraft whoami | yq .id)" testset --key-name testspreadkey + + snapcraft list-registries | MATCH testset + +restore: | + rm -rf "$HOME/.snap/gnupg" + + snap remove --purge yq + snap refresh snapd --stable