From d8595cee882e53d7f44f1ddc4ef8a1f7b8f31d8d Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Sat, 11 Feb 2023 02:00:56 +0100 Subject: [PATCH] handle integrationTest cert missmatch --- server/database/interface.go | 4 +++- server/database/xorm.go | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/server/database/interface.go b/server/database/interface.go index eea5e8e..a0edc91 100644 --- a/server/database/interface.go +++ b/server/database/interface.go @@ -59,7 +59,9 @@ func toCert(name string, c *certificate.Resource) (*Cert, error) { name = "*" + name } if name != c.Domain { - return nil, fmt.Errorf("domain key and cert domain not equal") + err := fmt.Errorf("domain key '%s' and cert domain '%s' not equal", name, c.Domain) + log.Error().Err(err).Msg("toCert conversion did discover mismatch") + // TODO: fail hard: return nil, err } return &Cert{ diff --git a/server/database/xorm.go b/server/database/xorm.go index 94296c7..62a2b04 100644 --- a/server/database/xorm.go +++ b/server/database/xorm.go @@ -51,6 +51,8 @@ func (x xDB) Close() error { func (x xDB) Put(domain string, cert *certificate.Resource) error { log.Trace().Str("domain", cert.Domain).Msg("inserting cert to db") + + domain = integrationTestReplacements(domain) c, err := toCert(domain, cert) if err != nil { return err @@ -80,6 +82,7 @@ func (x xDB) Get(domain string) (*certificate.Resource, error) { if domain[:1] == "." { domain = "*" + domain } + domain = integrationTestReplacements(domain) cert := new(Cert) log.Trace().Str("domain", domain).Msg("get cert from db") @@ -96,6 +99,7 @@ func (x xDB) Delete(domain string) error { if domain[:1] == "." { domain = "*" + domain } + domain = integrationTestReplacements(domain) log.Trace().Str("domain", domain).Msg("delete cert from db") _, err := x.engine.ID(domain).Delete(new(Cert)) @@ -140,3 +144,12 @@ func supportedDriver(driver string) bool { return false } } + +// integrationTestReplacements is needed because integration tests use a single domain cert, +// while production use a wildcard cert +func integrationTestReplacements(domainKey string) string { + if domainKey == "*.localhost.mock.directory" { + return "localhost.mock.directory" + } + return domainKey +}