初始化仓库
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
package feishu
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSharedWSGroup_RegisterAndAllPlatforms(t *testing.T) {
|
||||
// Clean up global state for test isolation.
|
||||
cleanup := func() {
|
||||
sharedWSMu.Lock()
|
||||
defer sharedWSMu.Unlock()
|
||||
for k := range sharedWSGroups {
|
||||
delete(sharedWSGroups, k)
|
||||
}
|
||||
}
|
||||
cleanup()
|
||||
defer cleanup()
|
||||
|
||||
p1 := &Platform{appID: "cli_test", domain: "feishu.cn"}
|
||||
p2 := &Platform{appID: "cli_test", domain: "feishu.cn"}
|
||||
|
||||
// Register first platform — should be primary.
|
||||
g1, isPrimary1 := registerSharedWS(p1)
|
||||
if !isPrimary1 {
|
||||
t.Fatal("first platform should be primary")
|
||||
}
|
||||
if len(g1.allPlatforms()) != 1 {
|
||||
t.Fatalf("expected 1 platform, got %d", len(g1.allPlatforms()))
|
||||
}
|
||||
|
||||
// Register second platform — should be secondary, same group.
|
||||
g2, isPrimary2 := registerSharedWS(p2)
|
||||
if isPrimary2 {
|
||||
t.Fatal("second platform should not be primary")
|
||||
}
|
||||
if g1 != g2 {
|
||||
t.Fatal("both platforms should share the same group")
|
||||
}
|
||||
if len(g1.allPlatforms()) != 2 {
|
||||
t.Fatalf("expected 2 platforms, got %d", len(g1.allPlatforms()))
|
||||
}
|
||||
}
|
||||
|
||||
func TestSharedWSGroup_Unregister(t *testing.T) {
|
||||
cleanup := func() {
|
||||
sharedWSMu.Lock()
|
||||
defer sharedWSMu.Unlock()
|
||||
for k := range sharedWSGroups {
|
||||
delete(sharedWSGroups, k)
|
||||
}
|
||||
}
|
||||
cleanup()
|
||||
defer cleanup()
|
||||
|
||||
p1 := &Platform{appID: "cli_test", domain: "feishu.cn"}
|
||||
p2 := &Platform{appID: "cli_test", domain: "feishu.cn"}
|
||||
|
||||
g, _ := registerSharedWS(p1)
|
||||
registerSharedWS(p2)
|
||||
|
||||
// Unregister first — one remains.
|
||||
remaining := unregisterSharedWS(p1)
|
||||
if remaining != 1 {
|
||||
t.Fatalf("expected 1 remaining, got %d", remaining)
|
||||
}
|
||||
platforms := g.allPlatforms()
|
||||
if len(platforms) != 1 || platforms[0] != p2 {
|
||||
t.Fatal("expected only p2 to remain")
|
||||
}
|
||||
|
||||
// Unregister last — group deleted.
|
||||
remaining = unregisterSharedWS(p2)
|
||||
if remaining != 0 {
|
||||
t.Fatalf("expected 0 remaining, got %d", remaining)
|
||||
}
|
||||
sharedWSMu.Lock()
|
||||
_, exists := sharedWSGroups[sharedWSKey("cli_test", "feishu.cn")]
|
||||
sharedWSMu.Unlock()
|
||||
if exists {
|
||||
t.Fatal("group should be deleted when empty")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSharedWSGroup_DifferentAppIDs(t *testing.T) {
|
||||
cleanup := func() {
|
||||
sharedWSMu.Lock()
|
||||
defer sharedWSMu.Unlock()
|
||||
for k := range sharedWSGroups {
|
||||
delete(sharedWSGroups, k)
|
||||
}
|
||||
}
|
||||
cleanup()
|
||||
defer cleanup()
|
||||
|
||||
p1 := &Platform{appID: "cli_aaa", domain: "feishu.cn"}
|
||||
p2 := &Platform{appID: "cli_bbb", domain: "feishu.cn"}
|
||||
|
||||
g1, isPrimary1 := registerSharedWS(p1)
|
||||
g2, isPrimary2 := registerSharedWS(p2)
|
||||
|
||||
if !isPrimary1 || !isPrimary2 {
|
||||
t.Fatal("different app_ids should each be primary")
|
||||
}
|
||||
if g1 == g2 {
|
||||
t.Fatal("different app_ids should have separate groups")
|
||||
}
|
||||
|
||||
unregisterSharedWS(p1)
|
||||
unregisterSharedWS(p2)
|
||||
}
|
||||
Reference in New Issue
Block a user