github.com/decred/dcrlnd@v0.7.6/channeldb/waitingproof_test.go (about) 1 package channeldb 2 3 import ( 4 "testing" 5 6 "reflect" 7 8 "github.com/davecgh/go-spew/spew" 9 "github.com/decred/dcrlnd/lnwire" 10 "github.com/go-errors/errors" 11 ) 12 13 // TestWaitingProofStore tests add/get/remove functions of the waiting proof 14 // storage. 15 func TestWaitingProofStore(t *testing.T) { 16 t.Parallel() 17 18 db, cleanup, err := MakeTestDB() 19 if err != nil { 20 t.Fatalf("failed to make test database: %s", err) 21 } 22 defer cleanup() 23 24 proof1 := NewWaitingProof(true, &lnwire.AnnounceSignatures{ 25 NodeSignature: wireSig, 26 DecredSignature: wireSig, 27 ExtraOpaqueData: make([]byte, 0), 28 }) 29 30 store, err := NewWaitingProofStore(db) 31 if err != nil { 32 t.Fatalf("unable to create the waiting proofs storage: %v", 33 err) 34 } 35 36 if err := store.Add(proof1); err != nil { 37 t.Fatalf("unable add proof to storage: %v", err) 38 } 39 40 proof2, err := store.Get(proof1.Key()) 41 if err != nil { 42 t.Fatalf("unable retrieve proof from storage: %v", err) 43 } 44 if !reflect.DeepEqual(proof1, proof2) { 45 t.Fatalf("wrong proof retrieved: expected %v, got %v", 46 spew.Sdump(proof1), spew.Sdump(proof2)) 47 } 48 49 if _, err := store.Get(proof1.OppositeKey()); err != ErrWaitingProofNotFound { 50 t.Fatalf("proof shouldn't be found: %v", err) 51 } 52 53 if err := store.Remove(proof1.Key()); err != nil { 54 t.Fatalf("unable remove proof from storage: %v", err) 55 } 56 57 if err := store.ForAll(func(proof *WaitingProof) error { 58 return errors.New("storage should be empty") 59 }, func() {}); err != nil && err != ErrWaitingProofNotFound { 60 t.Fatal(err) 61 } 62 }