Align keyboard and tests with controller state

This commit is contained in:
Joe Julian
2026-03-29 13:41:07 -07:00
parent 3d0a6bc43a
commit ef0fb7f5d9
+37 -37
View File
@@ -377,8 +377,8 @@ func TestUIChangeMasterKeyModeForExistingVault(t *testing.T) {
u.keyFilePath.SetText("")
u.setMasterKeyMode(vault.MasterKeyModePasswordOnly)
u.runAction("unlock vault", u.unlockAction)
if u.errorMessage == "" {
t.Fatal("errorMessage = empty, want visible invalid master key error")
if u.state.ErrorMessage == "" {
t.Fatal("state.ErrorMessage = empty, want visible invalid master key error")
}
u.setMasterKeyMode(vault.MasterKeyModePasswordAndKeyFile)
@@ -443,11 +443,11 @@ func TestUIMasterKeyValidationErrorsAreVisible(t *testing.T) {
u.runAction("create vault", u.createVaultAction)
if got := u.errorMessage; got != tt.wantError {
t.Fatalf("errorMessage = %q, want %q", got, tt.wantError)
if got := u.state.ErrorMessage; got != tt.wantError {
t.Fatalf("state.ErrorMessage = %q, want %q", got, tt.wantError)
}
if got := u.statusMessage; got != "" {
t.Fatalf("statusMessage = %q, want empty on validation error", got)
if got := u.state.StatusMessage; got != "" {
t.Fatalf("state.StatusMessage = %q, want empty on validation error", got)
}
})
}
@@ -478,8 +478,8 @@ func TestUIUnreadableAndInvalidMasterKeyErrorsAreVisible(t *testing.T) {
unreadable.setMasterKeyMode(vault.MasterKeyModeKeyFileOnly)
unreadable.keyFilePath.SetText(filepath.Join(t.TempDir(), "missing.key"))
unreadable.runAction("open vault", unreadable.openVaultAction)
if got := unreadable.errorMessage; got == "" || got[:14] != "read key file:" {
t.Fatalf("errorMessage = %q, want read key file error", got)
if got := unreadable.state.ErrorMessage; got == "" || got[:14] != "read key file:" {
t.Fatalf("state.ErrorMessage = %q, want read key file error", got)
}
wrong := newUIWithSession("desktop", &session.Manager{})
@@ -490,8 +490,8 @@ func TestUIUnreadableAndInvalidMasterKeyErrorsAreVisible(t *testing.T) {
}
wrong.vaultPath.SetText(path)
wrong.runAction("open vault", wrong.openVaultAction)
if got := wrong.errorMessage; got == "" || !bytes.Contains([]byte(got), []byte(vault.ErrInvalidMasterKey.Error())) {
t.Fatalf("errorMessage = %q, want invalid master key error", got)
if got := wrong.state.ErrorMessage; got == "" || !bytes.Contains([]byte(got), []byte(vault.ErrInvalidMasterKey.Error())) {
t.Fatalf("state.ErrorMessage = %q, want invalid master key error", got)
}
}
@@ -575,11 +575,11 @@ func TestUIOpenRemoteReportsTransportFailure(t *testing.T) {
u.runAction("open remote vault", u.openRemoteAction)
if got := u.errorMessage; !strings.Contains(got, "open remote vault failed:") {
t.Fatalf("errorMessage = %q, want open remote vault failure", got)
if got := u.state.ErrorMessage; !strings.Contains(got, "open remote vault failed:") {
t.Fatalf("state.ErrorMessage = %q, want open remote vault failure", got)
}
if got := u.statusMessage; got != "" {
t.Fatalf("statusMessage = %q, want empty on remote open failure", got)
if got := u.state.StatusMessage; got != "" {
t.Fatalf("state.StatusMessage = %q, want empty on remote open failure", got)
}
}
@@ -640,11 +640,11 @@ func TestUIRemoteSaveConflictShowsVisibleErrorAndKeepsDirtyState(t *testing.T) {
u.runAction("save vault", u.saveAction)
if got := u.errorMessage; got != "Save conflict: the remote vault changed. Reopen it and retry the save." {
t.Fatalf("errorMessage = %q, want normalized save conflict guidance", got)
if got := u.state.ErrorMessage; got != "Save conflict: the remote vault changed. Reopen it and retry the save." {
t.Fatalf("state.ErrorMessage = %q, want normalized save conflict guidance", got)
}
if got := u.statusMessage; got != "" {
t.Fatalf("statusMessage = %q, want empty after remote save conflict", got)
if got := u.state.StatusMessage; got != "" {
t.Fatalf("state.StatusMessage = %q, want empty after remote save conflict", got)
}
if !u.state.Dirty {
t.Fatal("Dirty = false, want true after remote save conflict")
@@ -1634,13 +1634,13 @@ func TestUIBannerSurfacePrefersLoadingThenErrorThenStatus(t *testing.T) {
}
u.loadingMessage = ""
u.errorMessage = "save failed"
u.state.ErrorMessage = "save failed"
if got := u.bannerSurface(); got.Kind != bannerError || got.Message != "save failed" {
t.Fatalf("bannerSurface() with error = %#v, want error banner", got)
}
u.errorMessage = ""
u.statusMessage = "save complete"
u.state.ErrorMessage = ""
u.state.StatusMessage = "save complete"
if got := u.bannerSurface(); got.Kind != bannerStatus || got.Message != "save complete" {
t.Fatalf("bannerSurface() with status = %#v, want status banner", got)
}
@@ -1654,11 +1654,11 @@ func TestUIRunActionNormalizesRemoteSaveConflictsForDisplay(t *testing.T) {
return errors.New("save remote vaults/main.kdbx: " + webdav.ErrConflict.Error())
})
if got := u.errorMessage; got != "Save conflict: the remote vault changed. Reopen it and retry the save." {
t.Fatalf("errorMessage = %q, want normalized save conflict guidance", got)
if got := u.state.ErrorMessage; got != "Save conflict: the remote vault changed. Reopen it and retry the save." {
t.Fatalf("state.ErrorMessage = %q, want normalized save conflict guidance", got)
}
if got := u.statusMessage; got != "" {
t.Fatalf("statusMessage = %q, want empty on conflict", got)
if got := u.state.StatusMessage; got != "" {
t.Fatalf("state.StatusMessage = %q, want empty on conflict", got)
}
}
@@ -1715,14 +1715,14 @@ func TestUICopyActionsWriteExpectedClipboardContentsAndSanitizedFeedback(t *test
if writer.content != tt.want {
t.Fatalf("clipboard content = %q, want %q", writer.content, tt.want)
}
if u.statusMessage != tt.label+" complete" {
t.Fatalf("statusMessage = %q, want %q", u.statusMessage, tt.label+" complete")
if u.state.StatusMessage != tt.label+" complete" {
t.Fatalf("state.StatusMessage = %q, want %q", u.state.StatusMessage, tt.label+" complete")
}
if u.errorMessage != "" {
t.Fatalf("errorMessage = %q, want empty", u.errorMessage)
if u.state.ErrorMessage != "" {
t.Fatalf("state.ErrorMessage = %q, want empty", u.state.ErrorMessage)
}
if strings.Contains(u.statusMessage, tt.want) {
t.Fatalf("statusMessage = %q, must not contain copied secret or field value %q", u.statusMessage, tt.want)
if strings.Contains(u.state.StatusMessage, tt.want) {
t.Fatalf("state.StatusMessage = %q, must not contain copied secret or field value %q", u.state.StatusMessage, tt.want)
}
})
}
@@ -1751,14 +1751,14 @@ func TestUICopyActionSanitizesClipboardBackendErrors(t *testing.T) {
u.runAction("copy password", func() error { return u.copySelectedFieldAction(clipboard.TargetPassword) })
if u.errorMessage != clipboard.ErrWriteFailed.Error() {
t.Fatalf("errorMessage = %q, want %q", u.errorMessage, clipboard.ErrWriteFailed.Error())
if u.state.ErrorMessage != clipboard.ErrWriteFailed.Error() {
t.Fatalf("state.ErrorMessage = %q, want %q", u.state.ErrorMessage, clipboard.ErrWriteFailed.Error())
}
if strings.Contains(u.errorMessage, "token-1") {
t.Fatalf("errorMessage = %q, must not contain copied password", u.errorMessage)
if strings.Contains(u.state.ErrorMessage, "token-1") {
t.Fatalf("state.ErrorMessage = %q, must not contain copied password", u.state.ErrorMessage)
}
if u.statusMessage != "" {
t.Fatalf("statusMessage = %q, want empty on copy failure", u.statusMessage)
if u.state.StatusMessage != "" {
t.Fatalf("state.StatusMessage = %q, want empty on copy failure", u.state.StatusMessage)
}
}