Enable Feishu session username override with OpenVPN 2.7

This commit is contained in:
Codex committed 2026-10-23 00:05:59 +08:00
1 parent 8fd8c0cd73
commit db3092344f
3 files changed
+115 -5

No files matched your search

@@ -98,16 +98,47 @@ func TestBuiltInOIDCUsesStableSubjectAsOpenVPNUsername(t *testing.T) {
config := map[string]interface{}{
"oidc_provider": "builtin", "oidc_issuer": "https://vpn.example.com/id",
}
generated := oidcConfig(tunnel, config)
generated := oidcConfig(tunnel, config, true)
if !strings.Contains(generated, `openvpn-username: "string(token.claims.sub)"`) {
t.Fatalf("built-in issuer must use verified subject as username: %s", generated)
}
if !strings.Contains(generated, "override-username: true") {
t.Fatal("OpenVPN 2.7 must receive the authenticated subject in its status output")
}
if generated := oidcConfig(tunnel, config, false); strings.Contains(generated, "override-username:") {
t.Fatal("OpenVPN 2.6 must not receive an unsupported username override")
}
config["oidc_provider"] = "external"
if generated := oidcConfig(tunnel, config); strings.Contains(generated, "openvpn-username:") {
if generated := oidcConfig(tunnel, config, true); strings.Contains(generated, "openvpn-username:") || strings.Contains(generated, "override-username:") {
t.Fatalf("external issuer username behavior must remain unchanged: %s", generated)
}
}
func TestOverrideUsernameRequiresOpenVPN27(t *testing.T) {
dir := t.TempDir()
t.Setenv("VPN_DATA_DIR", dir)
binDir := filepath.Join(dir, "bin")
if err := os.MkdirAll(binDir, 0o700); err != nil {
t.Fatal(err)
}
bin := filepath.Join(binDir, "openvpn")
for _, tc := range []struct {
version string
want bool
}{
{"OpenVPN 2.6.19 test\n", false},
{"OpenVPN 2.7.8 test\n", true},
{"unexpected output\n", false},
} {
if err := os.WriteFile(bin, []byte("#!/bin/sh\necho '"+strings.TrimSpace(tc.version)+"'\n"), 0o700); err != nil {
t.Fatal(err)
}
if got := supportsOverrideUsername(); got != tc.want {
t.Fatalf("version %q: supportsOverrideUsername() = %v, want %v", tc.version, got, tc.want)
}
}
}
func TestOIDCRejectsUnsafeURLs(t *testing.T) {
base := map[string]interface{}{
"auth_mode": "oidc", "oidc_issuer": "https://idp.example.com/realms/a",