package main import ( "testing" "time" "github.com/tinode/chat/server/store" "github.com/tinode/chat/server/store/types" ) type messageAdminAuditRecorder struct { action *types.MessageAdminAction } func (r *messageAdminAuditRecorder) RecordLogin(types.TenantID, *types.LoginAuditEvent) error { return nil } func (r *messageAdminAuditRecorder) RecordLoginFailure(types.TenantID, *types.LoginFailureEvent) error { return nil } func (r *messageAdminAuditRecorder) CloseLogin(types.TenantID, string, time.Time) error { return nil } func (r *messageAdminAuditRecorder) ApplyMessageAction(_ types.TenantID, action *types.MessageAdminAction) error { r.action = action return nil } func (r *messageAdminAuditRecorder) RecordContentModeration(types.TenantID, *types.ContentModerationLog) error { return nil } func TestExecuteKafkaMessageAdminCommand(t *testing.T) { previous := store.SecurityAudit recorder := &messageAdminAuditRecorder{} store.SecurityAudit = recorder t.Cleanup(func() { store.SecurityAudit = previous }) result, err := executeKafkaMessageAdminCommand(1, kafkaEnvelope{ EventID: "event-1", TraceID: "trace-1", EventType: adminCommandMessageHide, Actor: &kafkaActor{Type: "admin", ID: "42", DisplayName: "operator"}, }, adminCommandPayload{ CommandID: "command-1", ConversationType: "private", Topic: "p2ptest", SeqID: 7, Reason: "sensitive content", }) if err != nil { t.Fatal(err) } if recorder.action == nil { t.Fatal("message action was not persisted") } if recorder.action.ActionID != "action_event-1" || recorder.action.CommandID != "command-1" || recorder.action.ActorAdminID != 42 || recorder.action.Action != "hide" || recorder.action.Topic != "p2ptest" || recorder.action.SeqID != 7 { t.Fatalf("unexpected persisted action: %+v", recorder.action) } if result["status"] != "success" || result["action"] != "hide" { t.Fatalf("unexpected command result: %+v", result) } }