Normalize vault storage root on open and create
This commit is contained in:
+44
-11
@@ -2441,8 +2441,8 @@ func TestUIOpenRemoteActionBootstrapsFromLocalVaultBinding(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("Session.Current() error = %v", err)
|
||||
}
|
||||
if got := current.EntriesInPath([]string{"Root", "Internet"}); len(got) != 1 || got[0].Title != "Vault Console" {
|
||||
t.Fatalf("EntriesInPath(Root/Internet) = %#v, want Vault Console", got)
|
||||
if got := current.EntriesInPath([]string{"keepass", "Internet"}); len(got) != 1 || got[0].Title != "Vault Console" {
|
||||
t.Fatalf("EntriesInPath(keepass/Internet) = %#v, want Vault Console", got)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2675,8 +2675,8 @@ func TestUIStartOpenRemoteActionBootstrapsFromLocalVaultBinding(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("Session.Current() error = %v", err)
|
||||
}
|
||||
if got := current.EntriesInPath([]string{"Root", "Internet"}); len(got) != 1 || got[0].Title != "Vault Console" {
|
||||
t.Fatalf("EntriesInPath(Root/Internet) = %#v, want Vault Console", got)
|
||||
if got := current.EntriesInPath([]string{"keepass", "Internet"}); len(got) != 1 || got[0].Title != "Vault Console" {
|
||||
t.Fatalf("EntriesInPath(keepass/Internet) = %#v, want Vault Console", got)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3180,8 +3180,8 @@ func TestUIAdvancedSynchronizeFromLocalMergesIntoCurrentVault(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("reopened Current() error = %v", err)
|
||||
}
|
||||
if got := len(model.EntriesInPath([]string{"Root", "Internet"})); got != 2 {
|
||||
t.Fatalf("len(EntriesInPath(Root/Internet)) = %d, want 2", got)
|
||||
if got := len(model.EntriesInPath([]string{"keepass", "Internet"})); got != 2 {
|
||||
t.Fatalf("len(EntriesInPath(keepass/Internet)) = %d, want 2", got)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3241,8 +3241,8 @@ func TestUIAdvancedSynchronizeFromImportedLocalVaultMergesIntoCurrentVault(t *te
|
||||
if err != nil {
|
||||
t.Fatalf("reopened Current() error = %v", err)
|
||||
}
|
||||
if got := len(model.EntriesInPath([]string{"Root", "Internet"})); got != 2 {
|
||||
t.Fatalf("len(EntriesInPath(Root/Internet)) = %d, want 2", got)
|
||||
if got := len(model.EntriesInPath([]string{"keepass", "Internet"})); got != 2 {
|
||||
t.Fatalf("len(EntriesInPath(keepass/Internet)) = %d, want 2", got)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3406,8 +3406,8 @@ func TestUIAdvancedSynchronizeToRemoteWritesMergedVaultToTarget(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("reopened Current() error = %v", err)
|
||||
}
|
||||
if got := len(model.EntriesInPath([]string{"Root", "Internet"})); got != 2 {
|
||||
t.Fatalf("len(EntriesInPath(Root/Internet)) = %d, want 2", got)
|
||||
if got := len(model.EntriesInPath([]string{"keepass", "Internet"})); got != 2 {
|
||||
t.Fatalf("len(EntriesInPath(keepass/Internet)) = %d, want 2", got)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5136,6 +5136,39 @@ func TestUIAutoEntersSingleVaultRootGroupAndDisplaysSlashRoot(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestUIOpenVaultShowsLegacyRootNormalizationWarning(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
path := filepath.Join(t.TempDir(), "legacy-root.kdbx")
|
||||
var encoded bytes.Buffer
|
||||
if err := vault.SaveKDBX(&encoded, vault.Model{
|
||||
Entries: []vault.Entry{
|
||||
{ID: "vault-console", Title: "Vault Console", Path: []string{"Root", "Crew", "Internet"}},
|
||||
},
|
||||
Groups: [][]string{
|
||||
{"Root"},
|
||||
{"Root", "Crew"},
|
||||
{"Root", "Crew", "Internet"},
|
||||
},
|
||||
}, "correct horse battery staple"); err != nil {
|
||||
t.Fatalf("SaveKDBX() error = %v", err)
|
||||
}
|
||||
if err := os.WriteFile(path, encoded.Bytes(), 0o600); err != nil {
|
||||
t.Fatalf("WriteFile(legacy-root.kdbx) error = %v", err)
|
||||
}
|
||||
|
||||
u := newUIWithSession("desktop", &session.Manager{})
|
||||
u.masterPassword.SetText("correct horse battery staple")
|
||||
u.vaultPath.SetText(path)
|
||||
if err := u.openVaultAction(); err != nil {
|
||||
t.Fatalf("openVaultAction() error = %v", err)
|
||||
}
|
||||
|
||||
if got := u.state.StatusMessage; !strings.Contains(got, "legacy vault root") {
|
||||
t.Fatalf("StatusMessage = %q, want legacy vault root normalization warning", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUIAutoEntersSingleVaultRootWhenRecycleBinAlsoExists(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
@@ -8480,7 +8513,7 @@ func TestUIConsumesPendingSharedVaultImportOnStartup(t *testing.T) {
|
||||
if err := reopened.openVaultAction(); err != nil {
|
||||
t.Fatalf("openVaultAction(imported) error = %v", err)
|
||||
}
|
||||
reopened.state.NavigateToPath([]string{"Crew", "Internet"})
|
||||
reopened.state.NavigateToPath([]string{"Root", "Crew", "Internet"})
|
||||
reopened.filter()
|
||||
if got := reopened.filteredTitles(); !slices.Equal(got, []string{"Bellagio"}) {
|
||||
t.Fatalf("filteredTitles() = %v, want [Bellagio]", got)
|
||||
|
||||
Reference in New Issue
Block a user