Scroll lifecycle screen and restore remote groups
This commit is contained in:
@@ -1972,8 +1972,11 @@ func TestUIRecentRemoteConnectionsPersistAndReload(t *testing.T) {
|
||||
first := newUIWithSession("desktop", &session.Manager{})
|
||||
first.recentRemotesPath = configPath
|
||||
first.recentRemotes = nil
|
||||
first.currentPath = []string{"Root", "Internet"}
|
||||
first.noteRecentRemote("https://dav.example.com", "vaults/home.kdbx", "alice", "secret-1", true)
|
||||
first.currentPath = []string{"Root", "Home"}
|
||||
first.noteRecentRemote("https://dav.example.com", "vaults/team.kdbx", "bob", "secret-2", false)
|
||||
first.currentPath = []string{"Root", "Finance"}
|
||||
first.noteRecentRemote("https://dav.example.com", "vaults/home.kdbx", "alice", "secret-3", true)
|
||||
|
||||
second := newUIWithSession("desktop", &session.Manager{})
|
||||
@@ -1987,9 +1990,73 @@ func TestUIRecentRemoteConnectionsPersistAndReload(t *testing.T) {
|
||||
if got := second.recentRemotes[0]; got.BaseURL != "https://dav.example.com" || got.Path != "vaults/home.kdbx" || got.Username != "alice" || got.Password != "secret-3" {
|
||||
t.Fatalf("recentRemotes[0] = %#v, want updated remembered credentials", got)
|
||||
}
|
||||
if got := second.recentRemotes[0].LastGroup; !slices.Equal(got, []string{"Root", "Finance"}) {
|
||||
t.Fatalf("recentRemotes[0].LastGroup = %v, want [Root Finance]", got)
|
||||
}
|
||||
if got := second.recentRemotes[1]; got.Username != "" || got.Password != "" {
|
||||
t.Fatalf("recentRemotes[1] = %#v, want credentials omitted when remember disabled", got)
|
||||
}
|
||||
if got := second.recentRemotes[1].LastGroup; !slices.Equal(got, []string{"Root", "Home"}) {
|
||||
t.Fatalf("recentRemotes[1].LastGroup = %v, want [Root Home]", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUIOpenRemoteVaultRestoresLastOpenedGroupForThatConnection(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
dir := t.TempDir()
|
||||
statePath := filepath.Join(dir, "recent-remotes.json")
|
||||
masterKey := vault.MasterKey{Password: "correct horse battery staple"}
|
||||
|
||||
var encoded bytes.Buffer
|
||||
if err := vault.SaveKDBXWithKey(&encoded, vault.Model{
|
||||
Entries: []vault.Entry{
|
||||
{ID: "entry-1", Title: "Vault Console", Path: []string{"Root", "Internet"}},
|
||||
},
|
||||
}, masterKey); err != nil {
|
||||
t.Fatalf("SaveKDBXWithKey() error = %v", err)
|
||||
}
|
||||
|
||||
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
switch r.Method {
|
||||
case http.MethodGet:
|
||||
_, _ = w.Write(encoded.Bytes())
|
||||
default:
|
||||
t.Fatalf("unexpected method = %s", r.Method)
|
||||
}
|
||||
}))
|
||||
defer server.Close()
|
||||
|
||||
first := newUIWithSession("desktop", &session.Manager{})
|
||||
first.recentRemotesPath = statePath
|
||||
first.recentRemotes = nil
|
||||
first.lifecycleMode = "remote"
|
||||
first.masterPassword.SetText("correct horse battery staple")
|
||||
first.remoteBaseURL.SetText(server.URL)
|
||||
first.remotePath.SetText("vault.kdbx")
|
||||
if err := first.openRemoteAction(); err != nil {
|
||||
t.Fatalf("openRemoteAction() error = %v", err)
|
||||
}
|
||||
first.state.NavigateToPath([]string{"Root", "Internet"})
|
||||
first.currentPath = []string{"Root", "Internet"}
|
||||
first.syncedPath = []string{"Root", "Internet"}
|
||||
first.noteCurrentRemotePath()
|
||||
|
||||
reopened := newUIWithSession("desktop", &session.Manager{})
|
||||
reopened.recentRemotesPath = statePath
|
||||
reopened.recentRemotes = nil
|
||||
reopened.loadRecentRemotes()
|
||||
reopened.lifecycleMode = "remote"
|
||||
reopened.masterPassword.SetText("correct horse battery staple")
|
||||
reopened.remoteBaseURL.SetText(server.URL)
|
||||
reopened.remotePath.SetText("vault.kdbx")
|
||||
if err := reopened.openRemoteAction(); err != nil {
|
||||
t.Fatalf("openRemoteAction() error = %v", err)
|
||||
}
|
||||
|
||||
if got := reopened.state.CurrentPath; !slices.Equal(got, []string{"Root", "Internet"}) {
|
||||
t.Fatalf("state.CurrentPath after reopen = %v, want [Root Internet]", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDefaultStatePathsUsesProvidedStateDir(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user