Skip to content
Snippets Groups Projects
Select Git revision
  • 18daa8c27ca8670269ccd861eaff978dd3d18af7
  • release default protected
  • 11-22-implement-kv-interface-defined-in-collectiveversionedkvgo
  • hotfix/TestHostPool_UpdateNdf_AddFilter
  • XX-4719/announcementChannels
  • xx-4717/logLevel
  • jonah/noob-channel
  • master protected
  • XX-4707/tagDiskJson
  • xx-4698/notification-retry
  • hotfix/notifylockup
  • syncNodes
  • hotfix/localCB
  • XX-4677/NewChanManagerMobile
  • XX-4689/DmSync
  • duplicatePrefix
  • XX-4601/HavenInvites
  • finalizedUICallbacks
  • XX-4673/AdminKeySync
  • debugNotifID
  • anne/test
  • v4.7.5
  • v4.7.4
  • v4.7.3
  • v4.7.2
  • v4.7.1
  • v4.6.3
  • v4.6.1
  • v4.5.0
  • v4.4.4
  • v4.3.11
  • v4.3.8
  • v4.3.7
  • v4.3.6
  • v4.3.5
  • v4.2.0
  • v4.3.0
  • v4.3.4
  • v4.3.3
  • v4.3.2
  • v4.3.1
41 results

callback.go

Blame
  • register_test.go 3.63 KiB
    package api
    
    import (
    	"crypto/sha256"
    	"gitlab.com/elixxir/client/globals"
    	"gitlab.com/elixxir/client/user"
    	"gitlab.com/elixxir/comms/connect"
    	"gitlab.com/elixxir/primitives/id"
    	"reflect"
    	"testing"
    )
    
    func TestRegistrationGob(t *testing.T) {
    	// Get a Client
    	testClient, err := NewClient(&globals.RamStorage{}, "", "", def)
    	if err != nil {
    		t.Error(err)
    	}
    
    	err = testClient.InitNetwork()
    	if err != nil {
    		t.Error(err)
    	}
    	err = testClient.GenerateKeys(nil, "1234")
    	if err != nil {
    		t.Errorf("Could not generate Keys: %+v", err)
    	}
    
    	// populate a gob in the store
    	_, err = testClient.RegisterWithPermissioning(true, "UAV6IWD6")
    	if err != nil {
    		t.Error(err)
    	}
    
    	err = testClient.session.StoreSession()
    	if err != nil {
    		t.Error(err)
    	}
    
    	// get the gob out of there again
    	Session, err := user.LoadSession(testClient.storage,
    		"1234")
    	if err != nil {
    		t.Error(err)
    	}
    
    	VerifyRegisterGobUser(Session, t)
    	VerifyRegisterGobKeys(Session, testClient.topology, t)
    
    	disconnectServers()
    }
    
    //Happy path for a non precen user
    func TestClient_Register(t *testing.T) {
    	//Make mock client
    	testClient, err := NewClient(&globals.RamStorage{}, "", "", def)
    
    	if err != nil {
    		t.Error(err)
    	}
    
    	err = testClient.InitNetwork()
    	if err != nil {
    		t.Error(err)
    	}
    
    	err = testClient.GenerateKeys(nil, "password")
    	if err != nil {
    		t.Errorf("Could not generate Keys: %+v", err)
    	}
    
    	// populate a gob in the store
    	_, err = testClient.RegisterWithPermissioning(true, "UAV6IWD6")
    	if err != nil {
    		t.Error(err)
    	}
    
    	err = testClient.RegisterWithNodes()
    	if err != nil {
    		t.Error(err)
    	}
    
    	// get the gob out of there again
    	Session, err := user.LoadSession(testClient.storage,
    		"password")
    	if err != nil {
    		t.Error(err)
    	}
    
    	VerifyRegisterGobUser(Session, t)
    
    	//Probs can't do this as there is now a sense of randomness??
    	//VerifyRegisterGobKeys(Session, testClient.topology, t)
    	disconnectServers()
    }
    
    func VerifyRegisterGobUser(session user.Session, t *testing.T) {
    
    	expectedUser := id.NewUserFromUint(5, t)
    
    	if reflect.DeepEqual(session.GetCurrentUser().User, &expectedUser) {
    		t.Errorf("Incorrect User ID; \n   expected %q \n   recieved: %q",
    			expectedUser, session.GetCurrentUser().User)
    	}
    }
    
    func VerifyRegisterGobKeys(session user.Session, topology *connect.Circuit, t *testing.T) {
    	cmixGrp, _ := getGroups()
    	h := sha256.New()
    	h.Write([]byte(string(40005)))
    	expectedTransmissionBaseKey := cmixGrp.NewIntFromBytes(h.Sum(nil))
    
    	if session.GetNodeKeys(topology)[0].TransmissionKey.Cmp(
    		expectedTransmissionBaseKey) != 0 {
    		t.Errorf("Transmission base key was %v, expected %v",
    			session.GetNodeKeys(topology)[0].TransmissionKey.Text(16),
    			expectedTransmissionBaseKey.Text(16))
    	}
    
    }
    
    // Verify that a valid precanned user can register
    func TestRegister_ValidRegParams___(t *testing.T) {
    	// Initialize client with dummy storage
    	storage := DummyStorage{LocationA: "Blah", StoreA: []byte{'a', 'b', 'c'}}
    	client, err := NewClient(&storage, "hello", "", def)
    	if err != nil {
    		t.Errorf("Failed to initialize dummy client: %s", err.Error())
    	}
    
    	// InitNetwork to gateways and reg server
    	err = client.InitNetwork()
    
    	if err != nil {
    		t.Errorf("Client failed of connect: %+v", err)
    	}
    
    	err = client.GenerateKeys(nil, "")
    	if err != nil {
    		t.Errorf("%+v", err)
    	}
    
    	// Register precanned user with all gateways
    	regRes, err := client.RegisterWithPermissioning(false, ValidRegCode)
    	if err != nil {
    		t.Errorf("Registration failed: %s", err.Error())
    	}
    
    	if *regRes == *id.ZeroID {
    		t.Errorf("Invalid registration number received: %+v", *regRes)
    	}
    	err = client.RegisterWithNodes()
    	if err != nil {
    		t.Error(err)
    	}
    
    	//Disconnect and shutdown servers
    	disconnectServers()
    }