From b53fd2689cbb4d80c548b3f07e60ce6aebf2b545 Mon Sep 17 00:00:00 2001 From: decentral1se Date: Sat, 30 Sep 2023 08:19:02 +0200 Subject: [PATCH 1/3] test: add unit test for TestEnsureDomainsResolveSameIPv4 --- pkg/dns/dns_test.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 pkg/dns/dns_test.go diff --git a/pkg/dns/dns_test.go b/pkg/dns/dns_test.go new file mode 100644 index 00000000..49b414fd --- /dev/null +++ b/pkg/dns/dns_test.go @@ -0,0 +1,38 @@ +package dns + +import ( + "fmt" + "testing" +) + +func TestEnsureDomainsResolveSameIPv4(t *testing.T) { + tests := []struct { + domainName string + serverName string + shouldValidate bool + }{ + // NOTE(d1): DNS records get checked, so use something we control. if + // you're here because of a failing test, try `dig +short ` to + // ensure stuff matches first! + {"docs.coopcloud.tech", "coopcloud.tech", true}, + {"docs.coopcloud.tech", "swarm.autonomic.zone", true}, + + // NOTE(d1): special case handling for "--local" + {"", "default", true}, + {"", "local", true}, + + {"", "", false}, + {"123", "", false}, + } + + for _, test := range tests { + _, err := EnsureDomainsResolveSameIPv4(test.domainName, test.serverName) + if err != nil && test.shouldValidate { + t.Fatal(err) + } + + if err == nil && !test.shouldValidate { + t.Fatal(fmt.Errorf("should have failed but did not: %v", test)) + } + } +} -- 2.49.0 From 892f6c0730ee9ca41fb7a6f10ac3b6ae045512a8 Mon Sep 17 00:00:00 2001 From: decentral1se Date: Sat, 30 Sep 2023 08:19:16 +0200 Subject: [PATCH 2/3] test: ensure catalogue is cloned --- cli/cli.go | 10 +++------- pkg/catalogue/catalogue.go | 1 + pkg/recipe/recipe_test.go | 5 +++++ pkg/secret/secret_test.go | 5 +++++ 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/cli/cli.go b/cli/cli.go index 3da74228..e338d390 100644 --- a/cli/cli.go +++ b/cli/cli.go @@ -14,8 +14,8 @@ import ( "coopcloud.tech/abra/cli/recipe" "coopcloud.tech/abra/cli/server" "coopcloud.tech/abra/pkg/autocomplete" + cataloguePkg "coopcloud.tech/abra/pkg/catalogue" "coopcloud.tech/abra/pkg/config" - "coopcloud.tech/abra/pkg/git" "coopcloud.tech/abra/pkg/web" "github.com/sirupsen/logrus" "github.com/urfave/cli" @@ -184,12 +184,8 @@ func newAbraApp(version, commit string) *cli.App { } } - if _, err := os.Stat(config.CATALOGUE_DIR); os.IsNotExist(err) { - url := fmt.Sprintf("%s/%s.git", config.REPOS_BASE_URL, config.CATALOGUE_JSON_REPO_NAME) - logrus.Warnf("local recipe catalogue is missing, retrieving now") - if err := git.Clone(config.CATALOGUE_DIR, url); err != nil { - logrus.Fatal(err) - } + if err := cataloguePkg.EnsureCatalogue(); err != nil { + logrus.Fatal(err) } logrus.Debugf("abra version %s, commit %s", version, commit) diff --git a/pkg/catalogue/catalogue.go b/pkg/catalogue/catalogue.go index 413aec61..1b108670 100644 --- a/pkg/catalogue/catalogue.go +++ b/pkg/catalogue/catalogue.go @@ -56,6 +56,7 @@ var CatalogueSkipList = map[string]bool{ func EnsureCatalogue() error { catalogueDir := path.Join(config.ABRA_DIR, "catalogue") if _, err := os.Stat(catalogueDir); err != nil && os.IsNotExist(err) { + logrus.Warnf("local recipe catalogue is missing, retrieving now") url := fmt.Sprintf("%s/%s.git", config.REPOS_BASE_URL, config.CATALOGUE_JSON_REPO_NAME) if err := gitPkg.Clone(catalogueDir, url); err != nil { return err diff --git a/pkg/recipe/recipe_test.go b/pkg/recipe/recipe_test.go index 59a57ebc..fb0f29ae 100644 --- a/pkg/recipe/recipe_test.go +++ b/pkg/recipe/recipe_test.go @@ -3,10 +3,15 @@ package recipe import ( "testing" + "coopcloud.tech/abra/pkg/catalogue" "github.com/stretchr/testify/assert" ) func TestGetVersionLabelLocalDoesNotUseTimeoutLabel(t *testing.T) { + if err := catalogue.EnsureCatalogue(); err != nil { + t.Fatal(err) + } + offline := true recipe, err := Get("traefik", offline) if err != nil { diff --git a/pkg/secret/secret_test.go b/pkg/secret/secret_test.go index 443b3bab..82dd200c 100644 --- a/pkg/secret/secret_test.go +++ b/pkg/secret/secret_test.go @@ -4,6 +4,7 @@ import ( "path" "testing" + "coopcloud.tech/abra/pkg/catalogue" "coopcloud.tech/abra/pkg/config" "coopcloud.tech/abra/pkg/recipe" "coopcloud.tech/abra/pkg/upstream/stack" @@ -12,6 +13,10 @@ import ( ) func TestReadSecretsConfig(t *testing.T) { + if err := catalogue.EnsureCatalogue(); err != nil { + t.Fatal(err) + } + offline := true recipe, err := recipe.Get("matrix-synapse", offline) if err != nil { -- 2.49.0 From f18f0b6f827260d7597650a42e2b5a9f78cd7a8a Mon Sep 17 00:00:00 2001 From: decentral1se Date: Sat, 30 Sep 2023 08:26:20 +0200 Subject: [PATCH 3/3] build: set ABRA_DIR explicitly --- .drone.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.drone.yml b/.drone.yml index 62c23013..26207d49 100644 --- a/.drone.yml +++ b/.drone.yml @@ -16,6 +16,8 @@ steps: - name: make test image: golang:1.21 + environment: + ABRA_DIR: "/root/.abra" commands: - make test depends_on: -- 2.49.0