Replace Python launcher with native Go UI
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestResolvePasswordUsesDirectValue(t *testing.T) {
|
||||
password, err := resolve_password(" secret ", "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if password != " secret " {
|
||||
t.Fatalf("password = %q; want whitespace preserved", password)
|
||||
}
|
||||
}
|
||||
|
||||
func TestResolvePasswordReadsProtectedFile(t *testing.T) {
|
||||
path := filepath.Join(t.TempDir(), "password")
|
||||
if err := os.WriteFile(path, []byte(" secret value \n"), 0600); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
password, err := resolve_password("", path)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if password != " secret value " {
|
||||
t.Fatalf("password = %q; want surrounding spaces preserved", password)
|
||||
}
|
||||
}
|
||||
|
||||
func TestResolvePasswordRejectsAmbiguousSources(t *testing.T) {
|
||||
path := filepath.Join(t.TempDir(), "password")
|
||||
if err := os.WriteFile(path, []byte("file secret"), 0600); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, err := resolve_password("argument secret", path)
|
||||
if err == nil || !strings.Contains(err.Error(), "cannot be used together") {
|
||||
t.Fatalf("resolve_password error = %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestResolvePasswordRejectsMultipleLines(t *testing.T) {
|
||||
path := filepath.Join(t.TempDir(), "password")
|
||||
if err := os.WriteFile(path, []byte("first\nsecond\n"), 0600); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, err := resolve_password("", path)
|
||||
if err == nil || !strings.Contains(err.Error(), "exactly one line") {
|
||||
t.Fatalf("resolve_password error = %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestResolvePasswordRejectsOversizedFile(t *testing.T) {
|
||||
path := filepath.Join(t.TempDir(), "password")
|
||||
if err := os.WriteFile(path, []byte(strings.Repeat("x", 4097)), 0600); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, err := resolve_password("", path)
|
||||
if err == nil || !strings.Contains(err.Error(), "too large") {
|
||||
t.Fatalf("resolve_password error = %v", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user