From d3a372cd123e592b2e40af2d32dccf442bad4308 Mon Sep 17 00:00:00 2001 From: Jake Taylor <jake@elixxir.io> Date: Thu, 6 Aug 2020 14:22:20 -0700 Subject: [PATCH] add unit test --- .gitignore | 2 ++ globals/version_vars.go | 10 ++++++-- storage/session.go | 36 +++++++++++++++++++++------ storage/session_test.go | 55 ++++++++++++++++++++++++++++++++--------- version_vars.go.bak | 37 --------------------------- 5 files changed, 81 insertions(+), 59 deletions(-) delete mode 100644 version_vars.go.bak diff --git a/.gitignore b/.gitignore index 62d17d343..39999c116 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,5 @@ localdev_* .*test* *.1 *.2 +# Ignore temp files +*.bak diff --git a/globals/version_vars.go b/globals/version_vars.go index e20266b2b..d0433d812 100644 --- a/globals/version_vars.go +++ b/globals/version_vars.go @@ -1,9 +1,15 @@ +//////////////////////////////////////////////////////////////////////////////// +// Copyright © 2020 Privategrity Corporation / +// / +// All rights reserved. / +//////////////////////////////////////////////////////////////////////////////// + // Code generated by go generate; DO NOT EDIT. // This file was generated by robots at -// 2020-08-06 10:52:35.96635741 -0700 PDT m=+0.008615574 +// 2020-08-06 13:38:20.0089 -0700 PDT m=+0.031406132 package globals -const GITVERSION = `d97700f Merge branch 'XX-2418/ClientStorage-Registration' of gitlab.com:elixxir/client into XX-2418/ClientStorage-Registration` +const GITVERSION = `f537145 Merge branch 'Optimus/ClientStorage' into XX-2415/NodeKeys` const SEMVER = "1.4.0" const DEPENDENCIES = `module gitlab.com/elixxir/client diff --git a/storage/session.go b/storage/session.go index b164743c2..870c21706 100644 --- a/storage/session.go +++ b/storage/session.go @@ -10,11 +10,11 @@ package storage import ( "encoding/json" - "gitlab.com/elixxir/client/user" "gitlab.com/elixxir/client/globals" + "gitlab.com/elixxir/client/user" "gitlab.com/elixxir/ekv" - "gitlab.com/elixxir/primitives/id" "gitlab.com/xx_network/comms/connect" + "gitlab.com/xx_network/primitives/id" "testing" "time" ) @@ -70,13 +70,33 @@ func (s *Session) SetLastMessageId(id string) error { } // Helper for obtaining NodeKeys map -func (s *Session) getNodeKeys() (map[id.ID]user.NodeKeys, error) { - v, err := s.kv.Get("NodeKeys") +func (s *Session) getNodeKeys() (map[string]user.NodeKeys, error) { + key := "NodeKeys" + var nodeKeys map[string]user.NodeKeys + + v, err := s.kv.Get(key) if err != nil { - return nil, err + ts, err := time.Now().MarshalText() + if err != nil { + return nil, err + } + + nodeKeys = make(map[string]user.NodeKeys) + data, err := json.Marshal(nodeKeys) + if err != nil { + return nil, err + } + vo := &VersionedObject{ + Timestamp: ts, + Data: data, + } + err = s.kv.Set(key, vo) + if err != nil { + return nil, err + } + return nodeKeys, nil } - var nodeKeys map[id.ID]user.NodeKeys err = json.Unmarshal(v.Data, &nodeKeys) return nodeKeys, err } @@ -90,7 +110,7 @@ func (s *Session) GetNodeKeys(topology *connect.Circuit) ([]user.NodeKeys, error keys := make([]user.NodeKeys, topology.Len()) for i := 0; i < topology.Len(); i++ { - keys[i] = nodeKeys[*topology.GetNodeAtIndex(i)] + keys[i] = nodeKeys[topology.GetNodeAtIndex(i).String()] } return keys, nil @@ -105,7 +125,7 @@ func (s *Session) PushNodeKey(id *id.ID, key user.NodeKeys) error { } // Set new value inside of map - nodeKeys[*id] = key + nodeKeys[id.String()] = key // Marshal the map pushValue, err := json.Marshal(nodeKeys) diff --git a/storage/session_test.go b/storage/session_test.go index 01d50f5c0..90d8ec741 100644 --- a/storage/session_test.go +++ b/storage/session_test.go @@ -8,13 +8,17 @@ package storage import ( "bytes" + "gitlab.com/elixxir/client/user" + "gitlab.com/elixxir/crypto/cyclic" + "gitlab.com/elixxir/crypto/large" + "gitlab.com/xx_network/comms/connect" + "gitlab.com/xx_network/primitives/id" "os" "testing" "time" ) -// Smoke test for session object init/set/get methods -func TestSession_Smoke(t *testing.T) { +func initTest(t *testing.T) *Session { err := os.RemoveAll(".session_testdir") if err != nil { t.Errorf(err.Error()) @@ -24,6 +28,12 @@ func TestSession_Smoke(t *testing.T) { t.Log(s) t.Errorf("failed to init: %+v", err) } + return s +} + +// Smoke test for session object init/set/get methods +func TestSession_Smoke(t *testing.T) { + s := initTest(t) ts, err := time.Now().MarshalText() if err != nil { @@ -54,17 +64,9 @@ func TestSession_Smoke(t *testing.T) { func TestSession_GetSetLastMessageId(t *testing.T) { testId := "testLastMessageId" - err := os.RemoveAll(".session_testdir") - if err != nil { - t.Errorf(err.Error()) - } - s, err := Init(".session_testdir", "test") - if err != nil { - t.Log(s) - t.Errorf("failed to init: %+v", err) - } + s := initTest(t) - err = s.SetLastMessageId(testId) + err := s.SetLastMessageId(testId) if err != nil { t.Errorf("Failed to set LastMessageId: %+v", err) } @@ -77,3 +79,32 @@ func TestSession_GetSetLastMessageId(t *testing.T) { t.Errorf("Failed to get LastMessageID, Got %s Expected %s", o, testId) } } + +// Happy path for getting/setting node keys +func TestSession_GetPushNodeKeys(t *testing.T) { + s := initTest(t) + + testId := id.NewIdFromString("test", id.Node, t) + testId2 := id.NewIdFromString("test2", id.Node, t) + testInt := cyclic.NewGroup(large.NewIntFromUInt(6), large.NewIntFromUInt(6)).NewInt(1) + testNodeKey := user.NodeKeys{ + TransmissionKey: testInt, + ReceptionKey: testInt, + } + + err := s.PushNodeKey(testId, testNodeKey) + if err != nil { + t.Errorf("Unable to push node key: %+v", err) + } + err = s.PushNodeKey(testId2, testNodeKey) + if err != nil { + t.Errorf("Unable to push node key: %+v", err) + } + + circ := connect.NewCircuit([]*id.ID{testId, testId2}) + results, err := s.GetNodeKeys(circ) + + if len(results) != 2 { + t.Errorf("Returned unexpected number of node keys: %d", len(results)) + } +} diff --git a/version_vars.go.bak b/version_vars.go.bak deleted file mode 100644 index 5167c98b9..000000000 --- a/version_vars.go.bak +++ /dev/null @@ -1,37 +0,0 @@ -// Code generated by go generate; DO NOT EDIT. -// This file was generated by robots at -// 2020-08-06 10:52:35.96635741 -0700 PDT m=+0.008615574 -package cmd - -const GITVERSION = `d97700f Merge branch 'XX-2418/ClientStorage-Registration' of gitlab.com:elixxir/client into XX-2418/ClientStorage-Registration` -const SEMVER = "1.4.0" -const DEPENDENCIES = `module gitlab.com/elixxir/client - -go 1.13 - -require ( - github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 - github.com/golang/protobuf v1.4.2 - github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect - github.com/pelletier/go-toml v1.6.0 // indirect - github.com/pkg/errors v0.9.1 - github.com/smartystreets/assertions v1.0.1 // indirect - github.com/spf13/afero v1.2.2 // indirect - github.com/spf13/cast v1.3.1 // indirect - github.com/spf13/cobra v1.0.0 - github.com/spf13/jwalterweatherman v1.1.0 - github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.6.2 - gitlab.com/elixxir/comms v0.0.0-20200805174832-240bba97beaa - gitlab.com/elixxir/crypto v0.0.0-20200805174804-bdf909f2a16d - gitlab.com/elixxir/ekv v0.1.1 - gitlab.com/elixxir/primitives v0.0.0-20200805174810-86b366d1dd2d - gitlab.com/xx_network/comms v0.0.0-20200805174823-841427dd5023 - gitlab.com/xx_network/primitives v0.0.0-20200804183002-f99f7a7284da - golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de - golang.org/x/sys v0.0.0-20200806125547-5acd03effb82 // indirect - gopkg.in/ini.v1 v1.52.0 // indirect -) - -replace google.golang.org/grpc => github.com/grpc/grpc-go v1.27.1 -` -- GitLab