feat: enforce youth mode policy and improve search
This commit is contained in:
@@ -10,31 +10,6 @@ import (
|
||||
"github.com/tinode/chat/server/store/types"
|
||||
)
|
||||
|
||||
func TestCanUseManagedReportsRequiresAllOrganizationVisibility(t *testing.T) {
|
||||
if !canUseManagedReports(organizationVisibility{Scope: orgVisibilityAll}) {
|
||||
t.Fatal("all visibility should be allowed to use managed report scope")
|
||||
}
|
||||
for _, scope := range []string{orgVisibilitySelf, orgVisibilityFriends, ""} {
|
||||
if canUseManagedReports(organizationVisibility{Scope: scope}) {
|
||||
t.Fatalf("scope %q should not be allowed to use managed report scope", scope)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestReportMemberScopeWhereIncludesDepartmentAndVisibility(t *testing.T) {
|
||||
where, args := reportMemberScopeWhere(organizationVisibility{Scope: orgVisibilityFriends, UserID: 42}, "dep_ops")
|
||||
joined := strings.Join(where, " AND ")
|
||||
if !strings.Contains(joined, "m.department_id=?") {
|
||||
t.Fatalf("department filter missing from where: %s", joined)
|
||||
}
|
||||
if !strings.Contains(joined, "im_friendships") {
|
||||
t.Fatalf("friend visibility filter missing from where: %s", joined)
|
||||
}
|
||||
if len(args) != 4 || args[0] != "dep_ops" || args[1] != int64(42) || args[2] != int64(42) || args[3] != types.RelationshipFriend {
|
||||
t.Fatalf("unexpected args: %#v", args)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGroupAdminAccessModeDoesNotGrantOwner(t *testing.T) {
|
||||
mode := groupAdminAccessMode()
|
||||
if !mode.IsAdmin() {
|
||||
@@ -154,6 +129,28 @@ func TestSearchPaginationCursorUsesLastReturnedRow(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestMessageSearchTextMatchesStructuredContent(t *testing.T) {
|
||||
msg := types.Message{
|
||||
Content: types.KVMap{
|
||||
"file": map[string]any{
|
||||
"file_name": "项目方案.pdf",
|
||||
},
|
||||
"link": map[string]any{
|
||||
"title": "季度复盘",
|
||||
"summary": "增长分析",
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, query := range []string{"项目方案", "季度", "增长 分析"} {
|
||||
if !messageMatchesSearch(msg, query) {
|
||||
t.Fatalf("structured message should match query %q, text=%q", query, messageSearchText(msg.Content))
|
||||
}
|
||||
}
|
||||
if messageMatchesSearch(msg, "不存在") {
|
||||
t.Fatal("structured message matched unrelated query")
|
||||
}
|
||||
}
|
||||
|
||||
func TestTenantFileAccessIncludesAvatarAudienceRules(t *testing.T) {
|
||||
source, err := os.ReadFile("tenant_adapter.go")
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user