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  }