Refactor: Use more specific type in argument of DB.Update (#162)

The DB.Update function takes a type of ACMETxt. However, the function
only requires the Value and Subdomain fields.

Refactor the function such that it takes ACMETxtPost instead of the full
ACMETxt record. This will simplify extraction of txt-record related
logic from the db code.
This commit is contained in:
znerol 2019-06-12 14:41:02 +02:00 committed by Joona Hoikkala
parent af5d2561d2
commit c13035a344
5 changed files with 8 additions and 8 deletions

2
api.go
View File

@ -91,7 +91,7 @@ func webUpdatePost(w http.ResponseWriter, r *http.Request, _ httprouter.Params)
updStatus = http.StatusBadRequest updStatus = http.StatusBadRequest
upd = jsonError("bad_txt") upd = jsonError("bad_txt")
} else if validSubdomain(a.Subdomain) && validTXT(a.Value) { } else if validSubdomain(a.Subdomain) && validTXT(a.Value) {
err := DB.Update(a) err := DB.Update(a.ACMETxtPost)
if err != nil { if err != nil {
log.WithFields(log.Fields{"error": err.Error()}).Debug("Error while trying to update record") log.WithFields(log.Fields{"error": err.Error()}).Debug("Error while trying to update record")
updStatus = http.StatusInternalServerError updStatus = http.StatusInternalServerError

2
db.go
View File

@ -281,7 +281,7 @@ func (d *acmedb) GetTXTForDomain(domain string) ([]string, error) {
return txts, nil return txts, nil
} }
func (d *acmedb) Update(a ACMETxt) error { func (d *acmedb) Update(a ACMETxtPost) error {
d.Lock() d.Lock()
defer d.Unlock() defer d.Unlock()
var err error var err error

View File

@ -161,7 +161,7 @@ func TestQueryExecErrors(t *testing.T) {
t.Errorf("Expected error from exec in Register, but got none") t.Errorf("Expected error from exec in Register, but got none")
} }
reg.Value = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" reg.Value = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
err = DB.Update(reg) err = DB.Update(reg.ACMETxtPost)
if err == nil { if err == nil {
t.Errorf("Expected error from exec in Update, but got none") t.Errorf("Expected error from exec in Update, but got none")
} }
@ -238,10 +238,10 @@ func TestGetTXTForDomain(t *testing.T) {
txtval2 := "___validation_token_received_YEAH_the_ca___" txtval2 := "___validation_token_received_YEAH_the_ca___"
reg.Value = txtval1 reg.Value = txtval1
_ = DB.Update(reg) _ = DB.Update(reg.ACMETxtPost)
reg.Value = txtval2 reg.Value = txtval2
_ = DB.Update(reg) _ = DB.Update(reg.ACMETxtPost)
regDomainSlice, err := DB.GetTXTForDomain(reg.Subdomain) regDomainSlice, err := DB.GetTXTForDomain(reg.Subdomain)
if err != nil { if err != nil {
@ -294,7 +294,7 @@ func TestUpdate(t *testing.T) {
regUser.Password = "nevergonnagiveyouup" regUser.Password = "nevergonnagiveyouup"
regUser.Value = validTXT regUser.Value = validTXT
err = DB.Update(regUser) err = DB.Update(regUser.ACMETxtPost)
if err != nil { if err != nil {
t.Errorf("DB Update failed, got error: [%v]", err) t.Errorf("DB Update failed, got error: [%v]", err)
} }

View File

@ -168,7 +168,7 @@ func TestResolveTXT(t *testing.T) {
return return
} }
atxt.Value = validTXT atxt.Value = validTXT
err = DB.Update(atxt) err = DB.Update(atxt.ACMETxtPost)
if err != nil { if err != nil {
t.Errorf("Could not update db record: [%v]", err) t.Errorf("Could not update db record: [%v]", err)
return return

View File

@ -74,7 +74,7 @@ type database interface {
Register(cidrslice) (ACMETxt, error) Register(cidrslice) (ACMETxt, error)
GetByUsername(uuid.UUID) (ACMETxt, error) GetByUsername(uuid.UUID) (ACMETxt, error)
GetTXTForDomain(string) ([]string, error) GetTXTForDomain(string) ([]string, error)
Update(ACMETxt) error Update(ACMETxtPost) error
GetBackend() *sql.DB GetBackend() *sql.DB
SetBackend(*sql.DB) SetBackend(*sql.DB)
Close() Close()