refactor: remove workbench code from im server

This commit is contained in:
richjohnrambo
2026-09-17 23:38:44 +08:00
parent 69a777c81f
commit 0e2f4e73d1
28 changed files with 79 additions and 9182 deletions
-91
View File
@@ -1,11 +1,8 @@
package main
import (
"bytes"
"encoding/base64"
"encoding/json"
"io"
"mime/multipart"
"net/http"
"net/http/httptest"
"net/url"
@@ -209,91 +206,3 @@ func TestLargeFileGarbageCollectTenantsScopesDeletes(t *testing.T) {
largeFileGarbageCollectTenants([]types.TenantID{7, 8}, olderThan, 25)
}
func TestLargeFileReceiveMeetingNoteUploadReturnsFileID(t *testing.T) {
ctrl := gomock.NewController(t)
defer ctrl.Finish()
oldStore := store.Store
oldFiles := store.Files
oldMeetingNotes := store.MeetingNotes
oldKafkaBus := kafkaBus
defer func() {
store.Store = oldStore
store.Files = oldFiles
store.MeetingNotes = oldMeetingNotes
kafkaBus = oldKafkaBus
}()
handler := &testLargeFileMediaHandler{}
mockStore := mock_store.NewMockPersistentStorageInterface(ctrl)
tokenAuth := mock_auth.NewMockAuthHandler(ctrl)
files := mock_store.NewMockFilePersistenceInterface(ctrl)
store.Store = mockStore
store.Files = files
store.MeetingNotes = nil
kafkaBus = nil
fileID := types.Uid(101)
mockStore.EXPECT().GetMediaHandler().Return(handler).AnyTimes()
mockStore.EXPECT().GetLogicalAuthHandler("token").Return(tokenAuth)
mockStore.EXPECT().GetUidString().Return(fileID.String())
tokenAuth.EXPECT().Authenticate(auth.AuthContext{RemoteAddr: "192.0.2.1:12345"}, []byte("token-1")).
Return(&auth.Rec{TenantID: 7, Uid: 42, AuthLevel: auth.LevelAuth}, nil, nil)
files.EXPECT().FinishUpload(types.TenantID(7), gomock.Any(), true, int64(11)).DoAndReturn(
func(_ types.TenantID, fd *types.FileDef, _ bool, size int64) (*types.FileDef, error) {
fd.Status = types.UploadCompleted
fd.Size = size
return fd, nil
})
var body bytes.Buffer
writer := multipart.NewWriter(&body)
if err := writer.WriteField("id", "upload-meeting-note-1"); err != nil {
t.Fatal(err)
}
if err := writer.WriteField("purpose", fileUploadPurposeMeetingNote); err != nil {
t.Fatal(err)
}
if err := writer.WriteField("meeting_id", "mtg_test"); err != nil {
t.Fatal(err)
}
part, err := writer.CreateFormFile("file", "notes.txt")
if err != nil {
t.Fatal(err)
}
if _, err := part.Write([]byte("hello notes")); err != nil {
t.Fatal(err)
}
if err := writer.Close(); err != nil {
t.Fatal(err)
}
req := httptest.NewRequest(http.MethodPost, "/v0/file/u/", &body)
req.RemoteAddr = "192.0.2.1:12345"
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set("X-MeetingIM-APIKey", makeTestAPIKey(t))
req.Header.Set("X-MeetingIM-Auth", "token "+base64.StdEncoding.EncodeToString([]byte("token-1")))
rec := httptest.NewRecorder()
largeFileReceiveHTTP(rec, req)
if rec.Code != http.StatusOK {
t.Fatalf("status=%d body=%s", rec.Code, rec.Body.String())
}
var resp ServerComMessage
if err := json.Unmarshal(rec.Body.Bytes(), &resp); err != nil {
t.Fatalf("decode response: %v body=%s", err, rec.Body.String())
}
params := resp.Ctrl.Params.(map[string]any)
if params["file_id"] != fileID.String() || params["purpose"] != fileUploadPurposeMeetingNote ||
params["meeting_id"] != "mtg_test" {
t.Fatalf("unexpected upload params: %#v", params)
}
if _, ok := params["note_file_id"]; ok {
t.Fatalf("upload should not bind meeting note file: %#v", params)
}
if handler.data != "hello notes" || handler.def.OriginalName != "notes.txt" {
t.Fatalf("unexpected side effects: handler=%#v", handler)
}
}