2023-03-06 21:49:11 +08:00
|
|
|
// Copyright 2023 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
|
|
|
|
|
|
|
|
|
|
package shared_test
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
|
|
|
|
|
"github.com/iwind/TeaGo/assert"
|
|
|
|
|
"testing"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestURLPattern_Match(t *testing.T) {
|
|
|
|
|
var a = assert.NewAssertion(t)
|
|
|
|
|
|
|
|
|
|
type unitTest struct {
|
|
|
|
|
patternType string
|
|
|
|
|
pattern string
|
|
|
|
|
url string
|
|
|
|
|
result bool
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, ut := range []*unitTest{
|
|
|
|
|
{
|
|
|
|
|
patternType: "wildcard",
|
|
|
|
|
pattern: "*",
|
|
|
|
|
url: "https://example.com",
|
|
|
|
|
result: true,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
patternType: "wildcard",
|
|
|
|
|
pattern: "https://example*",
|
|
|
|
|
url: "https://example.com",
|
|
|
|
|
result: true,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
patternType: "wildcard",
|
|
|
|
|
pattern: "*com",
|
|
|
|
|
url: "https://example.com",
|
|
|
|
|
result: true,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
patternType: "wildcard",
|
|
|
|
|
pattern: "*COM",
|
|
|
|
|
url: "https://example.com",
|
|
|
|
|
result: true,
|
|
|
|
|
},
|
2023-03-07 17:21:38 +08:00
|
|
|
{
|
|
|
|
|
patternType: "wildcard",
|
|
|
|
|
pattern: "*COM",
|
|
|
|
|
url: "https://example.com/hello",
|
|
|
|
|
result: false,
|
|
|
|
|
},
|
2023-03-06 21:49:11 +08:00
|
|
|
{
|
|
|
|
|
patternType: "wildcard",
|
|
|
|
|
pattern: "http://*",
|
|
|
|
|
url: "https://example.com",
|
|
|
|
|
result: false,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
patternType: "regexp",
|
|
|
|
|
pattern: ".*",
|
|
|
|
|
url: "https://example.com",
|
|
|
|
|
result: true,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
patternType: "regexp",
|
|
|
|
|
pattern: "^https://.*",
|
|
|
|
|
url: "https://example.com",
|
|
|
|
|
result: true,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
patternType: "regexp",
|
|
|
|
|
pattern: "^https://.*EXAMPLE.COM",
|
|
|
|
|
url: "https://example.com",
|
|
|
|
|
result: true,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
patternType: "regexp",
|
|
|
|
|
pattern: "(?i)https://.*EXAMPLE.COM/\\d+",
|
|
|
|
|
url: "https://example.com/123456",
|
|
|
|
|
result: true,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
patternType: "regexp",
|
|
|
|
|
pattern: "(?i)https://.*EXAMPLE.COM/\\d+$",
|
|
|
|
|
url: "https://example.com/123456/789",
|
|
|
|
|
result: false,
|
|
|
|
|
},
|
|
|
|
|
} {
|
|
|
|
|
var p = &shared.URLPattern{
|
|
|
|
|
Type: ut.patternType,
|
|
|
|
|
Pattern: ut.pattern,
|
|
|
|
|
}
|
|
|
|
|
err := p.Init()
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
a.IsTrue(p.Match(ut.url) == ut.result)
|
|
|
|
|
}
|
|
|
|
|
}
|