feat(t226): add Go ERP session login

This commit is contained in:
QiuSW
2026-07-29 09:51:41 +08:00
parent c2f340d067
commit a5a61c05d0
23 changed files with 1633 additions and 33 deletions
@@ -52,6 +52,17 @@ func TestLoadUsesSafeDefaults(t *testing.T) {
cfg.ERPConnectorTimeout,
)
}
if cfg.ShunyunbaoURL != "https://www.shunyunbaoerp.com" ||
cfg.ShunyunbaoUsername != "" || cfg.ShunyunbaoPassword != "" ||
cfg.ShunyunbaoTimeout != 30*time.Second {
t.Fatalf(
"shunyunbao defaults = %q / %q / %q / %s",
cfg.ShunyunbaoURL,
cfg.ShunyunbaoUsername,
cfg.ShunyunbaoPassword,
cfg.ShunyunbaoTimeout,
)
}
}
func TestLoadAcceptsExplicitConfiguration(t *testing.T) {
@@ -66,6 +77,9 @@ func TestLoadAcceptsExplicitConfiguration(t *testing.T) {
ReadinessTTLEnvironment: "3m",
ERPConnectorURLEnvironment: "http://localhost:18091",
ERPConnectorAPIKeyEnvironment: "12345678901234567890123456789012",
ShunyunbaoURLEnvironment: "https://erp.example.test:8443",
ShunyunbaoUsernameEnvironment: "service-user",
ShunyunbaoPasswordEnvironment: " pass with spaces ",
}
cfg, err := Load(mapEnvironment(values))
@@ -108,6 +122,11 @@ func TestLoadAcceptsExplicitConfiguration(t *testing.T) {
cfg.ERPConnectorAPIKey,
)
}
if cfg.ShunyunbaoURL != values[ShunyunbaoURLEnvironment] ||
cfg.ShunyunbaoUsername != values[ShunyunbaoUsernameEnvironment] ||
cfg.ShunyunbaoPassword != values[ShunyunbaoPasswordEnvironment] {
t.Fatalf("shunyunbao config was not preserved")
}
}
func TestLoadRejectsUnsafeOrInvalidValues(t *testing.T) {
@@ -133,6 +152,30 @@ func TestLoadRejectsUnsafeOrInvalidValues(t *testing.T) {
ERPConnectorAPIKeyEnvironment: "short",
},
},
{
name: "non HTTPS shunyunbao URL",
values: map[string]string{
ShunyunbaoURLEnvironment: "http://erp.example.test",
},
},
{
name: "shunyunbao URL path",
values: map[string]string{
ShunyunbaoURLEnvironment: "https://erp.example.test/private",
},
},
{
name: "shunyunbao username without password",
values: map[string]string{
ShunyunbaoUsernameEnvironment: "service-user",
},
},
{
name: "shunyunbao password without username",
values: map[string]string{
ShunyunbaoPasswordEnvironment: "password",
},
},
{
name: "blank explicit address",
values: map[string]string{