94 lines
2.6 KiB
Go
94 lines
2.6 KiB
Go
package store
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/google/uuid"
|
|
|
|
"github.com/vasyakrg/dns-autoresolver/internal/diff"
|
|
"github.com/vasyakrg/dns-autoresolver/internal/model"
|
|
"github.com/vasyakrg/dns-autoresolver/internal/store/db"
|
|
"github.com/vasyakrg/dns-autoresolver/internal/store/dto"
|
|
)
|
|
|
|
func TestLoadDomainAndSaveCheckRun(t *testing.T) {
|
|
s, ctx := newStore(t)
|
|
|
|
acc, err := s.Queries().CreateAccount(ctx, db.CreateAccountParams{
|
|
ID: uuid.New(), ProjectID: defaultProject,
|
|
Provider: "selectel", SecretEnc: "enc-blob", Comment: "prod",
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
doc := dto.TemplateDoc{Records: []dto.RecordDTO{
|
|
{Type: "A", Name: "www.example.com.", TTL: 300, Values: []string{"1.2.3.4"}},
|
|
}}
|
|
tpl, err := s.Queries().CreateTemplate(ctx, db.CreateTemplateParams{
|
|
ID: uuid.New(), ProjectID: defaultProject, Name: "base", Doc: &doc,
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
domain, err := s.Queries().CreateDomain(ctx, db.CreateDomainParams{
|
|
ID: uuid.New(), ProjectID: defaultProject, ProviderAccountID: acc.ID,
|
|
ZoneName: "example.com", ZoneID: "zone-1", TemplateID: &tpl.ID,
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
ref, err := s.LoadDomain(ctx, domain.ID)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if ref.ZoneID != "zone-1" || ref.Provider != "selectel" || ref.SecretEnc != "enc-blob" {
|
|
t.Fatalf("domain ref mismatch: %+v", ref)
|
|
}
|
|
if len(ref.Template.Records) != 1 {
|
|
t.Fatalf("expected template records, got %+v", ref.Template)
|
|
}
|
|
|
|
cs := diff.Changeset{Diffs: []diff.RecordDiff{
|
|
{Kind: diff.Add, Type: model.A, Name: "www.example.com."},
|
|
{Kind: diff.Delete, Type: model.A, Name: "old.example.com."},
|
|
}}
|
|
if err := s.SaveCheckRun(ctx, domain.ID, cs); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
var count int
|
|
if err := s.pool.QueryRow(ctx, "SELECT count(*) FROM check_runs WHERE domain_id = $1", domain.ID).Scan(&count); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if count != 1 {
|
|
t.Fatalf("expected 1 check_runs row, got %d", count)
|
|
}
|
|
}
|
|
|
|
func TestLoadDomainNoTemplate(t *testing.T) {
|
|
s, ctx := newStore(t)
|
|
|
|
acc, err := s.Queries().CreateAccount(ctx, db.CreateAccountParams{
|
|
ID: uuid.New(), ProjectID: defaultProject,
|
|
Provider: "selectel", SecretEnc: "enc-blob", Comment: "prod",
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
domain, err := s.Queries().CreateDomain(ctx, db.CreateDomainParams{
|
|
ID: uuid.New(), ProjectID: defaultProject, ProviderAccountID: acc.ID,
|
|
ZoneName: "example.com", ZoneID: "zone-2", TemplateID: nil,
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if _, err := s.LoadDomain(ctx, domain.ID); err == nil {
|
|
t.Fatal("expected error for domain without template, got nil")
|
|
}
|
|
}
|