package command import ( "bytes" "encoding/json" "io" "strings" "testing" ) func TestInitCommandReadsTokenWithoutPrintingIt(t *testing.T) { const token = "test-private-token" var receivedToken string cmd := newInitCommand( func(value string) (string, error) { receivedToken = value return "/test/repository/.env", nil }, func(input io.Reader, output io.Writer) (string, error) { _, _ = io.WriteString(output, "credential prompt") return token, nil }, ) var stdout, stderr bytes.Buffer cmd.SetOut(&stdout) cmd.SetErr(&stderr) if err := cmd.Execute(); err != nil { t.Fatal(err) } if receivedToken != token { t.Fatalf("initializer received token=%q", receivedToken) } if strings.Contains(stdout.String(), token) || strings.Contains(stderr.String(), token) { t.Fatal("init output exposed the token") } result := initResult{} if err := json.Unmarshal(stdout.Bytes(), &result); err != nil { t.Fatalf("decode init result: %v", err) } if !result.Initialized || result.EnvFile != "/test/repository/.env" { t.Fatalf("result = %#v", result) } } func TestInitCommandDoesNotExposeForceFlag(t *testing.T) { cmd := newInitCommand(func(string) (string, error) { return "", nil }, func(io.Reader, io.Writer) (string, error) { return "token", nil }) if cmd.Flags().Lookup("force") != nil { t.Fatal("init still exposes the retired --force flag") } } func TestInitTerminalReaderRejectsNonTTY(t *testing.T) { if _, err := readTokenFromTerminal(bytes.NewBufferString("token\n"), io.Discard); err == nil || !strings.Contains(err.Error(), "交互式终端") { t.Fatalf("error = %v", err) } }