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