okami.mom/albedo
git clone https://git.nkp.pet/okami.mom/albedo
2ecf203
main
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 ) { 16doc := & 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 }} 19m := NewPageViewModel (nil ,"session" ,"/webhooks" ) 20m .setDoc (doc ) 21m .Busy = false 22m .SetSize (80 ,24 ) 23m ,_ = m .Update (tea.KeyPressMsg {Code :'t' ,Mod :tea .ModCtrl }) 24if m .Mode != modeText || m .TextInput .EchoMode != textinput .EchoPassword { 25t .Fatalf ("secret action should mask input: %+v" ,m ) 26 } 27m .TextInput .SetValue ("sensitive-signing-key" ) 28if strings .Contains (m .View (),"sensitive-signing-key" ) { 29t .Fatal ("secret was rendered on the page" ) 30 } 31}