This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
package opsconfig
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"data-terminal-cloud/internal/audit"
|
||||
"data-terminal-cloud/internal/identity"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
)
|
||||
|
||||
func TestContentQualityAggregatesOnlySelectedTenantAndVersion(t *testing.T) {
|
||||
databaseURL := os.Getenv("TEST_DATABASE_URL")
|
||||
if databaseURL == "" {
|
||||
t.Skip("TEST_DATABASE_URL is not set")
|
||||
}
|
||||
ctx := context.Background()
|
||||
pool, err := pgxpool.New(ctx, databaseURL)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer pool.Close()
|
||||
resourceIDs := []string{uuid.NewString(), uuid.NewString(), uuid.NewString()}
|
||||
defer func() {
|
||||
_, _ = pool.Exec(ctx, `DELETE FROM content_review_signal WHERE resource_public_id=ANY($1::uuid[])`, resourceIDs)
|
||||
}()
|
||||
for index, action := range []string{"EDITED", "REJECTED", "CONFIRMED"} {
|
||||
errorType := any(nil)
|
||||
if index < 2 {
|
||||
errorType = "PERSON_ERROR"
|
||||
}
|
||||
if _, err := pool.Exec(ctx, `INSERT INTO content_review_signal(tenant_id,subject_id,resource_type,resource_public_id,action,error_type,reason,model_ref,prompt_version,generation_version,actor_id)
|
||||
VALUES('10000000-0000-0000-0000-000000000001','10000000-0000-0000-0000-000000000401','story',$1::uuid,$2,$3,$4,'quality-model-v1','quality-prompt-v2',1,'10000000-0000-0000-0000-000000000101')`, resourceIDs[index], action, errorType, "合成质量反馈"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
service, err := NewService(pool, audit.NewRepository())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
principal := identity.Principal{Issuer: "http://localhost:58180/realms/voice-local", Subject: "00000000-0000-0000-0000-000000000104"}
|
||||
items, err := service.ContentQuality(ctx, principal, "10000000-0000-0000-0000-000000000010", "quality-model-v1", "quality-prompt-v2")
|
||||
if err != nil || len(items) != 1 || items[0].Edited != 1 || items[0].Rejected != 1 || items[0].Confirmed != 1 || items[0].ErrorTypes["PERSON_ERROR"] != 2 {
|
||||
t.Fatalf("quality=%+v err=%v", items, err)
|
||||
}
|
||||
outsider := identity.Principal{Issuer: "http://localhost:58180/realms/voice-local", Subject: "00000000-0000-0000-0000-000000000103"}
|
||||
if _, err := service.ContentQuality(ctx, outsider, "10000000-0000-0000-0000-000000000010", "", ""); err != ErrAccessDenied {
|
||||
t.Fatalf("outsider quality error=%v", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user