增加单一源保护全局策略

This commit is contained in:
2026-06-15 00:14:40 +08:00
parent bffd4ecb98
commit b860ef37e8
12 changed files with 210 additions and 14 deletions
@@ -1282,6 +1282,41 @@ WHERE m.platform_id = $1::uuid
if err := testPool.QueryRow(ctx, `SELECT status FROM integration_platforms WHERE id = $1::uuid`, invalidKeyPlatform.ID).Scan(&invalidKeyPlatformStatus); err != nil {
t.Fatalf("read invalid key platform status: %v", err)
}
if invalidKeyPlatformStatus != "enabled" {
t.Fatalf("single source protection should keep the only source enabled, got %q", invalidKeyPlatformStatus)
}
var validKeyPlatform struct {
ID string `json:"id"`
}
doJSON(t, server.URL, http.MethodPost, "/api/admin/platforms", loginResponse.AccessToken, map[string]any{
"provider": "openai",
"platformKey": "openai-auto-disable-success-" + suffixText,
"name": "OpenAI Auto Disable Success",
"baseUrl": "https://api.openai.com/v1",
"authType": "bearer",
"credentials": map[string]any{"mode": "simulation"},
"priority": 60,
}, http.StatusCreated, &validKeyPlatform)
doJSON(t, server.URL, http.MethodPost, "/api/admin/platforms/"+validKeyPlatform.ID+"/models", loginResponse.AccessToken, map[string]any{
"canonicalModelKey": "openai:gpt-4o-mini",
"modelName": autoDisableModel,
"modelAlias": autoDisableModel,
"modelType": []string{"text_generate"},
"displayName": "Auto Disable Smoke Success",
}, http.StatusCreated, nil)
doAPIV1ChatCompletionAndLoadTask(t, ctx, testPool, server.URL, apiKeyResponse.Secret, map[string]any{
"model": autoDisableModel,
"runMode": "simulation",
"simulation": true,
"simulationDurationMs": 5,
"messages": []map[string]any{{"role": "user", "content": "disable with fallback please"}},
}, "auto-disable-with-fallback-chat-"+suffixText, http.StatusOK, nil, &autoDisableTask.Task)
if autoDisableTask.Task.Status != "succeeded" {
t.Fatalf("auto disable task should fail over after disabling the bad source: %+v", autoDisableTask.Task)
}
if err := testPool.QueryRow(ctx, `SELECT status FROM integration_platforms WHERE id = $1::uuid`, invalidKeyPlatform.ID).Scan(&invalidKeyPlatformStatus); err != nil {
t.Fatalf("read invalid key platform status after fallback: %v", err)
}
if invalidKeyPlatformStatus != "disabled" {
t.Fatalf("auto disable policy should disable platform, got %q", invalidKeyPlatformStatus)
}