From c435d3e5c5503457eb2669b4a76c8eae0651de11 Mon Sep 17 00:00:00 2001 From: wsczx Date: Sun, 24 Aug 2025 22:40:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B5=8B=E8=AF=95=E7=94=A8?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/handler/link_auth_otp_test.go | 17 +++++++- server/handler/link_auth_test.go | 65 ++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 server/handler/link_auth_test.go diff --git a/server/handler/link_auth_otp_test.go b/server/handler/link_auth_otp_test.go index 8718667..b9eb269 100644 --- a/server/handler/link_auth_otp_test.go +++ b/server/handler/link_auth_otp_test.go @@ -259,13 +259,19 @@ func TestCreateSession(t *testing.T) { preIpData() defer closeIpdata() + base.Cfg.EnableBanner = true + + other := &dbdata.SettingOther{Banner: "测试横幅内容"} + err := dbdata.SettingSet(other) + ast.Nil(err) + // 创建测试数据 group := "session-test-group" username := "session-test-user" dns := []dbdata.ValData{{Val: "8.8.8.8"}} g := dbdata.Group{Name: group, Status: 1, ClientDns: dns} - err := dbdata.SetGroup(&g) + err = dbdata.SetGroup(&g) ast.Nil(err) u := dbdata.User{Username: username, Groups: []string{group}, Status: 1} @@ -306,6 +312,15 @@ func TestCreateSession(t *testing.T) { ast.Equal(http.StatusOK, w.Code) // 验证响应包含会话信息 ast.Contains(w.Body.String(), "session-token") + ast.Contains(w.Body.String(), "测试横幅内容") + + base.Cfg.EnableBanner = false + + w2 := httptest.NewRecorder() + CreateSession(w2, req, authSession) + + ast.Equal(http.StatusOK, w2.Code) + ast.NotContains(w2.Body.String(), "测试横幅内容") } func preIpData() { diff --git a/server/handler/link_auth_test.go b/server/handler/link_auth_test.go new file mode 100644 index 0000000..eee653a --- /dev/null +++ b/server/handler/link_auth_test.go @@ -0,0 +1,65 @@ +package handler + +import ( + "crypto/tls" + "crypto/x509" + "crypto/x509/pkix" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/bjdgyc/anylink/base" +) + +func TestLinkAuth_AuthCert(t *testing.T) { + base.Test() + + // 开启证书验证但未提供证书 + base.Cfg.AuthCert = true + base.Cfg.AuthOnlyCert = true + + req := httptest.NewRequest("POST", "/", strings.NewReader(`auth-replytesttestdefault`)) + req.Header.Set("User-Agent", "cisco anyconnect vpn agent") + req.Header.Set("X-Aggregate-Auth", "1") + req.Header.Set("X-Transcend-Version", "1") + + w := httptest.NewRecorder() + LinkAuth(w, req) + + if w.Code != http.StatusForbidden { + t.Error() + } + + // 开启证书验证但未提供证书,但证书验证失败 + base.Cfg.AuthCert = true + base.Cfg.AuthOnlyCert = true + + cert := &x509.Certificate{ + Subject: pkix.Name{ + CommonName: "", + OrganizationalUnit: []string{""}, + }, + } + req.TLS = &tls.ConnectionState{ + PeerCertificates: []*x509.Certificate{cert}, + } + + w = httptest.NewRecorder() + LinkAuth(w, req) + + if w.Code != http.StatusBadRequest { + t.Error() + } + + // 开启证书验证但未提供证书,未开启仅证书认证 + base.Cfg.AuthCert = true + base.Cfg.AuthOnlyCert = false + + w = httptest.NewRecorder() + LinkAuth(w, req) + + if w.Code == http.StatusForbidden { + t.Error() + } +}