test: dns unit test & ensure catalogue present #360

Merged
decentral1se merged 3 commits from domain-checks-improved into main 2023-09-30 06:29:50 +00:00
6 changed files with 54 additions and 7 deletions

View File

@ -16,6 +16,8 @@ steps:
- name: make test
image: golang:1.21
environment:
ABRA_DIR: "/root/.abra"
commands:
- make test
depends_on:

View File

@ -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)

View File

@ -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

38
pkg/dns/dns_test.go Normal file
View File

@ -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 <domain>` 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))
}
}
}

View File

@ -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 {

View File

@ -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 {