Files
im_server/server/filesafety/aliyun/green_test.go
T

71 lines
2.0 KiB
Go

package aliyun
import (
"encoding/json"
"testing"
green "github.com/alibabacloud-go/green-20220302/v3/client"
"github.com/alibabacloud-go/tea/dara"
"github.com/tinode/chat/server/store/types"
)
func TestBuildOSSServiceParameters(t *testing.T) {
got, err := buildOSSServiceParameters(OSSObject{
BucketName: "im-oss-t1",
ObjectName: "tenants/1/2026/08/file",
RegionID: "cn-shenzhen",
DataID: "task-1",
})
if err != nil {
t.Fatal(err)
}
var params map[string]string
if err := json.Unmarshal([]byte(got), &params); err != nil {
t.Fatal(err)
}
for key, want := range map[string]string{
"ossBucketName": "im-oss-t1",
"ossObjectName": "tenants/1/2026/08/file",
"ossRegionId": "cn-shenzhen",
"dataId": "task-1",
} {
if params[key] != want {
t.Fatalf("params[%s] = %q, want %q", key, params[key], want)
}
}
}
func TestStatusFromRiskLevel(t *testing.T) {
cases := map[string]string{
"": types.FileReviewStatusRunning,
"none": types.FileReviewStatusClean,
"low": types.FileReviewStatusClean,
"medium": types.FileReviewStatusRisky,
"high": types.FileReviewStatusRisky,
}
for input, want := range cases {
if got := statusFromRiskLevel(input); got != want {
t.Fatalf("statusFromRiskLevel(%q) = %q, want %q", input, got, want)
}
}
}
func TestLabelsFromFileResult(t *testing.T) {
got := labelsFromFileResult(&green.DescribeFileModerationResultResponseBodyData{
PageResult: []*green.DescribeFileModerationResultResponseBodyDataPageResult{
{ImageResult: []*green.DescribeFileModerationResultResponseBodyDataPageResultImageResult{
{LabelResult: []*green.DescribeFileModerationResultResponseBodyDataPageResultImageResultLabelResult{
{Label: dara.String("porn")},
{Label: dara.String("porn")},
}},
}},
{TextResult: []*green.DescribeFileModerationResultResponseBodyDataPageResultTextResult{
{Labels: dara.String("violence,ad")},
}},
},
})
if len(got) != 3 || got[0] != "porn" || got[1] != "violence" || got[2] != "ad" {
t.Fatalf("labelsFromFileResult = %#v", got)
}
}