From 617d6485b0e367a29ae4db0bcdfb22560d30b994 Mon Sep 17 00:00:00 2001 From: jbhusson <jonah@elixxir.io> Date: Wed, 20 Apr 2022 12:49:08 -0400 Subject: [PATCH] Fixes to user discovery package --- e2e/ratchet/partner/session/testUtils.go | 2 +- go.mod | 4 +- storage/clientVersion/store_test.go | 18 ++++----- storage/session.go | 2 +- storage/user/cryptographic_test.go | 18 ++++----- storage/user/registation_test.go | 10 ++--- storage/user/user_test.go | 22 +--------- storage/user/username_test.go | 6 +-- storage/utility/blockStore_test.go | 20 +++++----- storage/utility/bucketParams_test.go | 4 +- storage/utility/dh_test.go | 6 +-- storage/utility/group_test.go | 4 +- storage/utility/messageBuffer_test.go | 18 ++++----- storage/utility/multiStateVector_test.go | 44 ++++++++++---------- storage/utility/sidh_test.go | 4 +- storage/utility/stateVector_test.go | 14 +++---- storage/versioned/kv.go | 2 +- storage/versioned/kv_test.go | 51 ++++++++++++++---------- ud/addFact_test.go | 2 +- ud/confirmFact_test.go | 2 +- ud/manager_test.go | 2 +- ud/register_test.go | 2 +- ud/search_test.go | 31 ++++++++++++-- ud/store/facts_test.go | 20 +++++----- ud/store/store_test.go | 8 ++-- ud/utils_test.go | 10 ++--- 26 files changed, 172 insertions(+), 154 deletions(-) diff --git a/e2e/ratchet/partner/session/testUtils.go b/e2e/ratchet/partner/session/testUtils.go index 52c9e8cb8..10ee5bdf7 100644 --- a/e2e/ratchet/partner/session/testUtils.go +++ b/e2e/ratchet/partner/session/testUtils.go @@ -79,7 +79,7 @@ func makeTestSession() (*Session, *versioned.KV) { baseKey := GenerateE2ESessionBaseKey(myPrivKey, partnerPubKey, grp, mySIDHPrivKey, partnerSIDHPubKey) - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) sid := GetSessionIDFromBaseKey(baseKey) s := &Session{ diff --git a/go.mod b/go.mod index a05008896..6a99bc114 100644 --- a/go.mod +++ b/go.mod @@ -13,9 +13,9 @@ require ( github.com/spf13/viper v1.7.1 gitlab.com/elixxir/bloomfilter v0.0.0-20200930191214-10e9ac31b228 gitlab.com/elixxir/comms v0.0.4-0.20220323190139-9ed75f3a8b2c - gitlab.com/elixxir/crypto v0.0.7-0.20220414225314-6f3eb9c073a5 + gitlab.com/elixxir/crypto v0.0.7-0.20220415180223-ec8d560270a1 gitlab.com/elixxir/ekv v0.1.7 - gitlab.com/elixxir/primitives v0.0.3-0.20220323183834-b98f255361b8 + gitlab.com/elixxir/primitives v0.0.3-0.20220330212736-cce83b5f948f gitlab.com/xx_network/comms v0.0.4-0.20220315161313-76acb14429ac gitlab.com/xx_network/crypto v0.0.5-0.20220317171841-084640957d71 gitlab.com/xx_network/primitives v0.0.4-0.20220324193139-b292d1ae6e7e diff --git a/storage/clientVersion/store_test.go b/storage/clientVersion/store_test.go index c9f5ab78a..0e8cae86f 100644 --- a/storage/clientVersion/store_test.go +++ b/storage/clientVersion/store_test.go @@ -19,7 +19,7 @@ import ( // Happy path. func TestNewStore(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) expected := &Store{ version: version.New(42, 43, "44"), kv: kv.Prefix(prefix), @@ -38,7 +38,7 @@ func TestNewStore(t *testing.T) { // Happy path. func TestLoadStore(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) ver := version.New(1, 2, "3A") expected := &Store{ @@ -64,7 +64,7 @@ func TestLoadStore(t *testing.T) { // Error path: an error is returned when the loaded Store has an invalid version // that fails to be parsed. func TestLoadStore_ParseVersionError(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) obj := versioned.Object{ Version: storeVersion, Timestamp: netTime.Now(), @@ -85,7 +85,7 @@ func TestLoadStore_ParseVersionError(t *testing.T) { // Happy path. func TestStore_Get(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) expected := version.New(1, 2, "3A") s := &Store{ @@ -102,7 +102,7 @@ func TestStore_Get(t *testing.T) { // Happy path. func TestStore_CheckUpdateRequired(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) storedVersion := version.New(1, 2, "3") newVersion := version.New(2, 3, "4") s, err := NewStore(storedVersion, kv) @@ -129,7 +129,7 @@ func TestStore_CheckUpdateRequired(t *testing.T) { // Happy path: the new version is equal to the stored version. func TestStore_CheckUpdateRequired_EqualVersions(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) storedVersion := version.New(2, 3, "3") newVersion := version.New(2, 3, "4") s, err := NewStore(storedVersion, kv) @@ -156,7 +156,7 @@ func TestStore_CheckUpdateRequired_EqualVersions(t *testing.T) { // Error path: new version is older than stored version. func TestStore_CheckUpdateRequired_NewVersionTooOldError(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) storedVersion := version.New(2, 3, "4") newVersion := version.New(1, 2, "3") s, err := NewStore(storedVersion, kv) @@ -184,7 +184,7 @@ func TestStore_CheckUpdateRequired_NewVersionTooOldError(t *testing.T) { // Happy path. func TestStore_update(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) ver1 := version.New(1, 2, "3A") ver2 := version.New(1, 5, "patch5") @@ -206,7 +206,7 @@ func TestStore_update(t *testing.T) { // Happy path. func TestStore_save(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) ver := version.New(1, 2, "3A") s := &Store{ diff --git a/storage/session.go b/storage/session.go index e9bee8ae3..71a86defe 100644 --- a/storage/session.go +++ b/storage/session.go @@ -226,7 +226,7 @@ func InitTestingSession(i interface{}) Session { } privKey, _ := rsa.LoadPrivateKeyFromPem([]byte("-----BEGIN PRIVATE KEY-----\n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\nOaRA5ZbdE7g7vxKRV36jT3wvD7W+\n-----END PRIVATE KEY-----\n")) - store := make(ekv.Memstore) + store := ekv.MakeMemstore() kv := versioned.NewKV(store) s := &session{kv: kv} uid := id.NewIdFromString("zezima", id.User, i) diff --git a/storage/user/cryptographic_test.go b/storage/user/cryptographic_test.go index 0d2fab208..1096ccf68 100644 --- a/storage/user/cryptographic_test.go +++ b/storage/user/cryptographic_test.go @@ -19,7 +19,7 @@ import ( // Test for NewCryptographicIdentity function func TestNewCryptographicIdentity(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) uid := id.NewIdFromString("zezima", id.User, t) salt := []byte("salt") _ = newCryptographicIdentity(uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false, kv) @@ -32,7 +32,7 @@ func TestNewCryptographicIdentity(t *testing.T) { // Test loading cryptographic identity from KV store func TestLoadCryptographicIdentity(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) uid := id.NewIdFromString("zezima", id.User, t) salt := []byte("salt") ci := newCryptographicIdentity(uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false, kv) @@ -53,7 +53,7 @@ func TestLoadCryptographicIdentity(t *testing.T) { // Happy path for GetReceptionRSA function func TestCryptographicIdentity_GetReceptionRSA(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) uid := id.NewIdFromString("zezima", id.User, t) pk1, err := rsa.GenerateKey(rand.Reader, 64) if err != nil { @@ -72,7 +72,7 @@ func TestCryptographicIdentity_GetReceptionRSA(t *testing.T) { // Happy path for GetTransmissionRSA function func TestCryptographicIdentity_GetTransmissionRSA(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) uid := id.NewIdFromString("zezima", id.User, t) pk1, err := rsa.GenerateKey(rand.Reader, 64) if err != nil { @@ -91,7 +91,7 @@ func TestCryptographicIdentity_GetTransmissionRSA(t *testing.T) { // Happy path for GetSalt function func TestCryptographicIdentity_GetTransmissionSalt(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) uid := id.NewIdFromString("zezima", id.User, t) ts := []byte("transmission salt") rs := []byte("reception salt") @@ -103,7 +103,7 @@ func TestCryptographicIdentity_GetTransmissionSalt(t *testing.T) { // Happy path for GetSalt function func TestCryptographicIdentity_GetReceptionSalt(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) uid := id.NewIdFromString("zezima", id.User, t) ts := []byte("transmission salt") rs := []byte("reception salt") @@ -115,7 +115,7 @@ func TestCryptographicIdentity_GetReceptionSalt(t *testing.T) { // Happy path for GetUserID function func TestCryptographicIdentity_GetTransmissionID(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) rid := id.NewIdFromString("zezima", id.User, t) tid := id.NewIdFromString("jakexx360", id.User, t) salt := []byte("salt") @@ -127,7 +127,7 @@ func TestCryptographicIdentity_GetTransmissionID(t *testing.T) { // Happy path for GetUserID function func TestCryptographicIdentity_GetReceptionID(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) rid := id.NewIdFromString("zezima", id.User, t) tid := id.NewIdFromString("jakexx360", id.User, t) salt := []byte("salt") @@ -139,7 +139,7 @@ func TestCryptographicIdentity_GetReceptionID(t *testing.T) { // Happy path for IsPrecanned functions func TestCryptographicIdentity_IsPrecanned(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) uid := id.NewIdFromString("zezima", id.User, t) salt := []byte("salt") ci := newCryptographicIdentity(uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, true, kv) diff --git a/storage/user/registation_test.go b/storage/user/registation_test.go index 31c6d3d1e..cec369ea4 100644 --- a/storage/user/registation_test.go +++ b/storage/user/registation_test.go @@ -21,7 +21,7 @@ import ( // Test User GetRegistrationValidationSignature function func TestUser_GetRegistrationValidationSignature(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) uid := id.NewIdFromString("test", id.User, t) salt := []byte("salt") u, err := NewUser(kv, uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false) @@ -56,7 +56,7 @@ func TestUser_GetRegistrationValidationSignature(t *testing.T) { // Test SetRegistrationValidationSignature setter func TestUser_SetRegistrationValidationSignature(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) uid := id.NewIdFromString("test", id.User, t) salt := []byte("salt") u, err := NewUser(kv, uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false) @@ -99,7 +99,7 @@ func TestUser_SetRegistrationValidationSignature(t *testing.T) { // Test loading registrationValidationSignature from the KV store func TestUser_loadRegistrationValidationSignature(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) uid := id.NewIdFromString("test", id.User, t) salt := []byte("salt") u, err := NewUser(kv, uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false) @@ -142,7 +142,7 @@ func TestUser_loadRegistrationValidationSignature(t *testing.T) { // Test User's getter/setter functions for TimeStamp func TestUser_GetRegistrationTimestamp(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) uid := id.NewIdFromString("test", id.User, t) salt := []byte("salt") u, err := NewUser(kv, uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false) @@ -191,7 +191,7 @@ func TestUser_GetRegistrationTimestamp(t *testing.T) { // Test loading registrationTimestamp from the KV store func TestUser_loadRegistrationTimestamp(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) uid := id.NewIdFromString("test", id.User, t) salt := []byte("salt") u, err := NewUser(kv, uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false) diff --git a/storage/user/user_test.go b/storage/user/user_test.go index 0fd3d8d18..01a93088c 100644 --- a/storage/user/user_test.go +++ b/storage/user/user_test.go @@ -8,7 +8,6 @@ package user import ( - "bytes" "gitlab.com/elixxir/client/storage/versioned" "gitlab.com/elixxir/ekv" "gitlab.com/xx_network/crypto/signature/rsa" @@ -18,7 +17,7 @@ import ( // Test loading user from a KV store func TestLoadUser(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) _, err := LoadUser(kv) if err == nil { @@ -41,7 +40,7 @@ func TestLoadUser(t *testing.T) { // Test NewUser function func TestNewUser(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) uid := id.NewIdFromString("test", id.User, t) salt := []byte("salt") u, err := NewUser(kv, uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false) @@ -49,20 +48,3 @@ func TestNewUser(t *testing.T) { t.Errorf("Failed to create new user: %+v", err) } } - -// Test GetCryptographicIdentity function from user -func TestUser_GetCryptographicIdentity(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) - uid := id.NewIdFromString("test", id.User, t) - rsalt := []byte("reception salt") - tsalt := []byte("transmission salt") - u, err := NewUser(kv, uid, uid, tsalt, rsalt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false) - if err != nil || u == nil { - t.Errorf("Failed to create new user: %+v", err) - } - - ci := u.GetCryptographicIdentity() - if bytes.Compare(ci.transmissionSalt, tsalt) != 0 { - t.Errorf("Cryptographic Identity not retrieved properly") - } -} diff --git a/storage/user/username_test.go b/storage/user/username_test.go index 7571d3804..f4a851145 100644 --- a/storage/user/username_test.go +++ b/storage/user/username_test.go @@ -18,7 +18,7 @@ import ( // Test normal function and errors for User's SetUsername function func TestUser_SetUsername(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) tid := id.NewIdFromString("trans", id.User, t) rid := id.NewIdFromString("recv", id.User, t) tsalt := []byte("tsalt") @@ -52,7 +52,7 @@ func TestUser_SetUsername(t *testing.T) { // Test functionality of User's GetUsername function func TestUser_GetUsername(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) tid := id.NewIdFromString("trans", id.User, t) rid := id.NewIdFromString("recv", id.User, t) tsalt := []byte("tsalt") @@ -80,7 +80,7 @@ func TestUser_GetUsername(t *testing.T) { // Test the loadUsername helper function func TestUser_loadUsername(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) tid := id.NewIdFromString("trans", id.User, t) rid := id.NewIdFromString("recv", id.User, t) tsalt := []byte("tsalt") diff --git a/storage/utility/blockStore_test.go b/storage/utility/blockStore_test.go index c9e2fb56d..3f1341785 100644 --- a/storage/utility/blockStore_test.go +++ b/storage/utility/blockStore_test.go @@ -33,7 +33,7 @@ func TestNewBlockStore(t *testing.T) { blockSize: 20, firstSaved: 0, lastSaved: 0, - kv: versioned.NewKV(make(ekv.Memstore)), + kv: versioned.NewKV(ekv.MakeMemstore()), } bs, err := NewBlockStore(expected.numBlocks, expected.blockSize, expected.kv) @@ -75,7 +75,7 @@ func TestBlockStore_Store_LoadBlockStore(t *testing.T) { expected := make([][]byte, len(iter[v.dataCutIndex:])) copy(expected, iter[v.dataCutIndex:]) - bs, err := NewBlockStore(v.numBlocks, v.blockSize, versioned.NewKV(make(ekv.Memstore))) + bs, err := NewBlockStore(v.numBlocks, v.blockSize, versioned.NewKV(ekv.MakeMemstore())) if err != nil { t.Errorf("Failed to create new BlockStore (%d): %+v", i, err) } @@ -125,7 +125,7 @@ func TestBlockStore_saveBlock_loadBlock(t *testing.T) { blockSize: 20, firstSaved: 0, lastSaved: 0, - kv: versioned.NewKV(make(ekv.Memstore)), + kv: versioned.NewKV(ekv.MakeMemstore()), } for i := range bs.block { @@ -159,7 +159,7 @@ func TestBlockStore_saveBlock_SaveError(t *testing.T) { blockSize: 20, firstSaved: 0, lastSaved: 0, - kv: versioned.NewKV(make(ekv.Memstore)), + kv: versioned.NewKV(ekv.MakeMemstore()), } for i := range bs.block { @@ -187,7 +187,7 @@ func TestBlockStore_saveBlock_SaveError(t *testing.T) { // Error path: loading of nonexistent key returns an error. func TestBlockStore_loadBlock_LoadStorageError(t *testing.T) { expectedErr := strings.SplitN(bKvLoadErr, "%", 2)[0] - bs := &BlockStore{kv: versioned.NewKV(make(ekv.Memstore))} + bs := &BlockStore{kv: versioned.NewKV(ekv.MakeMemstore())} _, err := bs.loadBlock(0) if err == nil || !strings.Contains(err.Error(), expectedErr) { t.Errorf("loadBlock() did not return the expected error."+ @@ -197,7 +197,7 @@ func TestBlockStore_loadBlock_LoadStorageError(t *testing.T) { // Error path: unmarshalling of invalid data fails. func TestBlockStore_loadBlock_UnmarshalError(t *testing.T) { - bs := &BlockStore{kv: versioned.NewKV(make(ekv.Memstore))} + bs := &BlockStore{kv: versioned.NewKV(ekv.MakeMemstore())} expectedErr := strings.SplitN(bJsonUnmarshalErr, "%", 2)[0] // Construct object with invalid data @@ -228,7 +228,7 @@ func TestBlockStore_pruneBlocks(t *testing.T) { blockSize: 32, firstSaved: 0, lastSaved: 0, - kv: versioned.NewKV(make(ekv.Memstore)), + kv: versioned.NewKV(ekv.MakeMemstore()), } // Save blocks to storage @@ -293,7 +293,7 @@ func TestBlockStore_getKey_Consistency(t *testing.T) { func TestBlockStore_save_load(t *testing.T) { bs := &BlockStore{ numBlocks: 5, blockSize: 6, firstSaved: 7, lastSaved: 8, - kv: versioned.NewKV(make(ekv.Memstore)), + kv: versioned.NewKV(ekv.MakeMemstore()), } err := bs.save() @@ -317,7 +317,7 @@ func TestBlockStore_save_load(t *testing.T) { func TestBlockStore_load_KvGetError(t *testing.T) { expectedErr := strings.SplitN(bsKvLoadErr, "%", 2)[0] - testBS := &BlockStore{kv: versioned.NewKV(make(ekv.Memstore))} + testBS := &BlockStore{kv: versioned.NewKV(ekv.MakeMemstore())} err := testBS.load() if err == nil || !strings.Contains(err.Error(), expectedErr) { t.Errorf("load() did not return an error for a nonexistent item in storage."+ @@ -328,7 +328,7 @@ func TestBlockStore_load_KvGetError(t *testing.T) { // Error path: unmarshalling of invalid data fails. func TestBlockStore_load_UnmarshalError(t *testing.T) { expectedErr := strings.SplitN(bsKvUnmarshalErr, "%", 2)[0] - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) // Construct invalid versioning object obj := versioned.Object{ diff --git a/storage/utility/bucketParams_test.go b/storage/utility/bucketParams_test.go index c2ce1bdbf..d908ac99a 100644 --- a/storage/utility/bucketParams_test.go +++ b/storage/utility/bucketParams_test.go @@ -18,7 +18,7 @@ import ( // todo: write tests func TestNewBucketParamsStore(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) capacity, leakedTokens, leakDuration := uint32(10), uint32(11), time.Duration(12) bps, err := NewBucketParamsStore(capacity, leakedTokens, leakDuration, kv) if err != nil { @@ -50,7 +50,7 @@ func TestNewBucketParamsStore(t *testing.T) { } func TestLoadBucketParamsStore(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) capacity, leakedTokens, leakDuration := uint32(10), uint32(11), time.Duration(12) bps, err := NewBucketParamsStore(capacity, leakedTokens, leakDuration, kv) if err != nil { diff --git a/storage/utility/dh_test.go b/storage/utility/dh_test.go index 36fb3c573..bea2f2448 100644 --- a/storage/utility/dh_test.go +++ b/storage/utility/dh_test.go @@ -15,7 +15,7 @@ import ( // Unit test for StoreCyclicKey func TestStoreCyclicKey(t *testing.T) { - kv := make(ekv.Memstore) + kv := ekv.MakeMemstore() vkv := versioned.NewKV(kv) grp := getTestGroup() x := grp.NewInt(77) @@ -28,7 +28,7 @@ func TestStoreCyclicKey(t *testing.T) { // Unit test for LoadCyclicKey func TestLoadCyclicKey(t *testing.T) { - kv := make(ekv.Memstore) + kv := ekv.MakeMemstore() vkv := versioned.NewKV(kv) grp := getTestGroup() x := grp.NewInt(77) @@ -50,7 +50,7 @@ func TestLoadCyclicKey(t *testing.T) { // Unit test for DeleteCyclicKey func TestDeleteCyclicKey(t *testing.T) { - kv := make(ekv.Memstore) + kv := ekv.MakeMemstore() vkv := versioned.NewKV(kv) grp := getTestGroup() x := grp.NewInt(77) diff --git a/storage/utility/group_test.go b/storage/utility/group_test.go index ef8ed3ea2..02e6504be 100644 --- a/storage/utility/group_test.go +++ b/storage/utility/group_test.go @@ -17,7 +17,7 @@ import ( // Unit test for StoreGroup func TestStoreGroup(t *testing.T) { - kv := make(ekv.Memstore) + kv := ekv.MakeMemstore() vkv := versioned.NewKV(kv) grp := getTestGroup() err := StoreGroup(vkv, grp, "testKey") @@ -28,7 +28,7 @@ func TestStoreGroup(t *testing.T) { // Unit test for LoadGroup func TestLoadGroup(t *testing.T) { - kv := make(ekv.Memstore) + kv := ekv.MakeMemstore() vkv := versioned.NewKV(kv) grp := getTestGroup() diff --git a/storage/utility/messageBuffer_test.go b/storage/utility/messageBuffer_test.go index e9d1a841b..fc7f39a7c 100644 --- a/storage/utility/messageBuffer_test.go +++ b/storage/utility/messageBuffer_test.go @@ -70,7 +70,7 @@ func TestNewMessageBuffer(t *testing.T) { messages: make(map[MessageHash]struct{}), processingMessages: make(map[MessageHash]struct{}), handler: th, - kv: versioned.NewKV(make(ekv.Memstore)), + kv: versioned.NewKV(ekv.MakeMemstore()), key: "testKey", } @@ -94,7 +94,7 @@ func TestLoadMessageBuffer(t *testing.T) { messages: make(map[MessageHash]struct{}), processingMessages: make(map[MessageHash]struct{}), handler: th, - kv: versioned.NewKV(make(ekv.Memstore)), + kv: versioned.NewKV(ekv.MakeMemstore()), key: "testKey", } _ = addTestMessages(expectedMB, 20) @@ -124,7 +124,7 @@ func TestLoadMessageBuffer(t *testing.T) { // Tests happy path of save() with a new empty MessageBuffer. func TestMessageBuffer_save_NewMB(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) key := "testKey" mb, err := NewMessageBuffer(kv, newTestHandler(), key) @@ -154,7 +154,7 @@ func TestMessageBuffer_save_NewMB(t *testing.T) { // Tests happy path of save(). func TestMessageBuffer_save(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) key := "testKey" mb, err := NewMessageBuffer(kv, newTestHandler(), key) if err != nil { @@ -186,7 +186,7 @@ func TestMessageBuffer_save(t *testing.T) { // Tests happy path of MessageBuffer.Add(). func TestMessageBuffer_Add(t *testing.T) { // Create new MessageBuffer and fill with messages - testMB, err := NewMessageBuffer(versioned.NewKV(make(ekv.Memstore)), newTestHandler(), "testKey") + testMB, err := NewMessageBuffer(versioned.NewKV(ekv.MakeMemstore()), newTestHandler(), "testKey") if err != nil { t.Fatalf("Failed to create new MessageBuffer: %v", err) } @@ -216,7 +216,7 @@ func TestMessageBuffer_Add(t *testing.T) { // Tests happy path of MessageBuffer.Next(). func TestMessageBuffer_Next(t *testing.T) { // Create new MessageBuffer and fill with messages - testMB, err := NewMessageBuffer(versioned.NewKV(make(ekv.Memstore)), newTestHandler(), "testKey") + testMB, err := NewMessageBuffer(versioned.NewKV(ekv.MakeMemstore()), newTestHandler(), "testKey") if err != nil { t.Fatalf("Failed to create new MessageBuffer: %v", err) } @@ -246,7 +246,7 @@ func TestMessageBuffer_Next(t *testing.T) { func TestMessageBuffer_InvalidNext(t *testing.T) { // Create new MessageBuffer and fill with messages - testMB, err := NewMessageBuffer(versioned.NewKV(make(ekv.Memstore)), newTestHandler(), "testKey") + testMB, err := NewMessageBuffer(versioned.NewKV(ekv.MakeMemstore()), newTestHandler(), "testKey") if err != nil { t.Fatalf("Failed to create new MessageBuffer: %v", err) } @@ -267,7 +267,7 @@ func TestMessageBuffer_InvalidNext(t *testing.T) { func TestMessageBuffer_Succeeded(t *testing.T) { th := newTestHandler() // Create new MessageBuffer and fill with message - testMB, err := NewMessageBuffer(versioned.NewKV(make(ekv.Memstore)), th, "testKey") + testMB, err := NewMessageBuffer(versioned.NewKV(ekv.MakeMemstore()), th, "testKey") if err != nil { t.Fatalf("Failed to create new MessageBuffer: %v", err) } @@ -293,7 +293,7 @@ func TestMessageBuffer_Succeeded(t *testing.T) { func TestMessageBuffer_Failed(t *testing.T) { th := newTestHandler() // Create new MessageBuffer and fill with message - testMB, err := NewMessageBuffer(versioned.NewKV(make(ekv.Memstore)), th, "testKey") + testMB, err := NewMessageBuffer(versioned.NewKV(ekv.MakeMemstore()), th, "testKey") if err != nil { t.Fatalf("Failed to create new MessageBuffer: %v", err) } diff --git a/storage/utility/multiStateVector_test.go b/storage/utility/multiStateVector_test.go index 83527da50..38085804b 100644 --- a/storage/utility/multiStateVector_test.go +++ b/storage/utility/multiStateVector_test.go @@ -25,7 +25,7 @@ import ( // Tests that NewMultiStateVector returns a new MultiStateVector with the // expected values. func TestNewMultiStateVector(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) key := "testKey" expected := &MultiStateVector{ numKeys: 189, @@ -98,7 +98,7 @@ func TestNewMultiStateVector_StateMapError(t *testing.T) { // random states are generated and manually inserted into the vector and then // each key is checked for the expected vector func TestMultiStateVector_Get(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector(155, 5, nil, "", kv) if err != nil { t.Errorf("Failed to create new MultiStateVector: %+v", err) @@ -164,7 +164,7 @@ func TestMultiStateVector_Get(t *testing.T) { // Error path: tests that MultiStateVector.get returns the expected error when // the key number is greater than the max key number. func TestMultiStateVector_get_KeyNumMaxError(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector(155, 5, nil, "", kv) if err != nil { t.Errorf("Failed to create new MultiStateVector: %+v", err) @@ -190,7 +190,7 @@ func TestMultiStateVector_Set(t *testing.T) { {false, false, true, false, true}, {false, false, false, false, false}, } - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector(155, 5, stateMap, "", kv) if err != nil { t.Errorf("Failed to create new MultiStateVector: %+v", err) @@ -243,7 +243,7 @@ func TestMultiStateVector_Set(t *testing.T) { // Error path: tests that MultiStateVector.Set returns the expected error when // the key number is greater than the last key number. func TestMultiStateVector_Set_KeyNumMaxError(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector(155, 5, nil, "", kv) if err != nil { t.Errorf("Failed to create new MultiStateVector: %+v", err) @@ -262,7 +262,7 @@ func TestMultiStateVector_Set_KeyNumMaxError(t *testing.T) { // Tests that MultiStateVector.SetMany func TestMultiStateVector_SetMany(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector(155, 5, nil, "", kv) if err != nil { t.Errorf("Failed to create new MultiStateVector: %+v", err) @@ -301,7 +301,7 @@ func TestMultiStateVector_SetMany(t *testing.T) { // Error path: tests that MultiStateVector.SetMany returns the expected error // when one of the keys is greater than the last key number. func TestMultiStateVector_SetMany_KeyNumMaxError(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector(155, 5, nil, "", kv) if err != nil { t.Errorf("Failed to create new MultiStateVector: %+v", err) @@ -321,7 +321,7 @@ func TestMultiStateVector_SetMany_KeyNumMaxError(t *testing.T) { // Error path: tests that MultiStateVector.set returns the expected error when // the key number is greater than the last key number. func TestMultiStateVector_set_KeyNumMaxError(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector(155, 5, nil, "", kv) if err != nil { t.Errorf("Failed to create new MultiStateVector: %+v", err) @@ -340,7 +340,7 @@ func TestMultiStateVector_set_KeyNumMaxError(t *testing.T) { // Error path: tests that MultiStateVector.set returns the expected error when // the given state is greater than the last state. func TestMultiStateVector_set_NewStateMaxError(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector(155, 5, nil, "", kv) if err != nil { t.Errorf("Failed to create new MultiStateVector: %+v", err) @@ -359,7 +359,7 @@ func TestMultiStateVector_set_NewStateMaxError(t *testing.T) { // Error path: tests that MultiStateVector.set returns the expected error when // the state read from the vector is greater than the last state. func TestMultiStateVector_set_OldStateMaxError(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector(155, 5, nil, "", kv) if err != nil { t.Errorf("Failed to create new MultiStateVector: %+v", err) @@ -381,7 +381,7 @@ func TestMultiStateVector_set_OldStateMaxError(t *testing.T) { // the state change is not allowed by the state map. func TestMultiStateVector_set_StateChangeError(t *testing.T) { stateMap := [][]bool{{true, false}, {true, true}} - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector(155, 2, stateMap, "", kv) if err != nil { t.Errorf("Failed to create new MultiStateVector: %+v", err) @@ -401,7 +401,7 @@ func TestMultiStateVector_set_StateChangeError(t *testing.T) { // Tests that MultiStateVector.GetNumKeys returns the expected number of keys. func TestMultiStateVector_GetNumKeys(t *testing.T) { numKeys := uint16(155) - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector(numKeys, 5, nil, "", kv) if err != nil { t.Errorf("Failed to create new MultiStateVector: %+v", err) @@ -416,7 +416,7 @@ func TestMultiStateVector_GetNumKeys(t *testing.T) { // Tests that MultiStateVector.GetCount returns the correct count for each state // after each key has been set to a random state. func TestMultiStateVector_GetCount(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector( 156, 5, nil, "TestMultiStateVector_GetCount", kv) if err != nil { @@ -452,7 +452,7 @@ func TestMultiStateVector_GetCount(t *testing.T) { // Error path: tests that MultiStateVector.GetCount returns the expected error // when the given state is greater than the last state. func TestMultiStateVector_GetCount_NewStateMaxError(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector(155, 5, nil, "", kv) if err != nil { t.Errorf("Failed to create new MultiStateVector: %+v", err) @@ -471,7 +471,7 @@ func TestMultiStateVector_GetCount_NewStateMaxError(t *testing.T) { // Tests that MultiStateVector.GetKeys returns the correct list of keys for each // state after each key has been set to a random state. func TestMultiStateVector_GetKeys(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector( 156, 5, nil, "TestMultiStateVector_GetKeys", kv) if err != nil { @@ -507,7 +507,7 @@ func TestMultiStateVector_GetKeys(t *testing.T) { // Error path: tests that MultiStateVector.GetKeys returns the expected error // when the given state is greater than the last state. func TestMultiStateVector_GetKeys_NewStateMaxError(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector(155, 5, nil, "", kv) if err != nil { t.Errorf("Failed to create new MultiStateVector: %+v", err) @@ -533,7 +533,7 @@ func TestMultiStateVector_DeepCopy(t *testing.T) { {false, false, true, false, true}, {false, false, false, false, false}, } - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector(155, 5, stateMap, "", kv) if err != nil { t.Errorf("Failed to create new MultiStateVector: %+v", err) @@ -597,7 +597,7 @@ func TestMultiStateVector_DeepCopy(t *testing.T) { // Tests that MultiStateVector.DeepCopy is able to make the expected copy when // the state map is nil. func TestMultiStateVector_DeepCopy_NilStateMap(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector(155, 5, nil, "", kv) if err != nil { t.Errorf("Failed to create new MultiStateVector: %+v", err) @@ -871,7 +871,7 @@ func TestLoadMultiStateVector(t *testing.T) { // no object is saved in storage. func TestLoadMultiStateVector_GetFromStorageError(t *testing.T) { key := "TestLoadMultiStateVector_GetFromStorageError" - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) expectedErr := strings.Split(loadGetMsvErr, "%")[0] _, err := LoadMultiStateVector(nil, key, kv) @@ -885,7 +885,7 @@ func TestLoadMultiStateVector_GetFromStorageError(t *testing.T) { // Error path: tests that LoadMultiStateVector returns the expected error when // the data in storage cannot be unmarshalled. func TestLoadMultiStateVector_UnmarshalError(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) key := "TestLoadMultiStateVector_MarshalError" expectedErr := strings.Split(loadUnmarshalMsvErr, "%")[0] @@ -920,7 +920,7 @@ func TestMultiStateVector_save(t *testing.T) { vect: []uint64{0, 1, 2}, stateUseCount: []uint16{5, 12, 104, 0, 4000}, key: makeStateVectorKey("TestMultiStateVector_save"), - kv: versioned.NewKV(make(ekv.Memstore)), + kv: versioned.NewKV(ekv.MakeMemstore()), } expectedData, err := msv.marshal() @@ -1026,7 +1026,7 @@ func Test_makeMultiStateVectorKey(t *testing.T) { // random state. func newTestFilledMSV(numKeys uint16, numStates uint8, stateMap [][]bool, key string, t *testing.T) (*MultiStateVector, *versioned.KV) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) msv, err := NewMultiStateVector(numKeys, numStates, stateMap, key, kv) if err != nil { diff --git a/storage/utility/sidh_test.go b/storage/utility/sidh_test.go index 34ab3c43c..d547011d3 100644 --- a/storage/utility/sidh_test.go +++ b/storage/utility/sidh_test.go @@ -19,7 +19,7 @@ import ( // TestStoreLoadDeleteSIDHPublicKey tests the load/store/delete functions // for SIDH Public Keys func TestStoreLoadDeleteSIDHPublicKey(t *testing.T) { - kv := make(ekv.Memstore) + kv := ekv.MakeMemstore() vkv := versioned.NewKV(kv) rng := fastRNG.NewStreamGenerator(1, 3, csprng.NewSystemRNG) myRng := rng.GetStream() @@ -85,7 +85,7 @@ func TestStoreLoadDeleteSIDHPublicKey(t *testing.T) { // TestStoreLoadDeleteSIDHPublicKey tests the load/store/delete functions // for SIDH Private Keys func TestStoreLoadDeleteSIDHPrivateKey(t *testing.T) { - kv := make(ekv.Memstore) + kv := ekv.MakeMemstore() vkv := versioned.NewKV(kv) rng := fastRNG.NewStreamGenerator(1, 3, csprng.NewSystemRNG) myRng := rng.GetStream() diff --git a/storage/utility/stateVector_test.go b/storage/utility/stateVector_test.go index 2d537ef61..4b2188b25 100644 --- a/storage/utility/stateVector_test.go +++ b/storage/utility/stateVector_test.go @@ -23,7 +23,7 @@ import ( // Tests that NewStateVector creates the expected new StateVector and that it is // saved to storage. func TestNewStateVector(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) key := "myTestKey" numKeys := uint32(275) expected := &StateVector{ @@ -559,7 +559,7 @@ func TestLoadStateVector(t *testing.T) { // original. func TestLoadStateVector_GetError(t *testing.T) { key := "StateVectorLoadStateVector" - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) expectedErr := "object not found" _, err := LoadStateVector(kv, key) @@ -574,7 +574,7 @@ func TestLoadStateVector_GetError(t *testing.T) { // original. func TestLoadStateVector_UnmarshalError(t *testing.T) { key := "StateVectorLoadStateVector" - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) // Save invalid StateVector to storage obj := versioned.Object{ @@ -606,7 +606,7 @@ func TestStateVector_save(t *testing.T) { numKeys: 1000, numAvailable: 1000, key: makeStateVectorKey(key), - kv: versioned.NewKV(make(ekv.Memstore)), + kv: versioned.NewKV(ekv.MakeMemstore()), } expectedData, err := sv.marshal() if err != nil { @@ -717,7 +717,7 @@ func TestStateVector_SaveTEST(t *testing.T) { numKeys: 1000, numAvailable: 1000, key: makeStateVectorKey(key), - kv: versioned.NewKV(make(ekv.Memstore)), + kv: versioned.NewKV(ekv.MakeMemstore()), } expectedData, err := sv.marshal() if err != nil { @@ -853,7 +853,7 @@ func TestStateVector_SetNumAvailableTEST_InvalidInterfaceError(t *testing.T) { func TestStateVector_SetKvTEST(t *testing.T) { sv := newTestStateVector("SetKvTEST", 1000, t) - kv := versioned.NewKV(make(ekv.Memstore)).Prefix("NewKV") + kv := versioned.NewKV(ekv.MakeMemstore()).Prefix("NewKV") sv.SetKvTEST(kv, t) if sv.kv != kv { @@ -881,7 +881,7 @@ func TestStateVector_SetKvTEST_InvalidInterfaceError(t *testing.T) { // newTestStateVector produces a new StateVector using the specified number of // keys and key string for testing. func newTestStateVector(key string, numKeys uint32, t *testing.T) *StateVector { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) sv, err := NewStateVector(kv, key, numKeys) if err != nil { diff --git a/storage/versioned/kv.go b/storage/versioned/kv.go index fe7e8cd6a..2b8b7ae21 100644 --- a/storage/versioned/kv.go +++ b/storage/versioned/kv.go @@ -152,7 +152,7 @@ func (v *KV) Prefix(prefix string) *KV { } func (v *KV) IsMemStore() bool { - _, success := v.r.data.(ekv.Memstore) + _, success := v.r.data.(*ekv.Memstore) return success } diff --git a/storage/versioned/kv_test.go b/storage/versioned/kv_test.go index 88cc0fcb8..99bf17a96 100644 --- a/storage/versioned/kv_test.go +++ b/storage/versioned/kv_test.go @@ -17,7 +17,7 @@ import ( // KV get should call the Upgrade function when it's available func TestVersionedKV_Get_Err(t *testing.T) { - kv := make(ekv.Memstore) + kv := ekv.MakeMemstore() vkv := NewKV(kv) key := vkv.GetFullKey("test", 0) result, err := vkv.Get(key, 0) @@ -34,7 +34,7 @@ func TestVersionedKV_Get_Err(t *testing.T) { // Test versioned KV happy path func TestVersionedKV_GetUpgrade(t *testing.T) { // Set up a dummy KV with the required data - kv := make(ekv.Memstore) + kv := ekv.MakeMemstore() vkv := NewKV(kv) key := vkv.GetFullKey("test", 0) original := Object{ @@ -42,8 +42,10 @@ func TestVersionedKV_GetUpgrade(t *testing.T) { Timestamp: netTime.Now(), Data: []byte("not upgraded"), } - originalSerialized := original.Marshal() - kv[key] = originalSerialized + err := kv.Set(key, &original) + if err != nil { + t.Errorf("Failed to set original: %+v", err) + } upgrade := []Upgrade{func(oldObject *Object) (*Object, error) { return &Object{ @@ -69,7 +71,7 @@ func TestVersionedKV_GetUpgrade(t *testing.T) { // Test versioned KV key not found path func TestVersionedKV_GetUpgrade_KeyNotFound(t *testing.T) { // Set up a dummy KV with the required data - kv := make(ekv.Memstore) + kv := ekv.MakeMemstore() vkv := NewKV(kv) key := "test" @@ -91,7 +93,7 @@ func TestVersionedKV_GetUpgrade_KeyNotFound(t *testing.T) { // Test versioned KV upgrade func returns error path func TestVersionedKV_GetUpgrade_UpgradeReturnsError(t *testing.T) { // Set up a dummy KV with the required data - kv := make(ekv.Memstore) + kv := ekv.MakeMemstore() vkv := NewKV(kv) key := vkv.GetFullKey("test", 0) original := Object{ @@ -99,8 +101,10 @@ func TestVersionedKV_GetUpgrade_UpgradeReturnsError(t *testing.T) { Timestamp: netTime.Now(), Data: []byte("not upgraded"), } - originalSerialized := original.Marshal() - kv[key] = originalSerialized + err := kv.Set(key, &original) + if err != nil { + t.Errorf("Failed to set original: %+v", err) + } upgrade := []Upgrade{func(oldObject *Object) (*Object, error) { return &Object{}, errors.New("test error") @@ -119,7 +123,7 @@ func TestVersionedKV_GetUpgrade_UpgradeReturnsError(t *testing.T) { // Test delete key happy path func TestVersionedKV_Delete(t *testing.T) { // Set up a dummy KV with the required data - kv := make(ekv.Memstore) + kv := ekv.MakeMemstore() vkv := NewKV(kv) key := vkv.GetFullKey("test", 0) original := Object{ @@ -127,16 +131,20 @@ func TestVersionedKV_Delete(t *testing.T) { Timestamp: netTime.Now(), Data: []byte("not upgraded"), } - originalSerialized := original.Marshal() - kv[key] = originalSerialized + err := kv.Set(key, &original) + if err != nil { + t.Errorf("Failed to set original: %+v", err) + } - err := vkv.Delete("test", 0) + err = vkv.Delete("test", 0) if err != nil { t.Fatalf("Error getting something that should have been in: %v", err) } - if _, ok := kv[key]; ok { + o := &Object{} + err = kv.Get(key, o) + if err == nil { t.Fatal("Key still exists in kv map") } } @@ -144,7 +152,7 @@ func TestVersionedKV_Delete(t *testing.T) { // Test get without Upgrade path func TestVersionedKV_Get(t *testing.T) { // Set up a dummy KV with the required data - kv := make(ekv.Memstore) + kv := ekv.MakeMemstore() vkv := NewKV(kv) originalVersion := uint64(0) key := vkv.GetFullKey("test", originalVersion) @@ -153,8 +161,10 @@ func TestVersionedKV_Get(t *testing.T) { Timestamp: netTime.Now(), Data: []byte("not upgraded"), } - originalSerialized := original.Marshal() - kv[key] = originalSerialized + err := kv.Set(key, &original) + if err != nil { + t.Errorf("Failed to set original in kv: %+v", err) + } result, err := vkv.Get("test", originalVersion) if err != nil { @@ -169,7 +179,7 @@ func TestVersionedKV_Get(t *testing.T) { // Test that Set puts data in the store func TestVersionedKV_Set(t *testing.T) { - kv := make(ekv.Memstore) + kv := ekv.MakeMemstore() vkv := NewKV(kv) originalVersion := uint64(1) key := vkv.GetFullKey("test", originalVersion) @@ -184,8 +194,9 @@ func TestVersionedKV_Set(t *testing.T) { } // Store should now have data in it at that key - _, ok := kv[key] - if !ok { - t.Error("data store didn't have anything in the key") + o := &Object{} + err = kv.Get(key, o) + if err != nil { + t.Error("data store didn't have anything in the key: %+v", err) } } diff --git a/ud/addFact_test.go b/ud/addFact_test.go index 3ed67bc62..1a1a38cdc 100644 --- a/ud/addFact_test.go +++ b/ud/addFact_test.go @@ -28,7 +28,7 @@ func (rFC *testAFC) SendRegisterFact(*connect.Host, *pb.FactRegisterRequest) ( // Test that the addFact function completes successfully func TestAddFact(t *testing.T) { - m := newTestManager(t) + m, _ := newTestManager(t) // Create our test fact USCountryCode := "US" diff --git a/ud/confirmFact_test.go b/ud/confirmFact_test.go index 65573efd5..b59a3c385 100644 --- a/ud/confirmFact_test.go +++ b/ud/confirmFact_test.go @@ -22,7 +22,7 @@ func (t *testComm) SendConfirmFact(_ *connect.Host, message *pb.FactConfirmReque func TestManager_confirmFact(t *testing.T) { // Create our Manager object - m := newTestManager(t) + m, _ := newTestManager(t) c := &testComm{} diff --git a/ud/manager_test.go b/ud/manager_test.go index bb84a3cbc..1bf18a58b 100644 --- a/ud/manager_test.go +++ b/ud/manager_test.go @@ -50,7 +50,7 @@ EnretBzQkeKeBwoB2u6NTiOmUjk= var testContact = `<xxc(2)LF2ccT+sdqh0AIKlFFeDOJdnxzbQQYhGStgxhOXmijIDkAZiB9kZo+Dl3bRSbBi5pXZ82rOu2IQXz9+5sspChvoccZqgC/dXGhlesmiNy/EbKxWtptTF4tcNyQxtnmCXg1p/HwKey4G2XDekTw86lq6Lpmj72jozvRWlQisqvWz/5deiPaeFGKDKC0OrrDFnIib7WnKqdYt4XyTKdmObnmbvdCbliZq0zBl7J40qKy5FypYXGlZjStIm0R1qtD4XHMZMsrMJEGxdM55zJdSzknXbR8MNahUrGMyUOTivXLHzojYLht0gFQifKMVWhrDjUoVQV43KOLPmdBwY/2Kc5KvVloDeuDXYY0i7tD63gNIp9JA3gJQUJymDdwqbS13riT1DMHHkdTzKEyGdHS+v2l7AVSlJBiTKuyM00FBNuXhhIcFR7ONFCf8cRPOPPBx3Q6iHNsvsca3KPNhwOJBgaQvHSkjIMsudiR954QbwG9rbi2vxVobIgWYMl5j6vlBS/9rfbE/uLdTEQZfNsLKDCIVCCI4I1bYZxZrDLPrfXTrN6W0sCLE7a/kRBQAAAgA7+LwJqiv9O1ogLnS4TYkSEg==xxc>` func TestManager_SetAlternativeUserDiscovery(t *testing.T) { - m := newTestManager(t) + m, _ := newTestManager(t) altAddr := "0.0.0.0:11420" err := m.SetAlternativeUserDiscovery([]byte(testCert), []byte(altAddr), []byte(testContact)) diff --git a/ud/register_test.go b/ud/register_test.go index f4194f05d..3aae46e19 100644 --- a/ud/register_test.go +++ b/ud/register_test.go @@ -24,7 +24,7 @@ func (t *testRegisterComm) SendRegisterUser(_ *connect.Host, msg *pb.UDBUserRegi // Happy path. func TestManager_register(t *testing.T) { - m := newTestManager(t) + m, _ := newTestManager(t) udHost, err := m.getOrAddUdHost() if err != nil { diff --git a/ud/search_test.go b/ud/search_test.go index 42bedb170..658469245 100644 --- a/ud/search_test.go +++ b/ud/search_test.go @@ -1,9 +1,13 @@ package ud import ( + "encoding/base64" "fmt" "gitlab.com/elixxir/crypto/contact" + dh "gitlab.com/elixxir/crypto/diffieHellman" + "gitlab.com/elixxir/crypto/e2e/singleUse" "gitlab.com/elixxir/primitives/fact" + "gitlab.com/xx_network/crypto/csprng" "gitlab.com/xx_network/primitives/id" "math/rand" "testing" @@ -13,7 +17,7 @@ import ( // Happy path. func TestManager_Search(t *testing.T) { - m := newTestManager(t) + m, tnm := newTestManager(t) // Generate callback function callbackChan := make(chan struct { c []contact.Contact @@ -36,11 +40,32 @@ func TestManager_Search(t *testing.T) { } factHashes, _ := hashFactList(factList) + grp := getGroup() + + dhKeyBytes, err := base64.StdEncoding.DecodeString(dhKeyEnc) + if err != nil { + panic("Failed to decode dh key") + } + dhKey := grp.NewIntFromBytes(dhKeyBytes) + + dhPubKey := dh.GeneratePublicKey(dhKey, grp) + + rng := NewPrng(42) + privKeyBytes, err := csprng.GenerateInGroup( + grp.GetP().Bytes(), grp.GetP().ByteLen(), rng) + if err != nil { + t.Fatalf("Failed to gen pk bytes: %+v", err) + } + privKey := grp.NewIntFromBytes(privKeyBytes) + dhKeyGenerated := grp.Exp(dhPubKey, privKey, grp.NewInt(1)) + + tnm.msg.SetMac(singleUse.MakeMAC(singleUse.NewResponseKey(dhKeyGenerated, 0), tnm.msg.GetContents())) + var contacts []*Contact - for i, hash := range factHashes { + for _, hash := range factHashes { contacts = append(contacts, &Contact{ UserID: id.NewIdFromString("user", id.User, t).Marshal(), - PubKey: []byte{byte(i + 1)}, + PubKey: dhPubKey.Bytes(), TrigFacts: []*HashFact{hash}, }) } diff --git a/ud/store/facts_test.go b/ud/store/facts_test.go index c4bb5ea77..332b5289d 100644 --- a/ud/store/facts_test.go +++ b/ud/store/facts_test.go @@ -18,7 +18,7 @@ import ( func TestNewStore(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) _, err := NewStore(kv) if err != nil { @@ -30,7 +30,7 @@ func TestNewStore(t *testing.T) { // Unit test func TestStore_RestoreFromBackUp(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) s, err := NewStore(kv) if err != nil { @@ -59,7 +59,7 @@ func TestStore_RestoreFromBackUp(t *testing.T) { // Error case. func TestStore_RestoreFromBackUp_StatefulStore(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) s, err := NewStore(kv) if err != nil { @@ -88,7 +88,7 @@ func TestStore_RestoreFromBackUp_StatefulStore(t *testing.T) { } func TestStore_ConfirmFact(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) expectedStore, err := NewStore(kv) if err != nil { @@ -126,7 +126,7 @@ func TestStore_ConfirmFact(t *testing.T) { } func TestStore_StoreUnconfirmedFact(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) expectedStore, err := NewStore(kv) if err != nil { @@ -154,7 +154,7 @@ func TestStore_StoreUnconfirmedFact(t *testing.T) { } func TestStore_DeleteFact(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) expectedStore, err := NewStore(kv) if err != nil { @@ -186,7 +186,7 @@ func TestStore_DeleteFact(t *testing.T) { } func TestStore_BackUpMissingFacts(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) expectedStore, err := NewStore(kv) if err != nil { @@ -221,7 +221,7 @@ func TestStore_BackUpMissingFacts(t *testing.T) { } func TestStore_BackUpMissingFacts_DuplicateFactType(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) expectedStore, err := NewStore(kv) if err != nil { @@ -258,7 +258,7 @@ func TestStore_BackUpMissingFacts_DuplicateFactType(t *testing.T) { } func TestStore_GetFacts(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) testStore, err := NewStore(kv) if err != nil { @@ -307,7 +307,7 @@ func TestStore_GetFacts(t *testing.T) { } func TestStore_GetFactStrings(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) testStore, err := NewStore(kv) if err != nil { diff --git a/ud/store/store_test.go b/ud/store/store_test.go index ffe058f51..ed56cb67c 100644 --- a/ud/store/store_test.go +++ b/ud/store/store_test.go @@ -11,7 +11,7 @@ import ( // Test it loads a Store from storage if it exists. func TestNewOrLoadStore_LoadStore(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) expectedStore, err := NewStore(kv) if err != nil { @@ -34,7 +34,7 @@ func TestNewOrLoadStore_LoadStore(t *testing.T) { // Test that it creates a new store if an old one is not in storage. func TestNewOrLoadStore_NewStore(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) receivedStore, err := NewOrLoadStore(kv) if err != nil { @@ -57,7 +57,7 @@ func TestNewOrLoadStore_NewStore(t *testing.T) { } func TestStore_MarshalUnmarshal_ConfirmedFacts(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) expectedStore, err := NewStore(kv) if err != nil { @@ -93,7 +93,7 @@ func TestStore_MarshalUnmarshal_ConfirmedFacts(t *testing.T) { } func TestStore_MarshalUnmarshal_UnconfirmedFacts(t *testing.T) { - kv := versioned.NewKV(make(ekv.Memstore)) + kv := versioned.NewKV(ekv.MakeMemstore()) expectedStore, err := NewStore(kv) if err != nil { diff --git a/ud/utils_test.go b/ud/utils_test.go index 3e6fec489..c8eaf322b 100644 --- a/ud/utils_test.go +++ b/ud/utils_test.go @@ -62,7 +62,7 @@ const dhKeyEnc = `hQj4FKeaQDt34eO/BQe5OSk571WMQBu4YNqMQ0TFeuzjzCM9lLMuOsQhcyjZcI const lookupRequestEnc = `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` const requestPayloadEnc = `Sry8sWk5e7cBFAF2CiQKICC9B+rB81+KaZUf1XD5x/RC8Bl7ZqAoEGCtB0ypo/xtEAEKJAogbsIlu6TrpyGid5++VmWKd9C2Y9rzvr1Y2rDidtf0ICAQAwokCiB6CDF+i190lrha+7y+GeMLB0YKvhEnrGE+EO0GlACQHBADCiQKIKlG3oPmfOITbJnlVJjm2WIUnZoWSHmoTfmPCk1H0vuMEAMKJAogyCwoeonTQJuo2W15zn1BrDOrpf+QczJT+x1Ak3RXt8IQAQokCiCCTpbfpLGONZZmFija6iha27ha53ldjcuUY0+0lSBDHhACCiQKIAtD0y0KxTuAu3X5zw4/8Piq5DozpCj2D8+21drCNIE/EAEKIgogUwdmrhlCQHZDCNiRNTgqmp2f45kfrgAgjZBphAZV1wAKIgogfdxWG8zn9BJqV+xYSVMRhUtbF8jBOOpSbg+NbREc7sMKIgogaemYLCW8fFcO7gD8u7lapaqJbspJND4oQ5eZ/6NdvkwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA` -func newTestManager(t *testing.T) *Manager { +func newTestManager(t *testing.T) (*Manager, *testNetworkManager) { keyData, err := utils.ReadFile(testkeys.GetNodeKeyPath()) if err != nil { @@ -74,7 +74,7 @@ func newTestManager(t *testing.T) *Manager { t.Fatalf("Could not load public key") } - kv := versioned.NewKV(ekv.Memstore{}) + kv := versioned.NewKV(ekv.MakeMemstore()) udStore, err := store.NewOrLoadStore(kv) if err != nil { t.Fatalf("Failed to initialize store %v", err) @@ -121,7 +121,7 @@ func newTestManager(t *testing.T) *Manager { tnm.EncryptMockMessage(t) - return m + return m, tnm } // Prng is a PRNG that satisfies the csprng.Source interface. @@ -137,7 +137,7 @@ func newTestNetworkManager(t *testing.T) *testNetworkManager { // todo: make a non-random rng and pass it in thisInstance, err := network.NewInstanceTesting(instanceComms, getNDF(), - getNDF(), nil, nil, t) + getNDF(), getGroup(), getGroup(), t) if err != nil { t.Fatalf("Failed to create new test instance: %v", err) } @@ -392,7 +392,7 @@ func getNDF() *ndf.NetworkDefinition { return &ndf.NetworkDefinition{ UDB: ndf.UDB{ ID: id.DummyUser.Bytes(), - Cert: "", + Cert: testCert, Address: "address", DhPubKey: []byte{123, 34, 86, 97, 108, 117, 101, 34, 58, 50, 48, 54, 50, 57, 49, 51, 55, 48, 49, 55, 55, 48, 48, 57, 48, 52, 56, 51, 54, 55, 57, 55, 51, 52, 57, 54, 56, 52, 53, 52, 57, 49, 52, 54, 55, 53, 53, 49, 53, 51, 50, 51, 52, 57, 51, 48, 50, 51, 55, 48, 54, 55, 49, 53, 50, 50, 54, 56, 51, 48, 52, 48, 57, 49, 48, 48, 52, 54, 48, 54, 55, 51, 52, 57, 48, 56, 53, 57, 49, 57, 52, 54, 48, 56, 49, 55, 53, 55, 54, 51, 49, 48, 56, 57, 55, 48, 50, 56, 53, 56, 54, 54, 53, 51, 50, 49, 48, 55, 53, 57, 56, 53, 49, 56, 54, 49, 49, 49, 52, 52, 57, 51, 57, 50, 51, 51, 49, 50, 51, 52, 53, 51, 57, 50, 52, 50, 50, 48, 57, 48, 55, 48, 51, 49, 51, 50, 49, 56, 48, 56, 54, 50, 53, 56, 51, 49, 57, 56, 54, 53, 57, 50, 53, 48, 56, 50, 48, 51, 48, 57, 53, 51, 53, 57, 54, 50, 52, 53, 54, 51, 48, 54, 50, 55, 48, 48, 55, 49, 49, 52, 49, 48, 55, 54, 51, 50, 49, 56, 48, 56, 52, 54, 54, 52, 50, 57, 55, 56, 49, 52, 53, 54, 53, 55, 52, 57, 55, 54, 55, 56, 50, 52, 49, 57, 56, 49, 52, 50, 53, 48, 52, 52, 54, 50, 57, 54, 57, 54, 55, 48, 51, 52, 53, 51, 56, 48, 52, 50, 53, 49, 53, 50, 51, 54, 55, 55, 57, 55, 50, 55, 53, 53, 51, 56, 53, 55, 48, 55, 51, 57, 57, 55, 57, 53, 54, 48, 49, 48, 51, 55, 52, 53, 49, 54, 51, 57, 56, 56, 49, 51, 57, 52, 48, 53, 54, 49, 50, 49, 57, 49, 54, 48, 54, 55, 48, 53, 57, 57, 55, 56, 57, 53, 52, 50, 51, 52, 56, 49, 51, 49, 57, 57, 52, 50, 53, 50, 55, 49, 48, 56, 54, 50, 53, 57, 53, 53, 55, 52, 53, 54, 54, 54, 51, 53, 51, 52, 51, 54, 49, 52, 52, 55, 51, 56, 52, 48, 54, 52, 51, 49, 56, 55, 52, 53, 56, 53, 49, 49, 53, 55, 48, 50, 52, 49, 56, 52, 56, 50, 49, 56, 49, 51, 49, 49, 51, 52, 57, 50, 57, 57, 56, 49, 51, 54, 52, 56, 54, 54, 55, 48, 50, 52, 48, 51, 48, 51, 51, 54, 55, 53, 54, 56, 56, 48, 55, 54, 54, 54, 55, 56, 50, 51, 48, 53, 57, 54, 49, 51, 53, 54, 50, 51, 51, 51, 55, 56, 53, 48, 49, 50, 48, 48, 49, 49, 50, 54, 48, 53, 54, 52, 49, 52, 50, 50, 55, 51, 56, 51, 56, 52, 51, 54, 48, 49, 55, 50, 53, 51, 49, 49, 49, 49, 57, 50, 51, 55, 54, 48, 51, 49, 51, 54, 48, 48, 50, 57, 56, 51, 52, 50, 50, 56, 54, 55, 56, 51, 55, 55, 52, 56, 48, 53, 57, 56, 51, 50, 48, 51, 48, 49, 48, 54, 50, 57, 56, 51, 55, 54, 54, 53, 56, 57, 49, 50, 52, 55, 54, 54, 49, 56, 49, 49, 52, 57, 54, 57, 51, 50, 50, 48, 55, 54, 53, 54, 51, 53, 52, 56, 49, 52, 57, 53, 52, 56, 55, 56, 48, 56, 49, 56, 52, 56, 50, 50, 54, 55, 54, 53, 56, 48, 57, 55, 56, 50, 54, 50, 50, 57, 56, 57, 48, 50, 53, 56, 50, 56, 53, 55, 57, 55, 57, 48, 50, 53, 52, 54, 48, 56, 50, 57, 49, 56, 51, 57, 52, 53, 51, 54, 53, 56, 56, 55, 55, 54, 52, 51, 51, 57, 53, 51, 56, 55, 54, 56, 48, 48, 57, 57, 53, 51, 52, 51, 49, 54, 49, 48, 52, 56, 55, 49, 57, 54, 49, 54, 49, 48, 49, 53, 49, 50, 49, 48, 57, 56, 54, 54, 56, 48, 57, 49, 52, 56, 55, 51, 48, 54, 52, 50, 51, 54, 57, 49, 53, 54, 48, 51, 48, 49, 53, 55, 56, 48, 50, 54, 51, 49, 57, 51, 49, 52, 53, 52, 51, 52, 57, 50, 53, 52, 56, 49, 55, 52, 50, 53, 56, 49, 54, 56, 49, 51, 55, 55, 56, 56, 56, 48, 56, 50, 54, 48, 53, 55, 53, 55, 54, 54, 49, 52, 54, 51, 54, 55, 57, 57, 50, 52, 51, 52, 54, 52, 57, 48, 54, 56, 48, 49, 57, 48, 48, 50, 56, 53, 52, 52, 51, 54, 56, 48, 52, 48, 51, 52, 57, 50, 51, 48, 49, 51, 55, 50, 57, 55, 57, 56, 53, 50, 53, 54, 51, 48, 52, 50, 50, 49, 51, 51, 51, 56, 50, 52, 49, 48, 55, 57, 53, 51, 52, 54, 51, 57, 55, 51, 54, 53, 54, 55, 53, 53, 55, 51, 50, 52, 53, 51, 48, 55, 51, 54, 55, 52, 52, 51, 52, 56, 48, 51, 57, 53, 49, 52, 53, 56, 51, 53, 57, 57, 51, 52, 55, 54, 55, 57, 49, 55, 55, 54, 48, 50, 52, 50, 51, 51, 52, 49, 55, 54, 50, 49, 49, 50, 49, 54, 48, 56, 48, 52, 53, 55, 52, 55, 56, 53, 52, 54, 52, 51, 54, 50, 48, 53, 54, 56, 55, 56, 51, 57, 54, 49, 50, 54, 52, 52, 52, 55, 53, 57, 57, 57, 57, 51, 55, 50, 57, 52, 54, 49, 54, 51, 56, 57, 54, 56, 54, 57, 50, 57, 56, 54, 48, 53, 53, 53, 51, 49, 53, 53, 55, 53, 57, 50, 57, 53, 55, 49, 54, 55, 49, 55, 48, 57, 55, 56, 53, 57, 51, 57, 51, 48, 56, 51, 56, 56, 57, 49, 49, 49, 52, 55, 54, 54, 44, 34, 70, 105, 110, 103, 101, 114, 112, 114, 105, 110, 116, 34, 58, 49, 54, 56, 48, 49, 53, 52, 49, 53, 49, 49, 50, 51, 51, 48, 57, 56, 51, 54, 51, 125}, }, -- GitLab