From 45c3fc87113aa0dbfeab31928fdcb43870b1fa3a Mon Sep 17 00:00:00 2001 From: josh <josh@elixxir.io> Date: Tue, 5 Apr 2022 15:21:05 -0700 Subject: [PATCH] Add some tests to e2e/ --- e2e/ratchet/partner/manager.go | 5 --- e2e/ratchet/partner/managerID_test.go | 37 +++++++++++++++++++++ e2e/ratchet/partner/manager_test.go | 34 +++++++++++++++++++ e2e/ratchet/ratchet_test.go | 48 +++++++++++++++++++++++++++ e2e/ratchet/storage.go | 1 + 5 files changed, 120 insertions(+), 5 deletions(-) create mode 100644 e2e/ratchet/partner/managerID_test.go diff --git a/e2e/ratchet/partner/manager.go b/e2e/ratchet/partner/manager.go index 9bded0aa5..fe5621e41 100644 --- a/e2e/ratchet/partner/manager.go +++ b/e2e/ratchet/partner/manager.go @@ -263,11 +263,6 @@ func (m *Manager) TriggerNegotiations() []*session.Session { return m.send.TriggerNegotiation() } -// IsTemporary returns if this manager stores to disk or only in ram -func (m *Manager) IsTemporary() bool { - return m.kv.IsMemStore() -} - func (m *Manager) GetMyOriginPrivateKey() *cyclic.Int { return m.originMyPrivKey.DeepCopy() } diff --git a/e2e/ratchet/partner/managerID_test.go b/e2e/ratchet/partner/managerID_test.go new file mode 100644 index 000000000..caa82f81d --- /dev/null +++ b/e2e/ratchet/partner/managerID_test.go @@ -0,0 +1,37 @@ +package partner + +import ( + "gitlab.com/xx_network/primitives/id" + "math/rand" + "testing" +) + +// ManagerIdentity.GetMe unit test +func TestManagerIdentity_GetMe(t *testing.T) { + partnerID := id.NewIdFromUInt(rand.Uint64(), id.User, t) + myId := id.NewIdFromUInt(rand.Uint64(), id.User, t) + + mid := MakeManagerIdentity(partnerID, myId) + + if !myId.Cmp(mid.GetMe()) { + t.Fatalf("GetMe did not retrieve expected data."+ + "\nExpected: %v"+ + "\nReceived: %v", myId, mid.GetMe()) + } + +} + +// ManagerIdentity.GetPartner unit test +func TestManagerIdentity_GetPartner(t *testing.T) { + partnerID := id.NewIdFromUInt(rand.Uint64(), id.User, t) + myId := id.NewIdFromUInt(rand.Uint64(), id.User, t) + + mid := MakeManagerIdentity(partnerID, myId) + + if !partnerID.Cmp(mid.GetPartner()) { + t.Fatalf("GetPartner did not retrieve expected data."+ + "\nExpected: %v"+ + "\nReceived: %v", partnerID, mid.GetPartner()) + } + +} diff --git a/e2e/ratchet/partner/manager_test.go b/e2e/ratchet/partner/manager_test.go index 776f48f70..45a25e9ba 100644 --- a/e2e/ratchet/partner/manager_test.go +++ b/e2e/ratchet/partner/manager_test.go @@ -12,6 +12,7 @@ import ( "encoding/base64" "github.com/cloudflare/circl/dh/sidh" "gitlab.com/elixxir/client/e2e/ratchet/partner/session" + "gitlab.com/elixxir/client/network/message" util "gitlab.com/elixxir/client/storage/utility" dh "gitlab.com/elixxir/crypto/diffieHellman" e2eCrypto "gitlab.com/elixxir/crypto/e2e" @@ -246,6 +247,20 @@ func TestManager_GetPartnerID(t *testing.T) { } } +// Tests happy path of Manager.GetMyID. +func TestManager_GetMyID(t *testing.T) { + myId := id.NewIdFromUInt(rand.Uint64(), id.User, t) + + m := &Manager{myID: myId} + + receivedMyId := m.GetMyID() + + if !myId.Cmp(receivedMyId) { + t.Errorf("GetMyID() returned incorrect partner ID."+ + "\n\texpected: %s\n\treceived: %s", myId, receivedMyId) + } +} + // Tests happy path of Manager.GetSendSession. func TestManager_GetSendSession(t *testing.T) { m, _ := newTestManager(t) @@ -378,3 +393,22 @@ func TestManager_GetRelationshipFingerprint_Consistency(t *testing.T) { // fmt.Printf("\"%s\",\n", fp) // Uncomment to reprint expected values } } + +func TestManager_MakeService(t *testing.T) { + m, _ := newTestManager(t) + tag := "hunter2" + expected := message.Service{ + Identifier: m.GetRelationshipFingerprintBytes(), + Tag: tag, + Metadata: m.partner[:], + } + + received := m.MakeService(tag) + + if !reflect.DeepEqual(expected, received) { + t.Fatalf("MakeService returned unexpected data."+ + "\nExpected: %v"+ + "\nReceived: %v", expected, received) + } + +} diff --git a/e2e/ratchet/ratchet_test.go b/e2e/ratchet/ratchet_test.go index a627f6518..b6b03da10 100644 --- a/e2e/ratchet/ratchet_test.go +++ b/e2e/ratchet/ratchet_test.go @@ -21,6 +21,7 @@ import ( "gitlab.com/xx_network/primitives/id" "math/rand" "reflect" + "sort" "testing" ) @@ -188,6 +189,53 @@ func TestStore_GetPartner(t *testing.T) { } } +// Ratchet.GetAllPartnerIDs unit test. +func TestRatchet_GetAllPartnerIDs(t *testing.T) { + // Setup + numTests := 100 + expectedPartners := make([]*id.ID, 0, numTests) + rng := csprng.NewSystemRNG() + r, _, err := makeTestRatchet() + if err != nil { + t.Fatalf("Setup error: %v", err) + } + + // Generate partners and add them ot the manager + for i := 0; i < numTests; i++ { + partnerID := id.NewIdFromUInt(rand.Uint64(), id.User, t) + partnerPubKey := diffieHellman.GeneratePublicKey(r.defaultDHPrivateKey, r.grp) + p := session.GetDefaultParams() + _, pubSIDHKey := genSidhKeys(rng, sidh.KeyVariantSidhA) + myPrivSIDHKey, _ := genSidhKeys(rng, sidh.KeyVariantSidhB) + _, err := r.AddPartner(r.defaultID, partnerID, r.defaultDHPrivateKey, + partnerPubKey, pubSIDHKey, myPrivSIDHKey, p, p) + if err != nil { + t.Fatalf("AddPartner returned an error: %v", err) + } + + expectedPartners = append(expectedPartners, partnerID) + } + + receivedPartners := r.GetAllPartnerIDs(r.defaultID) + + // Sort these slices as GetAllPartnerIDs iterates over a map, which indices + // at random in Go + sort.SliceStable(receivedPartners, func(i, j int) bool { + return bytes.Compare(receivedPartners[i].Bytes(), receivedPartners[j].Bytes()) == -1 + }) + + sort.SliceStable(expectedPartners, func(i, j int) bool { + return bytes.Compare(expectedPartners[i].Bytes(), expectedPartners[j].Bytes()) == -1 + }) + + if !reflect.DeepEqual(receivedPartners, expectedPartners) { + t.Fatalf("Unexpected data retrieved from GetAllPartnerIDs."+ + "\nExpected: %v"+ + "\nReceived: %v", expectedPartners, receivedPartners) + } + +} + // Tests that Ratchet.GetPartner returns an error for non existent partnerID. func TestStore_GetPartner_Error(t *testing.T) { r, _, err := makeTestRatchet() diff --git a/e2e/ratchet/storage.go b/e2e/ratchet/storage.go index 1b53cb99e..10aaf8d4d 100644 --- a/e2e/ratchet/storage.go +++ b/e2e/ratchet/storage.go @@ -104,6 +104,7 @@ func (r *Ratchet) marshal() ([]byte, error) { } // In the event an old structure was loaded, unmarshal it and upgrade it +// todo: test this with some old kv data func (r *Ratchet) unmarshalOld(b []byte) error { var contacts []id.ID -- GitLab