chore: refresh gramsrv public release

This commit is contained in:
A 2026-06-30 14:37:43 +08:00
parent 75cebe8dbf
commit 70b6820474
1274 changed files with 378751 additions and 59919 deletions

View file

@ -0,0 +1,77 @@
package rpc
import (
"testing"
"telesrv/internal/domain"
)
func TestCallbackRegistryResolveDelivers(t *testing.T) {
reg := newCallbackRegistry()
queryID, p := reg.register(100, 200)
if queryID == 0 {
t.Fatal("query id must be non-zero")
}
want := domain.BotCallbackAnswer{Alert: true, Message: "hi"}
if !reg.resolve(100, queryID, want) {
t.Fatal("resolve by owner bot must succeed")
}
select {
case got := <-p.ch:
if got != want {
t.Fatalf("delivered %+v, want %+v", got, want)
}
default:
t.Fatal("answer not delivered to channel")
}
// 解挂后条目已删除:再次 resolve 失败、registry 计数归零。
if reg.resolve(100, queryID, want) {
t.Fatal("second resolve must fail (already deregistered)")
}
if n := reg.size(); n != 0 {
t.Fatalf("registry size = %d, want 0 after resolve", n)
}
}
func TestCallbackRegistryNonOwnerRejected(t *testing.T) {
reg := newCallbackRegistry()
queryID, p := reg.register(100, 200)
// 非属主 bot999不得解挂I6
if reg.resolve(999, queryID, domain.BotCallbackAnswer{Message: "evil"}) {
t.Fatal("non-owner resolve must be rejected")
}
select {
case <-p.ch:
t.Fatal("non-owner answer must not be delivered")
default:
}
if n := reg.size(); n != 1 {
t.Fatalf("registry size = %d, want 1 (entry retained after rejected resolve)", n)
}
reg.deregister(queryID)
if n := reg.size(); n != 0 {
t.Fatalf("registry size = %d, want 0 after deregister", n)
}
}
func TestCallbackRegistryUnknownQuery(t *testing.T) {
reg := newCallbackRegistry()
if reg.resolve(100, 12345, domain.BotCallbackAnswer{}) {
t.Fatal("resolve of unregistered query must fail")
}
}
func TestCallbackRegistryUniqueQueryIDs(t *testing.T) {
reg := newCallbackRegistry()
seen := make(map[int64]struct{})
for i := 0; i < 1000; i++ {
q, _ := reg.register(1, 2)
if _, dup := seen[q]; dup {
t.Fatalf("duplicate query id %d", q)
}
seen[q] = struct{}{}
}
if n := reg.size(); n != 1000 {
t.Fatalf("registry size = %d, want 1000", n)
}
}