chore: 并入 iotlcm-admin-svr 历史到 admin-svr/(原提交 49818c6)
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
package warningnotify
|
||||
|
||||
import (
|
||||
"context"
|
||||
_ "github.com/gogf/gf/contrib/drivers/sqlite/v2"
|
||||
"github.com/gogf/gf/v2/database/gdb"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/model/do"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestWarningWechatPreferenceIsolation(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
previous := gdb.GetConfig("default")
|
||||
if err := gdb.SetConfigGroup("default", gdb.ConfigGroup{{Type: "sqlite", Link: "sqlite::@file(:memory:)", MaxOpenConnCount: 1}}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
db := g.DB()
|
||||
t.Cleanup(func() {
|
||||
_ = db.GetCore().ClearCacheAll(ctx)
|
||||
_ = db.Close(ctx)
|
||||
_ = gdb.SetConfigGroup("default", previous)
|
||||
})
|
||||
if _, err := db.Exec(ctx, "CREATE TABLE sys_config (config_id INTEGER PRIMARY KEY AUTOINCREMENT, tenant_id TEXT, config_key TEXT, config_value TEXT)"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
enabled, err := warningWechatEnabled(ctx, "tenant", 1)
|
||||
if err != nil || !enabled {
|
||||
t.Fatalf("legacy default: %v %v", enabled, err)
|
||||
}
|
||||
for _, item := range []struct{ tenant, value string }{{"tenant", "0"}, {"other", "1"}} {
|
||||
if _, err := db.Model("sys_config").Data(do.SysConfig{TenantId: item.tenant, ConfigKey: "app.wechat.warning.enabled.1", ConfigValue: item.value}).Insert(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
enabled, err = warningWechatEnabled(ctx, "tenant", 1)
|
||||
if err != nil || enabled {
|
||||
t.Fatalf("disabled preference ignored: %v %v", enabled, err)
|
||||
}
|
||||
enabled, err = warningWechatEnabled(ctx, "other", 1)
|
||||
if err != nil || !enabled {
|
||||
t.Fatalf("other tenant affected: %v %v", enabled, err)
|
||||
}
|
||||
enabled, err = warningWechatEnabled(ctx, "tenant", 2)
|
||||
if err != nil || !enabled {
|
||||
t.Fatalf("other user affected: %v %v", enabled, err)
|
||||
}
|
||||
if _, err := db.Model("sys_config").Where("tenant_id", "tenant").Data(do.SysConfig{ConfigValue: "1"}).Update(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
enabled, err = warningWechatEnabled(ctx, "tenant", 1)
|
||||
if err != nil || !enabled {
|
||||
t.Fatalf("stale preference after enable: %v %v", enabled, err)
|
||||
}
|
||||
if _, err := db.Exec(ctx, "DROP TABLE sys_config"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_ = db.GetCore().ClearCacheAll(ctx)
|
||||
enabled, err = warningWechatEnabled(ctx, "tenant", 1)
|
||||
if err == nil || enabled {
|
||||
t.Fatal("read errors must fail closed")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user