fix(mysql): adapt tenant shared database fields
This commit is contained in:
@@ -6,6 +6,8 @@ import (
|
||||
"database/sql"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
types "github.com/tinode/chat/server/store/types"
|
||||
)
|
||||
|
||||
type recordingGroupSchemaExecutor struct {
|
||||
@@ -54,12 +56,36 @@ func TestEnsureIMGroupBusinessTablesUsesSelectedTenantDatabase(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestGroupMessageShardTableRejectsUnsafeMonth(t *testing.T) {
|
||||
if table, ok := groupMessageShardTable("202609"); !ok || table != "im_group_messages_202609" {
|
||||
if table, ok := groupMessageShardTable(1, "202609"); !ok || table != "im_group_messages_202609" {
|
||||
t.Fatalf("unexpected valid shard: table=%q ok=%v", table, ok)
|
||||
}
|
||||
for _, month := range []string{"", "20269", "202613", "2026_09", "202609;DROP TABLE im_users"} {
|
||||
if table, ok := groupMessageShardTable(month); ok || table != "" {
|
||||
if table, ok := groupMessageShardTable(1, month); ok || table != "" {
|
||||
t.Fatalf("unsafe shard month accepted: month=%q table=%q", month, table)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestTenantPartitionTableNames(t *testing.T) {
|
||||
tests := []struct {
|
||||
tenantID types.TenantID
|
||||
friends string
|
||||
messages string
|
||||
group string
|
||||
}{
|
||||
{tenantID: 1, friends: "im_friendships", messages: "im_messages", group: "im_group_messages_202609"},
|
||||
{tenantID: 10, friends: "im_friendships", messages: "im_messages", group: "im_group_messages_202609"},
|
||||
{tenantID: 1000, friends: "im_friendships", messages: "im_messages", group: "im_group_messages_202609"},
|
||||
}
|
||||
for _, tc := range tests {
|
||||
if got := tenantFriendshipsTable(tc.tenantID); got != tc.friends {
|
||||
t.Fatalf("tenant %d friendship table: got %q, want %q", tc.tenantID, got, tc.friends)
|
||||
}
|
||||
if got := tenantMessagesTable(tc.tenantID); got != tc.messages {
|
||||
t.Fatalf("tenant %d message table: got %q, want %q", tc.tenantID, got, tc.messages)
|
||||
}
|
||||
if got, ok := tenantGroupMessagesTable(tc.tenantID, "202609"); !ok || got != tc.group {
|
||||
t.Fatalf("tenant %d group message table: got %q, ok=%v, want %q", tc.tenantID, got, ok, tc.group)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user