/
githubmirror
/
pocketbase
Обзор
Документация
Войти
/
githubmirror
/
pocketbase
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
tests/request.go
63 строки
1 KB
Gani Georgiev
fixed formatting and typos
23 фев 2023, 22:51
23 фев 2023, 22:51
21b152b
Код
Авторство
О чём код?
package tests import ( "bytes" "io" "mime/multipart" "os" ) // MockMultipartData creates a mocked multipart/form-data payload. // // Example // // data, mp, err := tests.MockMultipartData( // map[string]string{"title": "new"}, // "file1", // "file2", // ... // ) func MockMultipartData(data map[string]string, fileFields ...string) (*bytes.Buffer, *multipart.Writer, error) { body := new(bytes.Buffer) mp := multipart.NewWriter(body) defer mp.Close() // write data fields for k, v := range data { mp.WriteField(k, v) } // write file fields for _, fileField := range fileFields { // create a test temporary file err := func() error { tmpFile, err := os.CreateTemp(os.TempDir(), "tmpfile-*.txt") if err != nil { return err } if _, err := tmpFile.Write([]byte("test")); err != nil { return err } tmpFile.Seek(0, 0) defer tmpFile.Close() defer os.Remove(tmpFile.Name()) // stub uploaded file w, err := mp.CreateFormFile(fileField, tmpFile.Name()) if err != nil { return err } if _, err := io.Copy(w, tmpFile); err != nil { return err } return nil }() if err != nil { return nil, nil, err } } return body, mp, nil }