You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.3 KiB
43 lines
1.3 KiB
package comm
|
|
|
|
import (
|
|
"strconv"
|
|
"testing"
|
|
)
|
|
|
|
// 这个测试守的是一条安全底线:服务端专用类别(实名认证等,凭据是云账号主 AK/SK)
|
|
// 绝不能被 resolveThirdSvcs 下发给客户端。改动 IsServerOnlySvc 时必须让它继续通过。
|
|
func TestIsServerOnlySvc(t *testing.T) {
|
|
idv := strconv.Itoa(int(SvcCatIdVerify))
|
|
mcp := strconv.Itoa(int(SvcCatMCP))
|
|
|
|
cases := []struct {
|
|
categories string
|
|
want bool
|
|
why string
|
|
}{
|
|
{idv, true, "纯身份证校验类别"},
|
|
{mcp + "," + idv, true, "混在其它类别里也要拦住"},
|
|
{idv + "," + mcp, true, "顺序无关"},
|
|
{" " + idv + " ", true, "带空白也要识别"},
|
|
{mcp, false, "MCP 是给客户端用的,照常下发"},
|
|
{"1,2,3", false, "普通 STT/TTS/MT 照常下发"},
|
|
{"", false, "空类别不拦"},
|
|
{"abc", false, "非数字忽略、不误判"},
|
|
}
|
|
for _, c := range cases {
|
|
if got := IsServerOnlySvc(c.categories); got != c.want {
|
|
t.Errorf("IsServerOnlySvc(%q) = %v, want %v (%s)", c.categories, got, c.want, c.why)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestCategoriesHas(t *testing.T) {
|
|
if !CategoriesHas("1,11,3", SvcCatIdVerify) {
|
|
t.Error("应识别出含 SvcCatIdVerify")
|
|
}
|
|
// 不能被子串匹配骗到:类别 1 不等于类别 11
|
|
if CategoriesHas("11", 1) {
|
|
t.Error("类别 11 被误判为含类别 1(子串匹配 bug)")
|
|
}
|
|
}
|
|
|