feat: 🎸 frontend-gray plugin support cdn type deploy (#1178)

Co-authored-by: Kent Dong <ch3cho@qq.com>
This commit is contained in:
mamba
2024-08-14 15:41:32 +08:00
committed by GitHub
parent d31c978ed3
commit ba98f3a7ad
8 changed files with 524 additions and 128 deletions

View File

@@ -6,7 +6,7 @@ import (
"github.com/stretchr/testify/assert"
)
func TestGetValueByCookie(t *testing.T) {
func TestExtractCookieValueByKey(t *testing.T) {
var tests = []struct {
cookie, cookieKey, output string
}{
@@ -19,23 +19,85 @@ func TestGetValueByCookie(t *testing.T) {
for _, test := range tests {
testName := test.cookie
t.Run(testName, func(t *testing.T) {
output := GetValueByCookie(test.cookie, test.cookieKey)
output := ExtractCookieValueByKey(test.cookie, test.cookieKey)
assert.Equal(t, test.output, output)
})
}
}
func TestDecodeJsonCookie(t *testing.T) {
// 测试首页Rewrite重写
func TestIndexRewrite(t *testing.T) {
matchRules := map[string]string{
"/app1": "/mfe/app1/{version}/index.html",
"/": "/mfe/app1/{version}/index.html",
}
var tests = []struct {
userInfoStr, grayJsonKey, output string
path, output string
}{
{"{%22password%22:%22$2a$10$YAvYjA6783YeCi44/M395udIZ4Ll2iyKkQCzePaYx5NNG/aIWgICG%22%2C%22username%22:%22%E8%B0%A2%E6%99%AE%E8%80%80%22%2C%22authorities%22:[]%2C%22accountNonExpired%22:true%2C%22accountNonLocked%22:true%2C%22credentialsNonExpired%22:true%2C%22enabledd%22:true%2C%22id%22:838925798835720200%2C%22mobile%22:%22%22%2C%22userCode%22:%22noah%22%2C%22userName%22:%22%E8%B0%A2%E6%99%AE%E8%80%80%22%2C%22orgId%22:10%2C%22ocId%22:87%2C%22userType%22:%22OWN%22%2C%22firstLogin%22:false%2C%22ownOrgId%22:null%2C%22clientCode%22:%22%22%2C%22clientType%22:null%2C%22country%22:%22UAE%22%2C%22isGuide%22:null%2C%22acctId%22:null%2C%22userToken%22:null%2C%22deviceId%22:%223a47fec00a59d140%22%2C%22ocCode%22:%2299990002%22%2C%22secondType%22:%22dtl%22%2C%22vendorCode%22:%2210000001%22%2C%22status%22:%22ACTIVE%22%2C%22isDelete%22:false%2C%22email%22:%22%22%2C%22deleteStatus%22:null%2C%22deleteRequestDate%22:null%2C%22wechatId%22:null%2C%22userMfaInfoDTO%22:{%22checkMfa%22:false%2C%22checkSuccess%22:false%2C%22mobile%22:null%2C%22email%22:null%2C%22wechatId%22:null%2C%22totpSecret%22:null}}",
"userCode", "noah"},
{"/app1/", "/mfe/app1/v1.0.0/index.html"},
{"/app123", "/mfe/app1/v1.0.0/index.html"},
{"/app1/index.html", "/mfe/app1/v1.0.0/index.html"},
{"/app1/index.jsp", "/mfe/app1/v1.0.0/index.html"},
{"/app1/xxx", "/mfe/app1/v1.0.0/index.html"},
{"/xxxx", "/mfe/app1/v1.0.0/index.html"},
}
for _, test := range tests {
testName := test.userInfoStr
testName := test.path
t.Run(testName, func(t *testing.T) {
output := GetBySubKey(test.userInfoStr, test.grayJsonKey)
output := IndexRewrite(testName, "v1.0.0", matchRules)
assert.Equal(t, test.output, output)
})
}
}
func TestPrefixFileRewrite(t *testing.T) {
matchRules := map[string]string{
// 前缀匹配
"/": "/mfe/app1/{version}",
"/app2/": "/mfe/app1/{version}",
"/app1/": "/mfe/app1/{version}",
"/app1/prefix2": "/mfe/app1/{version}",
"/mfe/app1": "/mfe/app1/{version}",
}
var tests = []struct {
path, output string
}{
{"/js/a.js", "/mfe/app1/v1.0.0/js/a.js"},
{"/app2/js/a.js", "/mfe/app1/v1.0.0/js/a.js"},
{"/app1/js/a.js", "/mfe/app1/v1.0.0/js/a.js"},
{"/app1/prefix2/js/a.js", "/mfe/app1/v1.0.0/js/a.js"},
{"/app1/prefix2/js/a.js", "/mfe/app1/v1.0.0/js/a.js"},
{"/mfe/app1/js/a.js", "/mfe/app1/v1.0.0/js/a.js"},
}
for _, test := range tests {
testName := test.path
t.Run(testName, func(t *testing.T) {
output := PrefixFileRewrite(testName, "v1.0.0", matchRules)
assert.Equal(t, test.output, output)
})
}
}
func TestIsIndexRequest(t *testing.T) {
var tests = []struct {
fetchMode string
p string
output bool
}{
{"cors", "/js/a.js", false},
{"no-cors", "/js/a.js", false},
{"no-cors", "/images/a.png", false},
{"no-cors", "/index", true},
{"cors", "/inde", false},
{"no-cors", "/index.html", true},
{"no-cors", "/demo.php", true},
}
for _, test := range tests {
testPath := test.p
t.Run(testPath, func(t *testing.T) {
output := IsIndexRequest(test.fetchMode, testPath)
assert.Equal(t, test.output, output)
})
}