gitlink-cli/cmd/auth/auth_test.go

84 lines
1.8 KiB
Go

package auth
import (
"bytes"
"os"
"strings"
"testing"
"github.com/gitlink-org/gitlink-cli/internal/i18n"
)
func TestAuthTokenLoginUsesLocalizedPrompt(t *testing.T) {
tr, err := i18n.New(i18n.Options{Locale: "zh-CN"})
if err != nil {
t.Fatal(err)
}
oldStoreToken := storeToken
var storedToken string
storeToken = func(token string) error {
storedToken = token
return nil
}
t.Cleanup(func() {
storeToken = oldStoreToken
})
cmd := NewAuthCmd(tr)
cmd.SetArgs([]string{"login", "--token"})
cmd.SetIn(strings.NewReader("test-token\n"))
var out bytes.Buffer
cmd.SetOut(&out)
cmd.SetErr(&out)
if err := cmd.Execute(); err != nil {
t.Fatal(err)
}
if storedToken != "test-token" {
t.Fatalf("stored token = %q, want test-token", storedToken)
}
output := out.String()
if !strings.Contains(output, "粘贴你的访问 Token") {
t.Fatalf("expected localized token prompt, got:\n%s", output)
}
if !strings.Contains(output, "Token 已保存") {
t.Fatalf("expected localized token saved message, got:\n%s", output)
}
}
func TestAuthStatusUsesLocalizedNotLoggedIn(t *testing.T) {
t.Setenv("GITLINK_CONFIG_DIR", t.TempDir())
t.Setenv(envTokenVar, "")
tr, err := i18n.New(i18n.Options{Locale: "zh-CN"})
if err != nil {
t.Fatal(err)
}
oldLoadToken := loadToken
loadToken = func() (string, error) {
return "", os.ErrNotExist
}
t.Cleanup(func() {
loadToken = oldLoadToken
})
cmd := NewAuthCmd(tr)
cmd.SetArgs([]string{"status"})
var out bytes.Buffer
cmd.SetOut(&out)
cmd.SetErr(&out)
if err := cmd.Execute(); err != nil {
t.Fatal(err)
}
output := out.String()
if !strings.Contains(output, "未登录") {
t.Fatalf("expected localized not logged in message, got:\n%s", output)
}
if !strings.Contains(output, "gitlink-cli auth login") {
t.Fatalf("expected login hint, got:\n%s", output)
}
}