Files
MyGoNavi/internal/jvm/config_test.go
Syngnat 9a61622568 feat(jvm): 增加 JVM 写入预览与审计
- 打通 JVM 变更预览、执行确认与审计记录链路
- 增加 Guard 校验、模式约束与审计写入失败回传
- 补齐审计页签、预览弹窗和 Task 5 回归覆盖
2026-04-23 12:14:36 +08:00

108 lines
2.8 KiB
Go

package jvm
import (
"testing"
"GoNavi-Wails/internal/connection"
)
func TestNormalizeConnectionConfigDefaultsToReadOnlyJMX(t *testing.T) {
raw := connection.ConnectionConfig{
Type: "jvm",
Host: "orders-prod.internal",
Port: 9010,
}
got, err := NormalizeConnectionConfig(raw)
if err != nil {
t.Fatalf("NormalizeConnectionConfig returned error: %v", err)
}
if got.JVM.ReadOnly == nil || !*got.JVM.ReadOnly {
t.Fatalf("expected JVM connection to default to readOnly")
}
if got.JVM.PreferredMode != ModeJMX {
t.Fatalf("expected preferred mode %q, got %q", ModeJMX, got.JVM.PreferredMode)
}
if len(got.JVM.AllowedModes) != 1 || got.JVM.AllowedModes[0] != ModeJMX {
t.Fatalf("expected allowed modes [jmx], got %#v", got.JVM.AllowedModes)
}
if got.JVM.JMX.Port != 9010 {
t.Fatalf("expected JMX port to inherit root port 9010, got %d", got.JVM.JMX.Port)
}
}
func TestNormalizeConnectionConfigFallsBackToFirstAllowedMode(t *testing.T) {
raw := connection.ConnectionConfig{
Type: "jvm",
Host: "cache-svc.internal",
JVM: connection.JVMConfig{
AllowedModes: []string{ModeEndpoint, ModeJMX},
PreferredMode: ModeAgent,
Endpoint: connection.JVMEndpointConfig{
Enabled: true,
BaseURL: "https://cache-svc.internal/manage/jvm",
},
},
}
got, err := NormalizeConnectionConfig(raw)
if err != nil {
t.Fatalf("NormalizeConnectionConfig returned error: %v", err)
}
if got.JVM.PreferredMode != ModeEndpoint {
t.Fatalf("expected preferred mode %q, got %q", ModeEndpoint, got.JVM.PreferredMode)
}
}
func TestNormalizeConnectionConfigKeepsExplicitReadOnlyFalse(t *testing.T) {
readOnly := false
raw := connection.ConnectionConfig{
Type: "jvm",
Port: 9010,
JVM: connection.JVMConfig{
ReadOnly: &readOnly,
},
}
got, err := NormalizeConnectionConfig(raw)
if err != nil {
t.Fatalf("NormalizeConnectionConfig returned error: %v", err)
}
if got.JVM.ReadOnly == nil {
t.Fatalf("expected readOnly to remain explicitly configured")
}
if *got.JVM.ReadOnly {
t.Fatalf("expected explicit readOnly=false to be preserved")
}
}
func TestNormalizeConnectionConfigDefaultsJMXPortTo9010WhenPortsMissing(t *testing.T) {
raw := connection.ConnectionConfig{
Type: "jvm",
Host: "orders-prod.internal",
Port: 0,
}
got, err := NormalizeConnectionConfig(raw)
if err != nil {
t.Fatalf("NormalizeConnectionConfig returned error: %v", err)
}
if got.JVM.JMX.Port != 9010 {
t.Fatalf("expected JMX port default 9010, got %d", got.JVM.JMX.Port)
}
}
func TestResolveProviderModeRejectsDisallowedRequestedMode(t *testing.T) {
_, _, err := ResolveProviderMode(connection.ConnectionConfig{
Type: "jvm",
Host: "orders.internal",
JVM: connection.JVMConfig{
AllowedModes: []string{ModeEndpoint},
PreferredMode: ModeEndpoint,
},
}, ModeJMX)
if err == nil {
t.Fatalf("expected disallowed requested mode to fail")
}
}