vspd/database/altsignaddr_test.go
jholdstock ab5aa4dd6d Clarify "setaltsig" terminology.
Stardardize "alt sig"/"alt signature"/"alt signing address" terminology to "alternate signing address".
2021-11-16 14:49:13 +00:00

119 lines
3.1 KiB
Go

// Copyright (c) 2020-2021 The Decred developers
// Use of this source code is governed by an ISC
// license that can be found in the LICENSE file.
package database
import (
"reflect"
"testing"
)
func exampleAltSignAddrData() *AltSignAddrData {
return &AltSignAddrData{
AltSignAddr: randString(35, addrCharset),
Req: randBytes(1000),
ReqSig: randString(96, sigCharset),
Resp: randBytes(1000),
RespSig: randString(96, sigCharset),
}
}
// ensureData will confirm that the provided data exists in the database.
func ensureData(t *testing.T, ticketHash string, wantData *AltSignAddrData) {
t.Helper()
data, err := db.AltSignAddrData(ticketHash)
if err != nil {
t.Fatalf("unexpected error fetching alt sign address data: %v", err)
}
if !reflect.DeepEqual(wantData, data) {
t.Fatal("want data different than actual")
}
}
func testAltSignAddrData(t *testing.T) {
ticketHash := randString(64, hexCharset)
// Not added yet so no values should exist in the db.
h, err := db.AltSignAddrData(ticketHash)
if err != nil {
t.Fatalf("unexpected error fetching alt sign address data: %v", err)
}
if h != nil {
t.Fatal("expected no data")
}
// Insert an alt sign address.
data := exampleAltSignAddrData()
if err := db.InsertAltSignAddr(ticketHash, data); err != nil {
t.Fatalf("unexpected error storing alt sign addr in database: %v", err)
}
ensureData(t, ticketHash, data)
}
func testInsertAltSignAddr(t *testing.T) {
ticketHash := randString(64, hexCharset)
// Not added yet so no values should exist in the db.
ensureData(t, ticketHash, nil)
data := exampleAltSignAddrData()
// Clear alt sign addr for test.
data.AltSignAddr = ""
if err := db.InsertAltSignAddr(ticketHash, data); err == nil {
t.Fatalf("expected error for insert blank address")
}
if err := db.InsertAltSignAddr(ticketHash, nil); err == nil {
t.Fatalf("expected error for nil data")
}
// Still no change on errors.
ensureData(t, ticketHash, nil)
// Re-add alt sig addr.
data.AltSignAddr = randString(35, addrCharset)
// Insert an alt sign addr.
if err := db.InsertAltSignAddr(ticketHash, data); err != nil {
t.Fatalf("unexpected error storing alt sig addr in database: %v", err)
}
ensureData(t, ticketHash, data)
// Further additions should error and not change the data.
secondData := exampleAltSignAddrData()
secondData.AltSignAddr = data.AltSignAddr
if err := db.InsertAltSignAddr(ticketHash, secondData); err == nil {
t.Fatalf("expected error for second alt sig addr addition")
}
ensureData(t, ticketHash, data)
}
func testDeleteAltSignAddr(t *testing.T) {
ticketHash := randString(64, hexCharset)
// Nothing to delete.
if err := db.DeleteAltSignAddr(ticketHash); err != nil {
t.Fatalf("unexpected error deleting nonexistant alt sign addr")
}
// Insert an alt sign addr.
data := exampleAltSignAddrData()
if err := db.InsertAltSignAddr(ticketHash, data); err != nil {
t.Fatalf("unexpected error storing alt sign addr in database: %v", err)
}
ensureData(t, ticketHash, data)
if err := db.DeleteAltSignAddr(ticketHash); err != nil {
t.Fatalf("unexpected error deleting alt sign addr: %v", err)
}
ensureData(t, ticketHash, nil)
}