MCPcopy
hub / github.com/livekit/livekit / TestScriptMatch

Function TestScriptMatch

pkg/clientconfiguration/conf_test.go:83–134  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

81}
82
83func TestScriptMatch(t *testing.T) {
84 client := &livekit.ClientInfo{
85 Protocol: 6,
86 Browser: "chrome",
87 Sdk: 3, // android
88 DeviceModel: "12345",
89 BrowserVersion: "13.2",
90 Version: "2.17.1",
91 }
92
93 type testcase struct {
94 name string
95 expr string
96 result bool
97 err bool
98 }
99
100 cases := []testcase{
101 {name: "simple match", expr: `c.protocol > 5`, result: true},
102 {name: "invalid expr", expr: `cc.protocol > 5`, err: true},
103 {name: "unexist field", expr: `c.protocols > 5`, err: true},
104 {name: "combined condition", expr: `c.protocol > 5 && (c.sdk=="android" || c.sdk=="ios")`, result: true},
105 {name: "combined condition2", expr: `(c.device_model == "xiaomi 2201117ti" && c.os == "android") || ((c.browser == "firefox" || c.browser == "firefox mobile") && (c.os == "linux" || c.os == "android"))`, result: false},
106 {name: "string lesser", expr: `c.browser_version < "11.3"`, result: false},
107 {name: "string lesser eq", expr: `c.browser_version <= "13.2"`, result: true},
108 {name: "string greater", expr: `c.browser_version > "11.3"`, result: true},
109 {name: "string greater eq", expr: `c.browser_version >= "13.2"`, result: true},
110 {name: "semantic lesser", expr: `c.version < "2.16.10"`, result: false},
111 {name: "semantic lesser eq", expr: `c.version <= "2.17.1"`, result: true},
112 {name: "semantic greater", expr: `c.version > "2.16.10"`, result: true},
113 {name: "semantic greater eq", expr: `c.version >= "2.17.1"`, result: true},
114 }
115
116 for _, c := range cases {
117 t.Run(c.name, func(t *testing.T) {
118 match, err := NewScriptMatch(c.expr)
119 if err != nil {
120 if !c.err {
121 require.NoError(t, err)
122 }
123 return
124 }
125 m, err := match.Match(client)
126 if c.err {
127 require.Error(t, err)
128 } else {
129 require.Equal(t, c.result, m)
130 }
131 })
132
133 }
134}

Callers

nothing calls this directly

Calls 3

MatchMethod · 0.95
NewScriptMatchFunction · 0.85
RunMethod · 0.45

Tested by

no test coverage detected