refactor(routing): 暴露 system_locked_domains + 服务端 follow-up 清理(FK/Validate/dedup/exclude单源/共用Store/Builtin保留)
This commit is contained in:
@@ -64,6 +64,19 @@ func openRoutingDB(t *testing.T) *sql.DB {
|
||||
return db
|
||||
}
|
||||
|
||||
// seedConnectUser inserts a minimal users row so routing_profiles inserts
|
||||
// (which now declare FOREIGN KEY (user_id) REFERENCES users(id)) satisfy the
|
||||
// constraint — this DB opens with _pragma=foreign_keys(1) (internal/db/db.go),
|
||||
// so SQLite does enforce it, unlike a bare default SQLite connection.
|
||||
func seedConnectUser(t *testing.T, db *sql.DB, id int64) {
|
||||
t.Helper()
|
||||
uuid := "u-connect"
|
||||
if _, err := db.Exec(`INSERT INTO users (id,uuid,email,pw_hash,dp_uuid,status,created_at)
|
||||
VALUES (?,?,?, 'x','dp-'||?, 'active', ?)`, id, uuid, uuid+"@x", uuid, time.Now().UTC()); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
// newOnlineHub returns a real *nodes.Hub (backed by miniredis) with nodeUUID
|
||||
// registered online, so ConnectNode's a.hub.IsOnline(...) gate passes and
|
||||
// Push(...) succeeds without a real Redis deployment.
|
||||
@@ -98,6 +111,7 @@ func TestConnectNode_ReadsRoutingProfile(t *testing.T) {
|
||||
const uid = int64(42)
|
||||
|
||||
db := openRoutingDB(t)
|
||||
seedConnectUser(t, db, uid)
|
||||
rst := routing.NewStore(db)
|
||||
p := routing.Default()
|
||||
p.Rules = []routing.Rule{
|
||||
@@ -167,6 +181,7 @@ func TestConnectNode_RoutingStoreErr_FailsSafe(t *testing.T) {
|
||||
const uid = int64(44)
|
||||
|
||||
db := openRoutingDB(t)
|
||||
seedConnectUser(t, db, uid)
|
||||
// 写入一条无法反序列化的 profile_json,模拟 Get 出错。
|
||||
if _, err := db.Exec(`INSERT INTO routing_profiles (user_id, profile_json, updated_at) VALUES (?,?,?)`,
|
||||
uid, "{not-json", time.Now().UTC()); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user