prysm-pulse/beacon-chain/db/attestation_test.go

83 lines
1.7 KiB
Go
Raw Normal View History

2018-10-05 17:14:50 +00:00
package db
import (
2018-10-17 06:11:24 +00:00
"bytes"
2018-10-05 17:14:50 +00:00
"testing"
"github.com/gogo/protobuf/proto"
att "github.com/prysmaticlabs/prysm/beacon-chain/core/attestations"
2018-10-05 17:14:50 +00:00
pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
)
2018-10-17 06:11:24 +00:00
func TestSaveAndRetrieveAttestation(t *testing.T) {
db := setupDB(t)
defer teardownDB(t, db)
2018-10-05 17:14:50 +00:00
a := &pb.Attestation{
Data: &pb.AttestationData{
Slot: 0,
Shard: 0,
},
}
2018-10-05 17:14:50 +00:00
2018-10-17 06:11:24 +00:00
if err := db.SaveAttestation(a); err != nil {
t.Fatalf("Failed to save attestation: %v", err)
2018-10-05 17:14:50 +00:00
}
aHash := att.Key(a.GetData())
aPrime, err := db.Attestation(aHash)
2018-10-05 17:14:50 +00:00
if err != nil {
t.Fatalf("Failed to call Attestation: %v", err)
2018-10-05 17:14:50 +00:00
}
aEnc, err := proto.Marshal(a)
2018-10-17 06:11:24 +00:00
if err != nil {
t.Fatalf("Failed to encode: %v", err)
2018-10-05 17:14:50 +00:00
}
aPrimeEnc, err := proto.Marshal(aPrime)
2018-10-17 06:11:24 +00:00
if err != nil {
t.Fatalf("Failed to encode: %v", err)
}
if !bytes.Equal(aEnc, aPrimeEnc) {
t.Fatalf("Saved attestation and retrieved attestation are not equal: %#x and %#x", aEnc, aPrimeEnc)
2018-10-05 17:14:50 +00:00
}
}
func TestNilAttestation(t *testing.T) {
2018-10-17 06:11:24 +00:00
db := setupDB(t)
defer teardownDB(t, db)
2018-10-05 17:14:50 +00:00
2018-10-17 06:11:24 +00:00
nilHash := [32]byte{}
a, err := db.Attestation(nilHash)
2018-10-05 17:14:50 +00:00
if err != nil {
2018-10-17 06:11:24 +00:00
t.Fatalf("Failed to retrieve nilHash: %v", err)
2018-10-05 17:14:50 +00:00
}
2018-10-17 06:11:24 +00:00
if a != nil {
t.Fatal("Expected nilHash to return no attestation")
2018-10-05 17:14:50 +00:00
}
2018-10-17 06:11:24 +00:00
}
2018-10-05 17:14:50 +00:00
func TestHasAttestation(t *testing.T) {
2018-10-17 06:11:24 +00:00
db := setupDB(t)
defer teardownDB(t, db)
2018-10-05 17:14:50 +00:00
a := &pb.Attestation{
Data: &pb.AttestationData{
Slot: 0,
Shard: 0,
},
}
hash := att.Key(a.GetData())
2018-10-05 17:14:50 +00:00
2018-10-17 06:11:24 +00:00
if db.HasAttestation(hash) {
t.Fatal("Expected HasAttestation to return false")
2018-10-05 17:14:50 +00:00
}
2018-10-17 06:11:24 +00:00
if err := db.SaveAttestation(a); err != nil {
t.Fatalf("Failed to save attestation: %v", err)
}
if !db.HasAttestation(hash) {
t.Fatal("Expected HasAttestation to return true")
2018-10-05 17:14:50 +00:00
}
}