mirror of
https://github.com/hanzoai/team.git
synced 2026-09-30 01:57:35 +00:00
* allow workflow_dispatch trigger for Server CI (for plugins CI) * [MM-68402] MBE Phase 2: declare four generic plugin hooks (#36291) * new hooks-only phase 2 * remove ChannelWillBeMoved * remove RecapWillBeProcessed and MessageWillBeRewrittenByAI Drop the AI/recap hooks from the new-hook surface; AI-LLM paths remain uncovered in tech preview and are documented as residuals. * [MM-68403] MBE Phase 3: ChannelGuards primitive (storage + cache + plugin API) (#36365) * phase 3 * phase 3: register ChannelGuard mock in test setup helper NewChannels' startup-time call to reloadGuardCache invokes s.ChannelGuard().GetAll(); without an expectation on the mock store, every test that sets up the server with GetMockStoreForSetupFunctions panics during init. * phase 3: register ChannelGuard mock in retrylayer test retrylayer.New walks every store getter to wrap it; without the mock expectation on ChannelGuard, TestRetry panics during layer construction. * use rctx properly in the store methods * phase 3: match rctx arg in testlib ChannelGuard mock GetAll now takes request.CTX, so the testify expectation must include mock.Anything; otherwise the call panics under the mocked store. * phase 3: set api.ctx in TestChannelGuardLowercaseNormalization The test constructs PluginAPI directly without a ctx, which used to work when App.RegisterChannelGuard built its own EmptyContext. Now that the App methods take rctx from the caller, the nil ctx panics inside RequestContextWithMaster. * [MM-68404] MBE Phase 4: App-layer plugin hook wiring (#36407) * phase 4 * Fix nil rctx in TestChannelGuardLowercaseNormalization The PluginAPI struct literal was missing ctx: rctx after a refactor moved the rctx declaration below the struct construction, leaving api.ctx as nil. This caused a nil pointer dereference in reloadGuardCache when RegisterChannelGuard called store.RequestContextWithMaster(nil). * Remove ChannelWillBeMoved hook call from MoveChannel (phase 4) The hook and its ID were removed from mbe-phase-2 but the call site in MoveChannel and its i18n string were not cleaned up during the rebase. * remove channel will be moved test * Remove RecapWillBeProcessed and MessageWillBeRewrittenByAI hook calls (phase 4) The hooks and their IDs were removed from mbe-phase-2 but the call sites in ProcessRecapChannel and RewriteMessage, their i18n strings, and their tests were not cleaned up during the rebase. * Revert channel_id plumbing on rewrite endpoint (phase 4) The channel_id field on RewriteRequest was added in phase 4 to feed the synthetic post passed to MessageWillBeRewrittenByAI. With that hook removed from mbe-phase-2, channel_id has no consumer; revert the field, the api4 validation, the app.RewriteMessage parameter, and the corresponding webapp client + hook plumbing. * [MM-68555] MBE Phase 5: Channel-guard enforcement + two-phase dispatch (#36473) * phase 5 * Bake plugin counter-file paths into source instead of env vars t.Setenv panics when an ancestor test calls t.Parallel, so the two channel-guard tests broke under ENABLE_FULLY_PARALLEL_TESTS in CI. Build each plugin source per-subtest with its temp file path embedded as a Go literal — same pattern as TestPluginUploadsAPI. * Remove guarded helpers and tests for dropped hooks (phase 5) The runGuardedRecapWillBeProcessed and runGuardedMessageWillBeRewrittenByAI helpers were never wired (their app-layer call sites were already removed in the phase-4 cleanup), and the corresponding sub-tests across panic / allow / reject / partial plugins reference hooks that no longer exist. * [MM-68405] MBE Phase 6: fire MessagesWillBeConsumed on the edit path (#36475) --------- --------- --------- --------- * rebase onto master --------- Co-authored-by: Hanzo Dev <[email protected]>
115 lines
3.9 KiB
Go
115 lines
3.9 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
// Hand-written *WithRPCErr mock methods for the three hooks excluded from the code generator.
|
|
// The auto-generated hooks.go (regenerated by `make plugin-mocks`) covers the base Hooks interface;
|
|
// this file adds the extra *WithRPCErr companions so *Hooks satisfies plugin.HooksWithRPCErr.
|
|
// This file is not overwritten by `make plugin-mocks` because mockery writes only hooks.go for the
|
|
// Hooks interface (filename: "{{.InterfaceNameLower}}.go" in .mockery.yaml).
|
|
|
|
package plugintest
|
|
|
|
import (
|
|
model "github.com/mattermost/mattermost/server/public/model"
|
|
plugin "github.com/mattermost/mattermost/server/public/plugin"
|
|
)
|
|
|
|
// MessageWillBePostedWithRPCErr provides a mock function with given fields: c, post
|
|
func (_m *Hooks) MessageWillBePostedWithRPCErr(c *plugin.Context, post *model.Post) (*model.Post, string, error) {
|
|
ret := _m.Called(c, post)
|
|
|
|
var r0 *model.Post
|
|
var r1 string
|
|
var r2 error
|
|
if rf, ok := ret.Get(0).(func(*plugin.Context, *model.Post) (*model.Post, string, error)); ok {
|
|
return rf(c, post)
|
|
}
|
|
if rf, ok := ret.Get(0).(func(*plugin.Context, *model.Post) *model.Post); ok {
|
|
r0 = rf(c, post)
|
|
} else if ret.Get(0) != nil {
|
|
r0 = ret.Get(0).(*model.Post)
|
|
}
|
|
|
|
if rf, ok := ret.Get(1).(func(*plugin.Context, *model.Post) string); ok {
|
|
r1 = rf(c, post)
|
|
} else {
|
|
r1 = ret.Get(1).(string)
|
|
}
|
|
|
|
if rf, ok := ret.Get(2).(func(*plugin.Context, *model.Post) error); ok {
|
|
r2 = rf(c, post)
|
|
} else {
|
|
r2 = ret.Error(2)
|
|
}
|
|
|
|
return r0, r1, r2
|
|
}
|
|
|
|
// MessageWillBeUpdatedWithRPCErr provides a mock function with given fields: c, newPost, oldPost
|
|
func (_m *Hooks) MessageWillBeUpdatedWithRPCErr(c *plugin.Context, newPost *model.Post, oldPost *model.Post) (*model.Post, string, error) {
|
|
ret := _m.Called(c, newPost, oldPost)
|
|
|
|
var r0 *model.Post
|
|
var r1 string
|
|
var r2 error
|
|
if rf, ok := ret.Get(0).(func(*plugin.Context, *model.Post, *model.Post) (*model.Post, string, error)); ok {
|
|
return rf(c, newPost, oldPost)
|
|
}
|
|
if rf, ok := ret.Get(0).(func(*plugin.Context, *model.Post, *model.Post) *model.Post); ok {
|
|
r0 = rf(c, newPost, oldPost)
|
|
} else if ret.Get(0) != nil {
|
|
r0 = ret.Get(0).(*model.Post)
|
|
}
|
|
|
|
if rf, ok := ret.Get(1).(func(*plugin.Context, *model.Post, *model.Post) string); ok {
|
|
r1 = rf(c, newPost, oldPost)
|
|
} else {
|
|
r1 = ret.Get(1).(string)
|
|
}
|
|
|
|
if rf, ok := ret.Get(2).(func(*plugin.Context, *model.Post, *model.Post) error); ok {
|
|
r2 = rf(c, newPost, oldPost)
|
|
} else {
|
|
r2 = ret.Error(2)
|
|
}
|
|
|
|
return r0, r1, r2
|
|
}
|
|
|
|
// ChannelMemberWillBeAddedWithRPCErr provides a mock function with given fields: c, channelMember
|
|
func (_m *Hooks) ChannelMemberWillBeAddedWithRPCErr(c *plugin.Context, channelMember *model.ChannelMember) (*model.ChannelMember, string, error) {
|
|
ret := _m.Called(c, channelMember)
|
|
|
|
var r0 *model.ChannelMember
|
|
var r1 string
|
|
var r2 error
|
|
if rf, ok := ret.Get(0).(func(*plugin.Context, *model.ChannelMember) (*model.ChannelMember, string, error)); ok {
|
|
return rf(c, channelMember)
|
|
}
|
|
if rf, ok := ret.Get(0).(func(*plugin.Context, *model.ChannelMember) *model.ChannelMember); ok {
|
|
r0 = rf(c, channelMember)
|
|
} else if ret.Get(0) != nil {
|
|
r0 = ret.Get(0).(*model.ChannelMember)
|
|
}
|
|
|
|
if rf, ok := ret.Get(1).(func(*plugin.Context, *model.ChannelMember) string); ok {
|
|
r1 = rf(c, channelMember)
|
|
} else {
|
|
r1 = ret.Get(1).(string)
|
|
}
|
|
|
|
if rf, ok := ret.Get(2).(func(*plugin.Context, *model.ChannelMember) error); ok {
|
|
r2 = rf(c, channelMember)
|
|
} else {
|
|
r2 = ret.Error(2)
|
|
}
|
|
|
|
return r0, r1, r2
|
|
}
|
|
|
|
// Note: plugintest.Hooks is a mock for the base Hooks interface only. The auto-generated
|
|
// hooks.go does not include *WithRPCErr methods, so *Hooks cannot satisfy HooksWithRPCErr
|
|
// in full. The production compile-time assertions for HooksWithRPCErr live in client_rpc.go
|
|
// (for *hooksRPCClient and *hooksTimerLayer). Tests that need a HooksWithRPCErr double
|
|
// should embed *Hooks and add the needed *WithRPCErr stubs directly.
|