package db import ( "log" "path" "slices" "testing" ) // TestUsers tests db operations around user management func TestUsers(t *testing.T) { posternDB, err := OpenDB(&Config{ DBPath: path.Join(t.TempDir(), "meta.db"), }) if err != nil { log.Fatal(err) } defer posternDB.Close() tx, err := posternDB.GetWriteTx(t.Context()) if err != nil { t.Fatal(err) } _, err = InsertUser(t.Context(), tx, "testuser1", []byte{}) if err != nil { t.Fatal(err) } _, err = InsertUser(t.Context(), tx, "testuser2", []byte{}) if err != nil { t.Fatal(err) } err = tx.Commit() if err != nil { t.Fatal(err) } err = posternDB.InsertUserAddress(t.Context(), "testuser1", "test1@example.com") if err != nil { t.Fatal(err) } err = posternDB.InsertUserAddress(t.Context(), "testuser1", "test2@example.com") if err != nil { t.Fatal(err) } // Test GetUser u, err := posternDB.GetUser(t.Context(), "testuser1") if err != nil { t.Fatal(err) } if len(u.Addresses) != 2 { t.Errorf("got %d addresses, want 2", len(u.Addresses)) } if !slices.Contains(u.Addresses, "test2@example.com") { t.Errorf("did not find user address in addresses") } // Test non-existing user u, err = posternDB.GetUser(t.Context(), "non-existent") if err == nil { t.Errorf("got nil, want error for non-existent user") } // Test for exists exists, err := posternDB.UserExists(t.Context(), "testuser1") if err != nil { t.Fatal(err) } if !exists { t.Errorf("expected user to exist") } exists, err = posternDB.UserExists(t.Context(), "non-existent") if err != nil { t.Fatal(err) } if exists { t.Errorf("expected user to not exist") } users, err := posternDB.ListUsers(t.Context()) if err != nil { t.Fatal(err) } if len(users) != 2 { t.Errorf("got %d users, want 2", len(users)) } for _, u = range users { if u.Name == "testuser1" { if len(u.Addresses) != 2 { t.Errorf("got %d addresses, want 2", len(u.Addresses)) } } if u.Name == "testuser2" { if len(u.Addresses) != 0 { t.Errorf("got %d addresses, want 0", len(u.Addresses)) } } } err = posternDB.RemoveUser(t.Context(), "testuser1") if err != nil { t.Fatal(err) } exists, err = posternDB.UserExists(t.Context(), "testuser1") if err != nil { t.Fatal(err) } if exists { t.Errorf("expected user to not exist") } }