Files
LinkPort/internal/model/target_account_remark_test.go
T
曾志威 9da95beb42
continuous-integration/drone Build is failing
feat: refine management UI, connection diagnostics and local startup
Migrate the workspace to React and Ant Design, improve account forms and responsive layouts, support outbound diagnostics and SSH fingerprint confirmation, and persist the management startup port. Preserve database migrations, remove S3 settings storage, and improve gateway audit handling.
2026-10-13 19:43:23 +08:00

31 lines
1.2 KiB
Go

package model
import (
"strings"
"testing"
)
func TestTargetAccountRemarkMayBeEmptyAndIsByteLimited(t *testing.T) {
target := TargetDefaults()
target.Name, target.Type, target.TargetHost, target.TargetPort = "target", "mysql", "db.invalid", 3306
target.Accounts = []TargetAccount{{ID: "account", Username: "user"}}
if err := target.ValidateAccounts(); err != nil {
t.Fatalf("empty remark rejected: %v", err)
}
target.Accounts[0].Remark = strings.Repeat("x", 101)
if err := target.ValidateAccounts(); err == nil || err.Error() != "target account remark must be at most 100 bytes" {
t.Fatalf("long remark error = %v", err)
}
}
func TestMergeTargetRejectsLegacyAccountName(t *testing.T) {
current := Target{Type: "mysql", Accounts: []TargetAccount{{ID: "account", Remark: "current", Username: "user"}}}
if _, err := MergeTarget(current, map[string]any{"accounts": []any{map[string]any{"id": "account", "name": "old", "username": "user"}}}); err == nil {
t.Fatal("legacy account name accepted")
}
updated, err := MergeTarget(current, map[string]any{"accounts": []any{map[string]any{"id": "account", "remark": "updated", "username": "user"}}})
if err != nil || updated.Accounts[0].Remark != "updated" {
t.Fatalf("current remark update failed: %v", err)
}
}