I have the requirement to test a Kafka consumer method which in turn creates a post call to another service. How can I write wiremock for the another service. The code is:
- Kafka Consumer
func (handler FxmWorklogEventHandler) ProcessMessage(message kafka.Message) (swgykafka.Status, error) {
txn := util.TraceTransaction(handler.MessageType())
if txn != nil {
defer txn.End()
}
var fxmWorklogEvent event.FxmWorklogEvent
err := json.Unmarshal(message.Data, &fxmWorklogEvent)
if err != nil {
log.Error().Err(err).Msg("FxmWorklogEventHandler - Failed to un marshall the message")
return swgykafka.HardFailure, err
}
log.Info().Msgf("Processing fxm worklog event for order %s", fxmWorklogEvent.OrderId)
fxmEventToPersist := BuildFxmEventToPersist(fxmWorklogEvent)
_, err = handler.am.SaveFxmWorklog(fxmEventToPersist)
if err != nil {
log.Error().Err(err).Msgf("Failed to save fxm worklog event in am for order %s", fxmWorklogEvent.OrderId)
return swgykafka.SoftFailure, nil
}
return swgykafka.Success, nil
}
- Post Call
func (am *AssistanceManagerClient) SaveFxmWorklog(r request.FxmWorklogDetails) (*response.BaseResponse, error) {
url := config.Client.GetString(amHost) + util.AssistanceManagerSaveFxmWorklog
return am.hc.Post(url, r, http.Header{}, util.AssistanceManagerCommand)
}
- External Service Method
func SaveFxmWorklog(w http.ResponseWriter, r *http.Request) {
var rb entity.FxmWorklogDetails
err := json.NewDecoder(r.Body).Decode(&rb)
if err != nil {
log.Error().Err(err).Msgf("Failed to parse the fxm worklog request %s", util.ToJSON(rb))
util.ErrorResponse(w, err.Error(), http.StatusBadRequest)
return
}
log.Info().Msgf("Save fxm worklog request received for order %s", rb.OrderId)
response, err := service.FxmService.SaveFxmWorklogEvent(rb)
if err != nil {
log.Error().Err(err).Msgf("Failed to save fxm worklog event %s", util.ToJSON(rb))
util.ErrorResponse(w, err.Error(), http.StatusInternalServerError)
return
}
w.WriteHeader(response.HTTPStatusCode)
_ = json.NewEncoder(w).Encode(response)
}
How can I test this method by wiremocking the external service api call?