diff --git a/config/httpagntcfg.go b/config/httpagntcfg.go index 51c8ce843..667116a25 100644 --- a/config/httpagntcfg.go +++ b/config/httpagntcfg.go @@ -45,17 +45,16 @@ func (hcfgs *HttpAgentCfgs) loadFromJsonCfg(jsnHttpAgntCfg *[]*HttpAgentJsonCfg, if !haveID { *hcfgs = append(*hcfgs, hac) } - } return nil } -func (hcfgs *HttpAgentCfgs) AsMapInterface(separator string) []map[string]interface{} { - mp := make([]map[string]interface{}, len(*hcfgs)) +func (hcfgs *HttpAgentCfgs) AsMapInterface(separator string) (mp []map[string]interface{}) { + mp = make([]map[string]interface{}, len(*hcfgs)) for i, item := range *hcfgs { mp[i] = item.AsMapInterface(separator) } - return mp + return } type HttpAgentCfg struct { @@ -126,18 +125,19 @@ func (ca *HttpAgentCfg) loadFromJsonCfg(jsnCfg *HttpAgentJsonCfg, separator stri return nil } -func (ca *HttpAgentCfg) AsMapInterface(separator string) map[string]interface{} { +func (ca *HttpAgentCfg) AsMapInterface(separator string) (initialMP map[string]interface{}) { + initialMP = map[string]interface{}{ + utils.IDCfg: ca.ID, + utils.UrlCfg: ca.Url, + utils.SessionSConnsCfg: ca.SessionSConns, + utils.RequestPayloadCfg: ca.RequestPayload, + utils.ReplyPayloadCfg: ca.ReplyPayload, + } + requestProcessors := make([]map[string]interface{}, len(ca.RequestProcessors)) for i, item := range ca.RequestProcessors { requestProcessors[i] = item.AsMapInterface(separator) } - - return map[string]interface{}{ - utils.IDCfg: ca.ID, - utils.UrlCfg: ca.Url, - utils.SessionSConnsCfg: ca.SessionSConns, - utils.RequestPayloadCfg: ca.RequestPayload, - utils.ReplyPayloadCfg: ca.ReplyPayload, - utils.RequestProcessorsCfg: requestProcessors, - } + initialMP[utils.RequestProcessorsCfg] = requestProcessors + return } diff --git a/config/httpagntcfg_test.go b/config/httpagntcfg_test.go index fb070167f..cb8141814 100644 --- a/config/httpagntcfg_test.go +++ b/config/httpagntcfg_test.go @@ -361,7 +361,6 @@ func TestHttpAgentCfgappendHttpAgntProcCfgs(t *testing.T) { } func TestHttpAgentCfgAsMapInterface(t *testing.T) { - var httpcfg HttpAgentCfgs cfgJSONStr := `{ "http_agent": [ @@ -377,8 +376,8 @@ func TestHttpAgentCfgAsMapInterface(t *testing.T) { "filters": ["*string:~*req.request_type:OutboundAUTH","*string:~*req.Msisdn:497700056231"], "tenant": "cgrates.org", "flags": ["*dryrun"], - "request_fields":[ - ], + "timezone": "", + "request_fields":[], "reply_fields":[ {"tag": "Allow", "path": "*rep.response.Allow", "type": "*constant", "value": "1", "mandatory": true}, @@ -398,37 +397,33 @@ func TestHttpAgentCfgAsMapInterface(t *testing.T) { }` eMap := []map[string]interface{}{ { - "id": "conecto1", - "url": "/conecto", - "sessions_conns": []string{"*localhost"}, - "request_payload": "*url", - "reply_payload": "*xml", - "request_processors": []map[string]interface{}{ + utils.IdCfg: "conecto1", + utils.UrlCfg: "/conecto", + utils.SessionSConnsCfg: []string{"*localhost"}, + utils.RequestPayloadCfg: "*url", + utils.ReplyPayloadCfg: "*xml", + utils.RequestProcessorsCfg: []map[string]interface{}{ { - "id": "OutboundAUTHDryRun", - "filters": []string{"*string:~*req.request_type:OutboundAUTH", "*string:~*req.Msisdn:497700056231"}, - "tenant": "cgrates.org", - "flags": []string{"*dryrun"}, - "Timezone": "", - "request_fields": []map[string]interface{}{}, - "reply_fields": []map[string]interface{}{ - {"tag": "Allow", "path": "*rep.response.Allow", "type": "*constant", "value": "1", "mandatory": true}, - {"tag": "Concatenated1", "path": "*rep.response.Concatenated", "type": "*composed", "value": "~*req.MCC;/", "mandatory": true}, - {"tag": "Concatenated2", "path": "*rep.response.Concatenated", "type": "*composed", "value": "Val1"}, - {"tag": "MaxDuration", "path": "*rep.response.MaxDuration", "type": "*constant", "value": "1200", "blocker": true}, - {"tag": "Unused", "path": "*rep.response.Unused", "type": "*constant", "value": "0"}, + utils.IdCfg: "OutboundAUTHDryRun", + utils.FilterSCfg: []string{"*string:~*req.request_type:OutboundAUTH", "*string:~*req.Msisdn:497700056231"}, + utils.TenantCfg: "cgrates.org", + utils.FlagsCfg: []string{"*dryrun"}, + utils.TimezoneCfg: "", + utils.RequestFieldsCfg: []map[string]interface{}{}, + utils.ReplyFieldsCfg: []map[string]interface{}{ + {utils.TagCfg: "Allow", utils.PathCfg: "*rep.response.Allow", utils.TypeCfg: "*constant", utils.ValueCfg: "1", utils.MandatoryCfg: true}, + {utils.TagCfg: "Concatenated1", utils.PathCfg: "*rep.response.Concatenated", utils.TypeCfg: "*composed", utils.ValueCfg: "~*req.MCC;/", utils.MandatoryCfg: true}, + {utils.TagCfg: "Concatenated2", utils.PathCfg: "*rep.response.Concatenated", utils.TypeCfg: "*composed", utils.ValueCfg: "Val1"}, + {utils.TagCfg: "MaxDuration", utils.PathCfg: "*rep.response.MaxDuration", utils.TypeCfg: "*constant", utils.ValueCfg: "1200", utils.BlockerCfg: true}, + {utils.TagCfg: "Unused", utils.PathCfg: "*rep.response.Unused", utils.TypeCfg: "*constant", utils.ValueCfg: "0"}, }, }, }, }, } - if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) - } else if jsnhttpCfg, err := jsnCfg.HttpAgentJsonCfg(); err != nil { - t.Error(err) - } else if err = httpcfg.loadFromJsonCfg(jsnhttpCfg, utils.INFIELD_SEP); err != nil { - t.Error(err) - } else if rcv := httpcfg.AsMapInterface(";"); !reflect.DeepEqual(eMap, rcv) { - t.Errorf("Expected: %+v,\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } else if rcv := cgrCfg.httpAgentCfg.AsMapInterface(cgrCfg.generalCfg.RSRSep); !reflect.DeepEqual(eMap, rcv) { + t.Errorf("Expected %+v, recieved %+v", eMap, rcv) } }