rulset: expr: geosite log
This commit is contained in:
65
ruleset/expr_test.go
Normal file
65
ruleset/expr_test.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package ruleset
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"git.difuse.io/Difuse/Mellaris/analyzer"
|
||||
)
|
||||
|
||||
func TestExtractGeoSiteConditions(t *testing.T) {
|
||||
expression := `
|
||||
(geosite(tls.req.sni, "openai") || geosite(quic.req.sni, "OpenAI")) &&
|
||||
geosite(http.req.headers.host, "google@ads")
|
||||
`
|
||||
got := extractGeoSiteConditions(expression)
|
||||
want := []string{"openai", "google@ads"}
|
||||
if !reflect.DeepEqual(got, want) {
|
||||
t.Fatalf("extractGeoSiteConditions() = %v, want %v", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestExtractGeoSiteHostCandidates(t *testing.T) {
|
||||
info := StreamInfo{
|
||||
Props: analyzer.CombinedPropMap{
|
||||
"quic": analyzer.PropMap{
|
||||
"req": analyzer.PropMap{
|
||||
"sni": "ChatGPT.com",
|
||||
},
|
||||
},
|
||||
"http": analyzer.PropMap{
|
||||
"req": analyzer.PropMap{
|
||||
"headers": analyzer.PropMap{
|
||||
"host": "api.openai.com:443",
|
||||
},
|
||||
},
|
||||
},
|
||||
"dns": analyzer.PropMap{
|
||||
"questions": []analyzer.PropMap{
|
||||
{"name": "chatgpt.com."},
|
||||
{"name": "8.8.8.8"},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
got := extractGeoSiteHostCandidates(info)
|
||||
want := []string{"chatgpt.com", "api.openai.com"}
|
||||
if !reflect.DeepEqual(got, want) {
|
||||
t.Fatalf("extractGeoSiteHostCandidates() = %v, want %v", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMatchGeoSiteConditions(t *testing.T) {
|
||||
hosts := []string{"chatgpt.com", "api.openai.com"}
|
||||
conditions := []string{" openai ", "google", "OPENAI"}
|
||||
got := matchGeoSiteConditions(hosts, conditions, func(site, condition string) bool {
|
||||
if condition != "openai" {
|
||||
return false
|
||||
}
|
||||
return site == "chatgpt.com" || site == "api.openai.com"
|
||||
})
|
||||
want := []string{"openai"}
|
||||
if !reflect.DeepEqual(got, want) {
|
||||
t.Fatalf("matchGeoSiteConditions() = %v, want %v", got, want)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user