okami.mom/albedo

git clone https://git.nkp.pet/okami.mom/albedo

dawntui: page_view docs on listFrame and listView, always-live filter, shared confirm, ctrl+r retry, gallery of every page state2ecf203

main
1.1 KiB31 linesraw
1// Page secret actions must mask typed input with EchoPassword and never leak plaintext in views.
2// Echo masking and view rendering live purely inside Bubble Tea models;
3// E2E lacks a PTY harness to observe unsubmitted keystroke echo.
4package tui
5
6import (
7	"albedo/cli/internal/daemon"
8	"strings"
9	"testing"
10
11	"charm.land/bubbles/v2/textinput"
12	tea "charm.land/bubbletea/v2"
13)
14
15func TestPageSecretInputIsMasked(t *testing.T) {
16	doc := &PageDocument{Title: "webhooks", Actions: []PageAction{
17		{ID: "rotate", Key: "ctrl+t", Label: "rotate", Fields: []daemon.FormField{{Name: "secret", Label: "replacement", Type: "secret", Required: true}}},
18	}}
19	m := NewPageViewModel(nil, "session", "/webhooks")
20	m.setDoc(doc)
21	m.Busy = false
22	m.SetSize(80, 24)
23	m, _ = m.Update(tea.KeyPressMsg{Code: 't', Mod: tea.ModCtrl})
24	if m.Mode != modeText || m.TextInput.EchoMode != textinput.EchoPassword {
25		t.Fatalf("secret action should mask input: %+v", m)
26	}
27	m.TextInput.SetValue("sensitive-signing-key")
28	if strings.Contains(m.View(), "sensitive-signing-key") {
29		t.Fatal("secret was rendered on the page")
30	}
31}