Files
waf-platform/EdgeNode/internal/uam/manager_test.go

106 lines
3.2 KiB
Go

// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
//go:build plus
package uam_test
import (
"encoding/json"
"github.com/TeaOSLab/EdgeNode/internal/uam"
"github.com/iwind/TeaGo/assert"
"github.com/iwind/TeaGo/types"
"net/http"
"testing"
)
func TestManager_ComposeKey(t *testing.T) {
manager, err := uam.NewManager("abc", "123")
if err != nil {
t.Fatal(err)
}
req, err := http.NewRequest(http.MethodGet, "https://127.0.0.1/hello", nil)
if err != nil {
t.Fatal(err)
}
req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.83 Safari/537.36")
t.Logf("%#v", manager.ComposeKey(req, "127.0.0.1"))
}
func TestManager_GeneratePrevKey(t *testing.T) {
manager, err := uam.NewManager("abc", "123")
if err != nil {
t.Fatal(err)
}
req, err := http.NewRequest(http.MethodGet, "https://127.0.0.1/hello", nil)
if err != nil {
t.Fatal(err)
}
req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.83 Safari/537.36")
key, err := manager.EncodeKey(manager.ComposeKey(req, "127.0.0.1"))
if err != nil {
t.Fatal(err)
}
t.Log("[" + types.String(len(key)) + "]" + key)
}
func TestParseTopDomain(t *testing.T) {
var a = assert.NewAssertion(t)
manager, err := uam.NewManager("", "")
if err != nil {
t.Fatal(err)
}
a.IsTrue(manager.ParseTopDomain("") == "")
a.IsTrue(manager.ParseTopDomain("192.168.1.1") == "192.168.1.1")
a.IsTrue(manager.ParseTopDomain("192.168.1.1:1234") == "192.168.1.1")
a.IsTrue(manager.ParseTopDomain("example.com") == "example.com")
a.IsTrue(manager.ParseTopDomain("sub.example.com") == "example.com")
a.IsTrue(manager.ParseTopDomain("google") == "google")
a.IsTrue(manager.ParseTopDomain("sub1.sub2.sub3.sub.example.com") == "example.com")
a.IsTrue(manager.ParseTopDomain("example.com.cn") == "example.com.cn")
a.IsTrue(manager.ParseTopDomain("example.net.cn") == "example.net.cn")
a.IsTrue(manager.ParseTopDomain("example.org.cn") == "example.org.cn")
a.IsTrue(manager.ParseTopDomain("sub.example.com.cn") == "example.com.cn")
a.IsTrue(manager.ParseTopDomain("a.中国") == "a.中国")
a.IsTrue(manager.ParseTopDomain("b.a.中国") == "a.中国")
}
func BenchmarkManager_MarshalKey_PB(b *testing.B) {
manager, err := uam.NewManager("abc", "123")
if err != nil {
b.Fatal(err)
}
req, err := http.NewRequest(http.MethodGet, "https://127.0.0.1/hello", nil)
if err != nil {
b.Fatal(err)
}
req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.83 Safari/537.36")
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _ = manager.ComposeKey(req, "127.0.0.1").AsPB()
}
}
func BenchmarkManager_MarshalKey_JSON(b *testing.B) {
manager, err := uam.NewManager("abc", "123")
if err != nil {
b.Fatal(err)
}
req, err := http.NewRequest(http.MethodGet, "https://127.0.0.1/hello", nil)
if err != nil {
b.Fatal(err)
}
req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.83 Safari/537.36")
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _ = json.Marshal(manager.ComposeKey(req, "127.0.0.1"))
}
}