Skip to content

Commit 53acdbf

Browse files
committed
fix: mock body render missing context
1 parent cc5a463 commit 53acdbf

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

pkg/mock/in_memory.go

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,26 @@ func (h *advanceHandler) handle(w http.ResponseWriter, req *http.Request) {
311311
memLogger.Info("receiving mock request", "name", h.item.Name, "method", req.Method, "path", req.URL.Path,
312312
"encoder", h.item.Response.Encoder)
313313

314+
h.item.Param = mux.Vars(req)
315+
if h.item.Param == nil {
316+
h.item.Param = make(map[string]string)
317+
}
318+
h.item.Param["Host"] = req.Host
319+
if h.item.Response.Header == nil {
320+
h.item.Response.Header = make(map[string]string)
321+
}
322+
h.item.Response.Header[headerMockServer] = fmt.Sprintf("api-testing: %s", version.GetVersion())
323+
for k, v := range h.item.Response.Header {
324+
hv, hErr := render.Render("mock-server-header", v, &h.item)
325+
if hErr != nil {
326+
hv = v
327+
memLogger.Error(hErr, "failed render mock-server-header", "value", v)
328+
}
329+
330+
w.Header().Set(k, hv)
331+
}
332+
w.WriteHeader(util.ZeroThenDefault(h.item.Response.StatusCode, http.StatusOK))
333+
314334
var err error
315335
if h.item.Response.Encoder == "base64" {
316336
h.item.Response.BodyData, err = base64.StdEncoding.DecodeString(h.item.Response.Body)
@@ -320,30 +340,13 @@ func (h *advanceHandler) handle(w http.ResponseWriter, req *http.Request) {
320340
h.item.Response.BodyData, err = io.ReadAll(resp.Body)
321341
}
322342
} else {
323-
h.item.Response.BodyData, err = render.RenderAsBytes("start-item", h.item.Response.Body, h.item)
343+
if h.item.Response.BodyData, err = render.RenderAsBytes("start-item", h.item.Response.Body, h.item); err != nil {
344+
fmt.Printf("failed to render body: %v", err)
345+
}
324346
}
325347

326348
if err == nil {
327-
h.item.Param = mux.Vars(req)
328-
if h.item.Param == nil {
329-
h.item.Param = make(map[string]string)
330-
}
331-
h.item.Param["Host"] = req.Host
332-
if h.item.Response.Header == nil {
333-
h.item.Response.Header = make(map[string]string)
334-
}
335-
h.item.Response.Header[headerMockServer] = fmt.Sprintf("api-testing: %s", version.GetVersion())
336349
h.item.Response.Header[util.ContentLength] = fmt.Sprintf("%d", len(h.item.Response.BodyData))
337-
for k, v := range h.item.Response.Header {
338-
hv, hErr := render.Render("mock-server-header", v, &h.item)
339-
if hErr != nil {
340-
hv = v
341-
memLogger.Error(hErr, "failed render mock-server-header", "value", v)
342-
}
343-
344-
w.Header().Set(k, hv)
345-
}
346-
w.WriteHeader(util.ZeroThenDefault(h.item.Response.StatusCode, http.StatusOK))
347350
}
348351

349352
writeResponse(w, h.item.Response.BodyData, err)

0 commit comments

Comments
 (0)