Skip to content
Snippets Groups Projects
Commit d3a372cd authored by Jake Taylor's avatar Jake Taylor
Browse files

add unit test

parent f5371459
Branches
Tags
No related merge requests found
......@@ -32,3 +32,5 @@ localdev_*
.*test*
*.1
*.2
# Ignore temp files
*.bak
////////////////////////////////////////////////////////////////////////////////
// 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
......
......@@ -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 {
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)
......
......@@ -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))
}
}
// 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
`
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment