Files
apiServer-service/initializer_test.go
T

88 lines
2.3 KiB
Go

package main
import (
"bytes"
"os"
"path/filepath"
"strings"
"testing"
)
func TestResolvePrefixFromFlag(t *testing.T) {
prefix, err := resolvePrefix(" demo-api ", strings.NewReader(""), &bytes.Buffer{})
if err != nil {
t.Fatalf("resolvePrefix() error = %v", err)
}
if prefix != "demo-api" {
t.Fatalf("resolvePrefix() = %q, want %q", prefix, "demo-api")
}
}
func TestInitializeEnvCreatesAndPreservesConfig(t *testing.T) {
dir := t.TempDir()
created, err := initializeEnv(dir)
if err != nil {
t.Fatalf("initializeEnv() error = %v", err)
}
if !created {
t.Fatal("initializeEnv() created = false, want true")
}
target := filepath.Join(dir, ".env")
want, err := deploymentAssets.ReadFile(".env.example")
if err != nil {
t.Fatalf("read embedded .env.example: %v", err)
}
got, err := os.ReadFile(target)
if err != nil {
t.Fatalf("read generated .env: %v", err)
}
if !bytes.Equal(got, want) {
t.Fatal("generated .env does not match embedded .env.example")
}
const custom = "SECRET=keep-me\n"
if err := os.WriteFile(target, []byte(custom), 0o600); err != nil {
t.Fatalf("write existing .env: %v", err)
}
created, err = initializeEnv(dir)
if err != nil {
t.Fatalf("second initializeEnv() error = %v", err)
}
if created {
t.Fatal("second initializeEnv() created = true, want false")
}
got, err = os.ReadFile(target)
if err != nil {
t.Fatalf("read preserved .env: %v", err)
}
if string(got) != custom {
t.Fatalf("existing .env was overwritten: got %q", got)
}
}
func TestResolvePrefixFromInput(t *testing.T) {
var output bytes.Buffer
prefix, err := resolvePrefix("", strings.NewReader("template_1\n"), &output)
if err != nil {
t.Fatalf("resolvePrefix() error = %v", err)
}
if prefix != "template_1" {
t.Fatalf("resolvePrefix() = %q, want %q", prefix, "template_1")
}
if !strings.Contains(output.String(), "请输入项目前缀") {
t.Fatalf("prompt = %q, want prefix prompt", output.String())
}
}
func TestResolvePrefixRejectsUnsafeValues(t *testing.T) {
values := []string{"", "-demo", "demo api", "demo;reboot", "项目"}
for _, value := range values {
t.Run(value, func(t *testing.T) {
if _, err := resolvePrefix(value, strings.NewReader(""), &bytes.Buffer{}); err == nil {
t.Fatalf("resolvePrefix(%q) succeeded, want error", value)
}
})
}
}