MCPcopy Index your code
hub / github.com/keploy/keploy / TestSimulateHTTP_MultipartRebuildWithFileNames_315

Function TestSimulateHTTP_MultipartRebuildWithFileNames_315

pkg/util_test.go:144–227  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

142}
143
144func TestSimulateHTTP_MultipartRebuildWithFileNames_315(t *testing.T) {
145 ctx := context.Background()
146 logger := zap.NewNop()
147
148 server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
149 contentType := r.Header.Get("Content-Type")
150 mediaType, params, err := mime.ParseMediaType(contentType)
151 if err != nil {
152 t.Errorf("failed to parse media type: %v", err)
153 w.WriteHeader(http.StatusBadRequest)
154 return
155 }
156 assert.Equal(t, "multipart/form-data", mediaType)
157 if params["boundary"] == "" {
158 t.Errorf("missing multipart boundary")
159 w.WriteHeader(http.StatusBadRequest)
160 return
161 }
162 assert.NotEqual(t, "legacy-boundary", params["boundary"])
163
164 reader := multipart.NewReader(r.Body, params["boundary"])
165 fields := map[string]string{}
166 files := map[string]string{}
167 fileNames := map[string]string{}
168 for {
169 part, err := reader.NextPart()
170 if err == io.EOF {
171 break
172 }
173 if err != nil {
174 t.Errorf("failed to read multipart part: %v", err)
175 w.WriteHeader(http.StatusBadRequest)
176 return
177 }
178 name := part.FormName()
179 data, err := io.ReadAll(part)
180 if err != nil {
181 t.Errorf("failed to read multipart part data: %v", err)
182 w.WriteHeader(http.StatusBadRequest)
183 return
184 }
185 if part.FileName() != "" {
186 files[name] = string(data)
187 fileNames[name] = part.FileName()
188 continue
189 }
190 fields[name] = string(data)
191 }
192
193 assert.Equal(t, "text-value", fields["text"])
194 assert.Equal(t, "binary-content", files["payload"])
195 assert.Equal(t, "blob.bin", fileNames["payload"])
196
197 w.WriteHeader(http.StatusOK)
198 }))
199 defer server.Close()
200
201 tc := &models.TestCase{

Callers

nothing calls this directly

Calls 3

SimulateHTTPFunction · 0.85
GetMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected