refactor: remove workbench code from im server
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user