fix: mock body render missing context

This commit is contained in:
rick 2025-02-24 06:24:52 +00:00
parent cc5a463b4d
commit 53acdbf8d2
1 changed files with 23 additions and 20 deletions

View File

@ -311,19 +311,6 @@ func (h *advanceHandler) handle(w http.ResponseWriter, req *http.Request) {
memLogger.Info("receiving mock request", "name", h.item.Name, "method", req.Method, "path", req.URL.Path, memLogger.Info("receiving mock request", "name", h.item.Name, "method", req.Method, "path", req.URL.Path,
"encoder", h.item.Response.Encoder) "encoder", h.item.Response.Encoder)
var err error
if h.item.Response.Encoder == "base64" {
h.item.Response.BodyData, err = base64.StdEncoding.DecodeString(h.item.Response.Body)
} else if h.item.Response.Encoder == "url" {
var resp *http.Response
if resp, err = http.Get(h.item.Response.Body); err == nil {
h.item.Response.BodyData, err = io.ReadAll(resp.Body)
}
} else {
h.item.Response.BodyData, err = render.RenderAsBytes("start-item", h.item.Response.Body, h.item)
}
if err == nil {
h.item.Param = mux.Vars(req) h.item.Param = mux.Vars(req)
if h.item.Param == nil { if h.item.Param == nil {
h.item.Param = make(map[string]string) h.item.Param = make(map[string]string)
@ -333,7 +320,6 @@ func (h *advanceHandler) handle(w http.ResponseWriter, req *http.Request) {
h.item.Response.Header = make(map[string]string) h.item.Response.Header = make(map[string]string)
} }
h.item.Response.Header[headerMockServer] = fmt.Sprintf("api-testing: %s", version.GetVersion()) h.item.Response.Header[headerMockServer] = fmt.Sprintf("api-testing: %s", version.GetVersion())
h.item.Response.Header[util.ContentLength] = fmt.Sprintf("%d", len(h.item.Response.BodyData))
for k, v := range h.item.Response.Header { for k, v := range h.item.Response.Header {
hv, hErr := render.Render("mock-server-header", v, &h.item) hv, hErr := render.Render("mock-server-header", v, &h.item)
if hErr != nil { if hErr != nil {
@ -344,6 +330,23 @@ func (h *advanceHandler) handle(w http.ResponseWriter, req *http.Request) {
w.Header().Set(k, hv) w.Header().Set(k, hv)
} }
w.WriteHeader(util.ZeroThenDefault(h.item.Response.StatusCode, http.StatusOK)) w.WriteHeader(util.ZeroThenDefault(h.item.Response.StatusCode, http.StatusOK))
var err error
if h.item.Response.Encoder == "base64" {
h.item.Response.BodyData, err = base64.StdEncoding.DecodeString(h.item.Response.Body)
} else if h.item.Response.Encoder == "url" {
var resp *http.Response
if resp, err = http.Get(h.item.Response.Body); err == nil {
h.item.Response.BodyData, err = io.ReadAll(resp.Body)
}
} else {
if h.item.Response.BodyData, err = render.RenderAsBytes("start-item", h.item.Response.Body, h.item); err != nil {
fmt.Printf("failed to render body: %v", err)
}
}
if err == nil {
h.item.Response.Header[util.ContentLength] = fmt.Sprintf("%d", len(h.item.Response.BodyData))
} }
writeResponse(w, h.item.Response.BodyData, err) writeResponse(w, h.item.Response.BodyData, err)