MCPcopy
hub / github.com/keploy/keploy / TestSimulateHTTP_MultipartRebuildWithPaths_314

Function TestSimulateHTTP_MultipartRebuildWithPaths_314

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

Source from the content-addressed store, hash-verified

46}
47
48func TestSimulateHTTP_MultipartRebuildWithPaths_314(t *testing.T) {
49 ctx := context.Background()
50 logger := zap.NewNop()
51
52 tempFile, err := os.CreateTemp("", "keploy-multipart-test-*.txt")
53 require.NoError(t, err)
54 _, err = tempFile.WriteString("file-data")
55 require.NoError(t, err)
56 require.NoError(t, tempFile.Close())
57 defer os.Remove(tempFile.Name())
58
59 server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
60 contentType := r.Header.Get("Content-Type")
61 mediaType, params, err := mime.ParseMediaType(contentType)
62 if err != nil {
63 t.Errorf("failed to parse media type: %v", err)
64 w.WriteHeader(http.StatusBadRequest)
65 return
66 }
67 assert.Equal(t, "multipart/form-data", mediaType)
68 if params["boundary"] == "" {
69 t.Errorf("missing multipart boundary")
70 w.WriteHeader(http.StatusBadRequest)
71 return
72 }
73 assert.NotEqual(t, "test-boundary", params["boundary"])
74
75 if cl := r.Header.Get("Content-Length"); cl != "" {
76 assert.NotEqual(t, "1", cl)
77 }
78
79 reader := multipart.NewReader(r.Body, params["boundary"])
80 fields := map[string]string{}
81 files := map[string]string{}
82 fileNames := map[string]string{}
83 for {
84 part, err := reader.NextPart()
85 if err == io.EOF {
86 break
87 }
88 if err != nil {
89 t.Errorf("failed to read multipart part: %v", err)
90 w.WriteHeader(http.StatusBadRequest)
91 return
92 }
93 name := part.FormName()
94 data, err := io.ReadAll(part)
95 if err != nil {
96 t.Errorf("failed to read multipart part data: %v", err)
97 w.WriteHeader(http.StatusBadRequest)
98 return
99 }
100 if part.FileName() != "" {
101 files[name] = string(data)
102 fileNames[name] = part.FileName()
103 continue
104 }
105 fields[name] = string(data)

Callers

nothing calls this directly

Calls 4

SimulateHTTPFunction · 0.85
NameMethod · 0.80
CloseMethod · 0.65
GetMethod · 0.65

Tested by

no test coverage detected