package client import ( "log" "os" "strconv" "testing" "forge.redroom.link/yves/meowlib" "github.com/google/uuid" "github.com/stretchr/testify/assert" ) func exists(filename string) bool { if _, err := os.Stat(filename); err == nil { return true } else { return false } } func createId(t *testing.T) *Identity { config := GetConfig() config.IdentityFile = "test.id" err := config.SetMemPass("generalPassword") if err != nil { t.Fatalf("Failed to set password: %v", err) } // ! Extension to quickly open db : Debug only ! config.DbSuffix = ".sqlite" id, err := CreateIdentity("myname") if err != nil { log.Fatal("CreateIdentity failed") } err = id.Save() if err != nil { log.Fatal("Save failed") } for i := range 10 { var p Peer p.Uid = uuid.New().String() p.Name = "testName_" + strconv.Itoa(i) p.MyEncryptionKp, err = meowlib.NewKeyPair() if err != nil { t.Fatal(err) } p.MyIdentity, err = meowlib.NewKeyPair() if err != nil { t.Fatal(err) } p.MyLookupKp, err = meowlib.NewKeyPair() if err != nil { t.Fatal(err) } p.Name = "foo_" + strconv.Itoa(i) k, err := meowlib.NewKeyPair() if err != nil { t.Fatal(err) } p.ContactPublicKey = k.Public k, err = meowlib.NewKeyPair() if err != nil { t.Fatal(err) } p.ContactEncryption = k.Public k, err = meowlib.NewKeyPair() if err != nil { t.Fatal(err) } p.ContactLookupKey = k.Public p.MyPullServers = []string{"server1", "server2"} //p.Contact.AddUrls([]string{"http:/127.0.0.1/meow", "tcp://localhost:1234"}) //todo add servers id.Peers.StorePeer(&p) } return id } func TestLoad(t *testing.T) { if exists("test.id") { os.Remove("test.id") } id, err := LoadIdentity("test.id", "toto") if err != nil { id, err1 := CreateIdentity("myname") if err1 != nil { log.Fatal("CreateIdentity failed") } id.Save() } else { log.Println(id.Nickname) } id, err = LoadIdentity("test.id", "toto") if err != nil { log.Println(err.Error()) } assert.Equal(t, err, nil, "2nd Load error") assert.Equal(t, id.Nickname, "myname", "The two words should be the same.") if exists("test.id") { os.Remove("test.id") } } func TestHidePeer(t *testing.T) { /* id := createId() name := id.Peers[0].Name assert.Equal(t, len(id.Peers), 1) h := len(id.HiddenPeers) id.HidePeer(0, "mypassword") assert.Equal(t, len(id.Peers), 0) assert.Equal(t, len(id.HiddenPeers), h+1) id.TryUnlockHidden("mypassword") assert.Equal(t, len(id.unlockedHiddenPeers), 1) assert.Equal(t, id.unlockedHiddenPeers[0].Name, name) if exists("test.id") { os.Remove("test.id") } */ } // test GetRequestJobs func TestGetRequestJobs(t *testing.T) { // Create a mock Identity object id := createId(t) id.MessageServers = ServerStorage{ DbFile: "test.db", } err := GetConfig().SetMemPass("test") if err != nil { t.Fatalf("Failed to set password: %v", err) } GetConfig().SetIdentity(id) for i := 1; i < 10; i++ { // initialize a Server with name "server+i" srv, err := CreateServerFromUrl("server" + strconv.Itoa(i)) if err != nil { t.Fatal(err) } id.MessageServers.StoreServer(srv) } // Call GetRequestJobs jobs := id.GetRequestJobs() // Check that the returned list is as expected assert.Equal(t, 6, len(jobs), "Expected 6 jobs") // Check that each job has the correct server and lookup keys for _, job := range jobs { //fmt.Println(job.Server.GetUid(), job.LookupKeys) assert.Contains(t, []string{"server1", "server2", "server3", "server4", "server5", "server6"}, job.Server.GetUid(), "Unexpected server UID") assert.Len(t, job.LookupKeys, 1, "Expected 1 lookup key per job") } // Clean up // recursively remove the test.db folder os.RemoveAll("test.db") }