diff --git a/ud/addFact_test.go b/ud/addFact_test.go index 7fecfc4d6d59a3a15666e662cbb149af52c6795d..3ed67bc62a02c8141324fcf0adae1b80b60f36b5 100644 --- a/ud/addFact_test.go +++ b/ud/addFact_test.go @@ -2,13 +2,9 @@ package ud import ( jww "github.com/spf13/jwalterweatherman" - "gitlab.com/elixxir/client/storage" - "gitlab.com/elixxir/comms/client" pb "gitlab.com/elixxir/comms/mixmessages" "gitlab.com/elixxir/primitives/fact" "gitlab.com/xx_network/comms/connect" - "gitlab.com/xx_network/crypto/csprng" - "gitlab.com/xx_network/crypto/signature/rsa" "gitlab.com/xx_network/primitives/id" "os" "testing" @@ -31,28 +27,8 @@ func (rFC *testAFC) SendRegisterFact(*connect.Host, *pb.FactRegisterRequest) ( // Test that the addFact function completes successfully func TestAddFact(t *testing.T) { - isReg := uint32(1) - // Create a new Private Key to use for signing the Fact - rng := csprng.NewSystemRNG() - cpk, err := rsa.GenerateKey(rng, 2048) - if err != nil { - t.Fatal(err) - } - - comms, err := client.NewClientComms(nil, nil, nil, nil) - if err != nil { - t.Errorf("Failed to start client comms: %+v", err) - } - - // Create our Manager object - m := Manager{ - comms: comms, - net: newTestNetworkManager(t), - privKey: cpk, - registered: &isReg, - storage: storage.InitTestingSession(t), - } + m := newTestManager(t) // Create our test fact USCountryCode := "US" @@ -68,7 +44,7 @@ func TestAddFact(t *testing.T) { tAFC := testAFC{} uid := &id.ID{} // Run addFact and see if it returns without an error! - _, err = m.addFact(f, uid, &tAFC) + _, err := m.addFact(f, uid, &tAFC) if err != nil { t.Fatal(err) } diff --git a/ud/confirmFact_test.go b/ud/confirmFact_test.go index 4b9789b40d07d4ea3689d2caa5c90752ca1fea46..6034192a78d2a0596958a6cef0c1cd1685211c27 100644 --- a/ud/confirmFact_test.go +++ b/ud/confirmFact_test.go @@ -1,12 +1,17 @@ package ud import ( + "gitlab.com/elixxir/client/event" "gitlab.com/elixxir/client/storage" - "gitlab.com/elixxir/comms/client" + "gitlab.com/elixxir/client/storage/versioned" + store "gitlab.com/elixxir/client/ud/store" pb "gitlab.com/elixxir/comms/mixmessages" + "gitlab.com/elixxir/crypto/fastRNG" + "gitlab.com/elixxir/ekv" "gitlab.com/elixxir/primitives/fact" "gitlab.com/xx_network/comms/connect" "gitlab.com/xx_network/comms/messages" + "gitlab.com/xx_network/crypto/csprng" "reflect" "testing" ) @@ -22,19 +27,24 @@ func (t *testComm) SendConfirmFact(_ *connect.Host, message *pb.FactConfirmReque // Happy path. func TestManager_confirmFact(t *testing.T) { - isReg := uint32(1) + storageSess := storage.InitTestingSession(t) - comms, err := client.NewClientComms(nil, nil, nil, nil) + kv := versioned.NewKV(ekv.Memstore{}) + udStore, err := store.NewOrLoadStore(kv) if err != nil { - t.Errorf("Failed to start client comms: %+v", err) + t.Fatalf("Failed to initialize store %v", err) } - // Set up manager + // Create our Manager object m := &Manager{ - comms: comms, - net: newTestNetworkManager(t), - registered: &isReg, - storage: storage.InitTestingSession(t), + services: newTestNetworkManager(t), + e2e: mockE2e{}, + events: event.NewEventManager(), + user: storageSess, + comms: &mockComms{}, + store: udStore, + kv: kv, + rng: fastRNG.NewStreamGenerator(1, 1, csprng.NewSystemRNG), } c := &testComm{} @@ -45,7 +55,7 @@ func TestManager_confirmFact(t *testing.T) { } // Set up store for expected state - err = m.storage.GetUd().StoreUnconfirmedFact(expectedRequest.ConfirmationID, fact.Fact{}) + err = m.store.StoreUnconfirmedFact(expectedRequest.ConfirmationID, fact.Fact{}) if err != nil { t.Fatalf("StoreUnconfirmedFact error: %v", err) } diff --git a/ud/manager_test.go b/ud/manager_test.go index 1dcb6c273df1c6ec7ed92980b15fc8990cfab01a..bb84a3cbcf16beb39cba2f145462705311f98488 100644 --- a/ud/manager_test.go +++ b/ud/manager_test.go @@ -8,9 +8,6 @@ package ud import ( - "gitlab.com/elixxir/comms/client" - "gitlab.com/xx_network/crypto/csprng" - "gitlab.com/xx_network/crypto/signature/rsa" "testing" ) @@ -53,30 +50,10 @@ 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) { - isReg := uint32(1) - - // Create a new Private Key to use for signing the Fact - rng := csprng.NewSystemRNG() - cpk, err := rsa.GenerateKey(rng, 2048) - if err != nil { - t.Fatal(err) - } - - comms, err := client.NewClientComms(nil, nil, nil, nil) - if err != nil { - t.Errorf("Failed to start client comms: %+v", err) - } - - // Create our Manager object - m := Manager{ - comms: comms, - net: newTestNetworkManager(t), - privKey: cpk, - registered: &isReg, - } + m := newTestManager(t) altAddr := "0.0.0.0:11420" - err = m.SetAlternativeUserDiscovery([]byte(testCert), []byte(altAddr), []byte(testContact)) + err := m.SetAlternativeUserDiscovery([]byte(testCert), []byte(altAddr), []byte(testContact)) if err != nil { t.Fatalf("Unexpected error in SetAlternativeUserDiscovery: %v", err) } diff --git a/ud/register_test.go b/ud/register_test.go index 0bdd3ef54f664235549b98e40f380f7bc21585c3..df7cb0c732a9f0ba4c77b227ef6b320434c34e4c 100644 --- a/ud/register_test.go +++ b/ud/register_test.go @@ -2,16 +2,12 @@ package ud import ( "bytes" - "gitlab.com/elixxir/client/storage" - "gitlab.com/elixxir/comms/client" pb "gitlab.com/elixxir/comms/mixmessages" "gitlab.com/elixxir/crypto/factID" - "gitlab.com/elixxir/crypto/fastRNG" "gitlab.com/elixxir/crypto/hash" "gitlab.com/elixxir/primitives/fact" "gitlab.com/xx_network/comms/connect" "gitlab.com/xx_network/comms/messages" - "gitlab.com/xx_network/crypto/csprng" "gitlab.com/xx_network/crypto/signature/rsa" "reflect" "testing" @@ -28,34 +24,25 @@ func (t *testRegisterComm) SendRegisterUser(_ *connect.Host, msg *pb.UDBUserRegi // Happy path. func TestManager_register(t *testing.T) { - isReg := uint32(0) + m := newTestManager(t) - comms, err := client.NewClientComms(nil, nil, nil, nil) + udHost, err := m.getOrAddUdHost() if err != nil { - t.Errorf("Failed to start client comms: %+v", err) - } - - // Set up manager - m := &Manager{ - comms: comms, - net: newTestNetworkManager(t), - rng: fastRNG.NewStreamGenerator(12, 3, csprng.NewSystemRNG), - storage: storage.InitTestingSession(t), - registered: &isReg, + t.Fatalf("Failed to get/add ud host: %+v", err) } c := &testRegisterComm{} - err = m.register("testUser", c) + err = m.register("testUser", c, udHost) if err != nil { t.Errorf("register() returned an error: %+v", err) } // Check if the UDBUserRegistration contents are correct - m.isCorrect("testUser", c.msg, t) + isCorrect("testUser", c.msg, m, t) // Verify the signed identity data - pubKey := m.storage.User().GetCryptographicIdentity().GetTransmissionRSA().GetPublic() + pubKey := m.user.PortableUserInfo().ReceptionRSA.GetPublic() err = rsa.Verify(pubKey, hash.CMixHash, c.msg.IdentityRegistration.Digest(), c.msg.IdentitySignature, nil) if err != nil { @@ -73,18 +60,19 @@ func TestManager_register(t *testing.T) { // isCorrect checks if the UDBUserRegistration has all the expected fields minus // any signatures. -func (m *Manager) isCorrect(username string, msg *pb.UDBUserRegistration, t *testing.T) { - user := m.storage.User() - cryptoUser := m.storage.User().GetCryptographicIdentity() +func isCorrect(username string, msg *pb.UDBUserRegistration, m *Manager, t *testing.T) { + userInfo := m.user.PortableUserInfo() - if !bytes.Equal(user.GetTransmissionRegistrationValidationSignature(), msg.PermissioningSignature) { + if !bytes.Equal(m.user.GetReceptionRegistrationValidationSignature(), msg.PermissioningSignature) { t.Errorf("PermissioningSignature incorrect.\n\texpected: %v\n\treceived: %v", - user.GetTransmissionRegistrationValidationSignature(), msg.PermissioningSignature) + m.user.GetReceptionRegistrationValidationSignature(), msg.PermissioningSignature) } - if string(rsa.CreatePublicKeyPem(cryptoUser.GetTransmissionRSA().GetPublic())) != msg.RSAPublicPem { + if string(rsa.CreatePublicKeyPem(userInfo.TransmissionRSA.GetPublic())) != + msg.RSAPublicPem { t.Errorf("RSAPublicPem incorrect.\n\texpected: %v\n\treceived: %v", - string(rsa.CreatePublicKeyPem(cryptoUser.GetTransmissionRSA().GetPublic())), msg.RSAPublicPem) + string(rsa.CreatePublicKeyPem(userInfo.TransmissionRSA.GetPublic())), + msg.RSAPublicPem) } if username != msg.IdentityRegistration.Username { @@ -92,19 +80,19 @@ func (m *Manager) isCorrect(username string, msg *pb.UDBUserRegistration, t *tes username, msg.IdentityRegistration.Username) } - if !bytes.Equal(m.storage.E2e().GetDHPublicKey().Bytes(), msg.IdentityRegistration.DhPubKey) { + if !bytes.Equal(userInfo.E2eDhPublicKey.Bytes(), msg.IdentityRegistration.DhPubKey) { t.Errorf("IdentityRegistration DhPubKey incorrect.\n\texpected: %#v\n\treceived: %#v", - m.storage.E2e().GetDHPublicKey().Bytes(), msg.IdentityRegistration.DhPubKey) + userInfo.E2eDhPublicKey.Bytes(), msg.IdentityRegistration.DhPubKey) } - if !bytes.Equal(cryptoUser.GetTransmissionSalt(), msg.IdentityRegistration.Salt) { + if !bytes.Equal(userInfo.TransmissionSalt, msg.IdentityRegistration.Salt) { t.Errorf("IdentityRegistration Salt incorrect.\n\texpected: %#v\n\treceived: %#v", - cryptoUser.GetTransmissionSalt(), msg.IdentityRegistration.Salt) + userInfo.TransmissionSalt, msg.IdentityRegistration.Salt) } - if !bytes.Equal(cryptoUser.GetTransmissionID().Marshal(), msg.Frs.UID) { + if !bytes.Equal(userInfo.TransmissionID.Marshal(), msg.Frs.UID) { t.Errorf("Frs UID incorrect.\n\texpected: %v\n\treceived: %v", - cryptoUser.GetTransmissionID().Marshal(), msg.Frs.UID) + userInfo.TransmissionID.Marshal(), msg.Frs.UID) } if !reflect.DeepEqual(&pb.Fact{Fact: username}, msg.Frs.Fact) { diff --git a/ud/utils_test.go b/ud/utils_test.go index 7d3b3626c3b479e0a14d87746ac707f970a7327e..969b93e780e2540cffe31365286de634c1d70c66 100644 --- a/ud/utils_test.go +++ b/ud/utils_test.go @@ -15,17 +15,37 @@ package ud import ( + "github.com/cloudflare/circl/dh/sidh" + "gitlab.com/elixxir/client/catalog" + "gitlab.com/elixxir/client/cmix" + "gitlab.com/elixxir/client/cmix/identity" + cmixMsg "gitlab.com/elixxir/client/cmix/message" + "gitlab.com/elixxir/client/cmix/rounds" + "gitlab.com/elixxir/client/e2e" + "gitlab.com/elixxir/client/e2e/ratchet/partner" + "gitlab.com/elixxir/client/e2e/ratchet/partner/session" + "gitlab.com/elixxir/client/e2e/receive" + "gitlab.com/elixxir/client/event" + "gitlab.com/elixxir/client/storage/user" + "gitlab.com/elixxir/client/storage/versioned" + store "gitlab.com/elixxir/client/ud/store" + pb "gitlab.com/elixxir/comms/mixmessages" + "gitlab.com/elixxir/comms/testkeys" + "gitlab.com/elixxir/crypto/cyclic" + e2eCrypto "gitlab.com/elixxir/crypto/e2e" + "gitlab.com/elixxir/crypto/fastRNG" + "gitlab.com/elixxir/ekv" + "gitlab.com/xx_network/comms/messages" + "gitlab.com/xx_network/crypto/csprng" + "gitlab.com/xx_network/crypto/large" + "gitlab.com/xx_network/crypto/signature/rsa" + "gitlab.com/xx_network/primitives/utils" "testing" "time" "gitlab.com/elixxir/client/cmix/gateway" - "gitlab.com/elixxir/client/event" - "gitlab.com/elixxir/client/interfaces" - "gitlab.com/elixxir/client/interfaces/message" - "gitlab.com/elixxir/client/interfaces/params" "gitlab.com/elixxir/client/stoppable" "gitlab.com/elixxir/comms/network" - "gitlab.com/elixxir/crypto/e2e" "gitlab.com/elixxir/primitives/format" "gitlab.com/xx_network/comms/connect" "gitlab.com/xx_network/primitives/id" @@ -33,7 +53,60 @@ import ( "gitlab.com/xx_network/primitives/ndf" ) -func newTestNetworkManager(t *testing.T) interfaces.NetworkManager { +func newTestManager(t *testing.T) *Manager { + + keyData, err := utils.ReadFile(testkeys.GetNodeKeyPath()) + if err != nil { + t.Fatalf("Could not load private key: %v", err) + } + + key, err := rsa.LoadPrivateKeyFromPem(keyData) + if err != nil { + t.Fatalf("Could not load public key") + } + + kv := versioned.NewKV(ekv.Memstore{}) + udStore, err := store.NewOrLoadStore(kv) + if err != nil { + t.Fatalf("Failed to initialize store %v", err) + } + + // Create our Manager object + m := &Manager{ + services: newTestNetworkManager(t), + e2e: mockE2e{}, + events: event.NewEventManager(), + user: mockUser{testing: t, key: key}, + store: udStore, + comms: &mockComms{}, + kv: kv, + rng: fastRNG.NewStreamGenerator(1, 1, csprng.NewSystemRNG), + } + + netDef := m.services.GetInstance().GetPartialNdf().Get() + // Unmarshal UD ID from the NDF + udID, err := id.Unmarshal(netDef.UDB.ID) + if err != nil { + t.Fatalf("failed to "+ + "unmarshal UD ID from NDF: %+v", err) + } + + params := connect.GetDefaultHostParams() + params.AuthEnabled = false + params.SendTimeout = 20 * time.Second + + // Add a new host and return it if it does not already exist + _, err = m.comms.AddHost(udID, netDef.UDB.Address, + []byte(netDef.UDB.Cert), params) + if err != nil { + t.Fatalf("User Discovery host " + + "object could not be constructed.") + } + + return m +} + +func newTestNetworkManager(t *testing.T) cmix.Client { instanceComms := &connect.ProtoComms{ Manager: connect.NewManagerTesting(t), } @@ -49,52 +122,369 @@ func newTestNetworkManager(t *testing.T) interfaces.NetworkManager { } } +func getGroup() *cyclic.Group { + return cyclic.NewGroup( + large.NewIntFromString("E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D4941"+ + "3394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688"+ + "B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861"+ + "575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC"+ + "718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FF"+ + "B1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBC"+ + "A23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD"+ + "161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2B"+ + "EEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C"+ + "4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F"+ + "1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F"+ + "96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA7554715"+ + "84A09EC723742DC35873847AEF49F66E43873", 16), + large.NewIntFromString("2", 16)) +} + +type mockUser struct { + testing *testing.T + key *rsa.PrivateKey +} + +func (m mockUser) PortableUserInfo() user.Info { + + return user.Info{ + TransmissionID: id.NewIdFromString("test", id.User, m.testing), + TransmissionSalt: []byte("test"), + TransmissionRSA: m.key, + ReceptionID: id.NewIdFromString("test", id.User, m.testing), + ReceptionSalt: []byte("test"), + ReceptionRSA: m.key, + Precanned: false, + RegistrationTimestamp: 0, + E2eDhPrivateKey: getGroup().NewInt(5), + E2eDhPublicKey: getGroup().NewInt(6), + } +} + +func (m mockUser) GetReceptionRegistrationValidationSignature() []byte { + return []byte("test") +} + // testNetworkManager is a test implementation of NetworkManager interface. type testNetworkManager struct { instance *network.Instance } -func (tnm *testNetworkManager) SendE2E(message.Send, params.E2E, *stoppable.Single) ([]id.Round, e2e.MessageID, time.Time, error) { - return nil, e2e.MessageID{}, time.Time{}, nil +func (tnm *testNetworkManager) GetInstance() *network.Instance { + return tnm.instance } -func (tnm *testNetworkManager) SendUnsafe(message.Send, params.Unsafe) ([]id.Round, error) { - return nil, nil +func (tnm *testNetworkManager) GetVerboseRounds() string { + //TODO implement me + panic("implement me") } -func (tnm *testNetworkManager) GetVerboseRounds() string { - return "" +func (tnm *testNetworkManager) Follow(report cmix.ClientErrorReport) (stoppable.Stoppable, error) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) GetMaxMessageLength() int { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) Send(recipient *id.ID, fingerprint format.Fingerprint, service cmixMsg.Service, payload, mac []byte, cmixParams cmix.CMIXParams) (id.Round, ephemeral.Id, error) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) SendMany(messages []cmix.TargetedCmixMessage, p cmix.CMIXParams) (id.Round, []ephemeral.Id, error) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) AddIdentity(id *id.ID, validUntil time.Time, persistent bool) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) RemoveIdentity(id *id.ID) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) GetIdentity(get *id.ID) (identity.TrackedID, error) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) AddFingerprint(identity *id.ID, fingerprint format.Fingerprint, mp cmixMsg.Processor) error { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) DeleteFingerprint(identity *id.ID, fingerprint format.Fingerprint) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) DeleteClientFingerprints(identity *id.ID) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) AddService(clientID *id.ID, newService cmixMsg.Service, response cmixMsg.Processor) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) DeleteService(clientID *id.ID, toDelete cmixMsg.Service, processor cmixMsg.Processor) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) DeleteClientService(clientID *id.ID) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) TrackServices(tracker cmixMsg.ServicesTracker) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) CheckInProgressMessages() { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) IsHealthy() bool { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) WasHealthy() bool { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) AddHealthCallback(f func(bool)) uint64 { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) RemoveHealthCallback(u uint64) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) HasNode(nid *id.ID) bool { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) NumRegisteredNodes() int { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) TriggerNodeRegistration(nid *id.ID) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) GetRoundResults(timeout time.Duration, roundCallback cmix.RoundEventCallback, roundList ...id.Round) error { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) LookupHistoricalRound(rid id.Round, callback rounds.RoundResultCallback) error { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) SendToAny(sendFunc func(host *connect.Host) (interface{}, error), stop *stoppable.Single) (interface{}, error) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) SendToPreferred(targets []*id.ID, sendFunc gateway.SendToPreferredFunc, stop *stoppable.Single, timeout time.Duration) (interface{}, error) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) SetGatewayFilter(f gateway.Filter) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) GetHostParams() connect.HostParams { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) GetAddressSpace() uint8 { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) RegisterAddressSpaceNotification(tag string) (chan uint8, error) { + //TODO implement me + panic("implement me") +} + +func (tnm *testNetworkManager) UnregisterAddressSpaceNotification(tag string) { + //TODO implement me + panic("implement me") +} + +type mockUserStore struct{} + +func (m mockUserStore) PortableUserInfo() user.Info { + //TODO implement me + panic("implement me") +} + +func (m mockUserStore) GetUsername() (string, error) { + //TODO implement me + panic("implement me") +} + +func (m mockUserStore) GetReceptionRegistrationValidationSignature() []byte { + //TODO implement me + panic("implement me") +} + +type mockComms struct { + udHost *connect.Host +} + +func (m mockComms) SendRegisterUser(host *connect.Host, message *pb.UDBUserRegistration) (*messages.Ack, error) { + //TODO implement me + panic("implement me") +} + +func (m mockComms) SendRegisterFact(host *connect.Host, message *pb.FactRegisterRequest) (*pb.FactRegisterResponse, error) { + //TODO implement me + panic("implement me") +} + +func (m mockComms) SendConfirmFact(host *connect.Host, message *pb.FactConfirmRequest) (*messages.Ack, error) { + //TODO implement me + panic("implement me") +} + +func (m mockComms) SendRemoveFact(host *connect.Host, message *pb.FactRemovalRequest) (*messages.Ack, error) { + //TODO implement me + panic("implement me") +} + +func (m mockComms) SendRemoveUser(host *connect.Host, message *pb.FactRemovalRequest) (*messages.Ack, error) { + //TODO implement me + panic("implement me") +} + +func (m *mockComms) AddHost(hid *id.ID, address string, cert []byte, params connect.HostParams) (host *connect.Host, err error) { + h, err := connect.NewHost(hid, address, cert, params) + if err != nil { + return nil, err + } + + m.udHost = h + return h, nil } -func (tnm *testNetworkManager) SendCMIX(format.Message, *id.ID, params.CMIX) (id.Round, ephemeral.Id, error) { - return 0, ephemeral.Id{}, nil +func (m mockComms) GetHost(hostId *id.ID) (*connect.Host, bool) { + return m.udHost, true } -func (tnm *testNetworkManager) SendManyCMIX([]message.TargetedCmixMessage, params.CMIX) (id.Round, []ephemeral.Id, error) { - return 0, nil, nil +type mockE2e struct{} + +func (m mockE2e) SendE2E(mt catalog.MessageType, recipient *id.ID, payload []byte, params e2e.Params) ([]id.Round, e2eCrypto.MessageID, time.Time, error) { + //TODO implement me + panic("implement me") } -type dummyEventMgr struct{} +func (m mockE2e) RegisterListener(senderID *id.ID, messageType catalog.MessageType, newListener receive.Listener) receive.ListenerID { + //TODO implement me + panic("implement me") +} -func (d *dummyEventMgr) Report(int, string, string, string) {} -func (tnm *testNetworkManager) GetEventManager() event.Reporter { - return &dummyEventMgr{} +func (m mockE2e) RegisterFunc(name string, senderID *id.ID, messageType catalog.MessageType, newListener receive.ListenerFunc) receive.ListenerID { + //TODO implement me + panic("implement me") } -func (tnm *testNetworkManager) GetInstance() *network.Instance { return tnm.instance } -func (tnm *testNetworkManager) GetHealthTracker() interfaces.HealthTracker { return nil } -func (tnm *testNetworkManager) Follow(interfaces.ClientErrorReport) (stoppable.Stoppable, error) { - return nil, nil +func (m mockE2e) SendUnsafe(mt catalog.MessageType, recipient *id.ID, payload []byte, params e2e.Params) ([]id.Round, time.Time, error) { + //TODO implement me + panic("implement me") } -func (tnm *testNetworkManager) CheckGarbledMessages() {} -func (tnm *testNetworkManager) InProgressRegistrations() int { return 0 } -func (tnm *testNetworkManager) GetSender() *gateway.Sender { return nil } -func (tnm *testNetworkManager) GetAddressSize() uint8 { return 0 } -func (tnm *testNetworkManager) RegisterAddressSizeNotification(string) (chan uint8, error) { - return nil, nil + +func (m mockE2e) StartProcesses() (stoppable.Stoppable, error) { + //TODO implement me + panic("implement me") +} + +func (m mockE2e) RegisterChannel(name string, senderID *id.ID, messageType catalog.MessageType, newListener chan receive.Message) receive.ListenerID { + //TODO implement me + panic("implement me") +} + +func (m mockE2e) Unregister(listenerID receive.ListenerID) { + //TODO implement me + panic("implement me") +} + +func (m mockE2e) AddPartner(partnerID *id.ID, partnerPubKey, myPrivKey *cyclic.Int, partnerSIDHPubKey *sidh.PublicKey, mySIDHPrivKey *sidh.PrivateKey, sendParams, receiveParams session.Params) (partner.Manager, error) { + //TODO implement me + panic("implement me") +} + +func (m mockE2e) GetPartner(partnerID *id.ID) (partner.Manager, error) { + //TODO implement me + panic("implement me") +} + +func (m mockE2e) DeletePartner(partnerId *id.ID) error { + //TODO implement me + panic("implement me") +} + +func (m mockE2e) GetAllPartnerIDs() []*id.ID { + //TODO implement me + panic("implement me") +} + +func (m mockE2e) AddService(tag string, processor cmixMsg.Processor) error { + //TODO implement me + panic("implement me") +} + +func (m mockE2e) RemoveService(tag string) error { + //TODO implement me + panic("implement me") +} + +func (m mockE2e) EnableUnsafeReception() { + //TODO implement me + panic("implement me") +} + +func (m mockE2e) GetGroup() *cyclic.Group { + //TODO implement me + panic("implement me") +} + +func (m mockE2e) GetHistoricalDHPubkey() *cyclic.Int { + //TODO implement me + panic("implement me") +} + +func (m mockE2e) GetHistoricalDHPrivkey() *cyclic.Int { + //TODO implement me + panic("implement me") +} + +func (m mockE2e) GetReceptionID() *id.ID { + //TODO implement me + panic("implement me") } -func (tnm *testNetworkManager) UnregisterAddressSizeNotification(string) {} -func (tnm *testNetworkManager) SetPoolFilter(gateway.Filter) {} func getNDF() *ndf.NetworkDefinition { return &ndf.NetworkDefinition{