diff --git a/config/diametercfg_test.go b/config/diametercfg_test.go
index c9ecf6693..2114c7515 100644
--- a/config/diametercfg_test.go
+++ b/config/diametercfg_test.go
@@ -18,6 +18,7 @@ along with this program. If not, see
package config
import (
+ "fmt"
"reflect"
"testing"
@@ -30,7 +31,7 @@ func TestDiameterAgentCfgloadFromJsonCfg(t *testing.T) {
Listen_net: utils.StringPointer("tcp"),
Listen: utils.StringPointer("127.0.0.1:3868"),
Dictionaries_path: utils.StringPointer("/usr/share/cgrates/diameter/dict/"),
- Sessions_conns: &[]string{"*internal"},
+ Sessions_conns: &[]string{utils.MetaInternal, "*conn1"},
Origin_host: utils.StringPointer("CGR-DA"),
Origin_realm: utils.StringPointer("cgrates.org"),
Vendor_id: utils.IntPointer(0),
@@ -42,7 +43,7 @@ func TestDiameterAgentCfgloadFromJsonCfg(t *testing.T) {
Forced_disconnect: utils.StringPointer("forced"),
Request_processors: &[]*ReqProcessorJsnCfg{
{
- ID: utils.StringPointer("cgrates"),
+ ID: utils.StringPointer(utils.CGRATES),
Timezone: utils.StringPointer("Local"),
},
},
@@ -52,7 +53,7 @@ func TestDiameterAgentCfgloadFromJsonCfg(t *testing.T) {
ListenNet: "tcp",
Listen: "127.0.0.1:3868",
DictionariesPath: "/usr/share/cgrates/diameter/dict/",
- SessionSConns: []string{"*internal:*sessions"},
+ SessionSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaSessionS), "*conn1"},
OriginHost: "CGR-DA",
OriginRealm: "cgrates.org",
VendorId: 0,
@@ -76,7 +77,46 @@ func TestDiameterAgentCfgloadFromJsonCfg(t *testing.T) {
} else if !reflect.DeepEqual(expected, jsnCfg.diameterAgentCfg) {
t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(expected), utils.ToJSON(jsnCfg.diameterAgentCfg))
}
+}
+func TestRequestProcessorloadFromJsonCfg1(t *testing.T) {
+ cfgJSON := &DiameterAgentJsonCfg{
+ Request_processors: &[]*ReqProcessorJsnCfg{
+ {
+ Tenant: utils.StringPointer("a{*"),
+ },
+ },
+ }
+ expected := "invalid converter terminator in rule: "
+ if jsonCfg, err := NewDefaultCGRConfig(); err != nil {
+ t.Error(err)
+ } else if err := jsonCfg.diameterAgentCfg.loadFromJsonCfg(cfgJSON, jsonCfg.generalCfg.RSRSep); err == nil || err.Error() != expected {
+ t.Errorf("Expected %+v, received %+v", expected, err)
+ }
+}
+
+func TestRequestProcessorloadFromJsonCfg2(t *testing.T) {
+ cfgJSONStr := `{
+ "diameter_agent": {
+ "request_processors": [
+ {
+ "id": "random",
+ },
+ ]
+ }
+}`
+ cfgJSON := &DiameterAgentJsonCfg{
+ Request_processors: &[]*ReqProcessorJsnCfg{
+ {
+ ID: utils.StringPointer("random"),
+ },
+ },
+ }
+ if jsonCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil {
+ t.Error(err)
+ } else if err = jsonCfg.diameterAgentCfg.loadFromJsonCfg(cfgJSON, jsonCfg.generalCfg.RSRSep); err != nil {
+ t.Error(err)
+ }
}
func TestDiameterAgentCfgAsMapInterface(t *testing.T) {
@@ -85,13 +125,26 @@ func TestDiameterAgentCfgAsMapInterface(t *testing.T) {
"enabled": false,
"listen": "127.0.0.1:3868",
"dictionaries_path": "/usr/share/cgrates/diameter/dict/",
- "sessions_conns": ["*internal"],
+ "sessions_conns": ["*internal:*sessions", "*conn1"],
"origin_host": "CGR-DA",
"origin_realm": "cgrates.org",
"vendor_id": 0,
"product_name": "CGRateS",
"synced_conn_requests": true,
- "request_processors": [],
+ "request_processors": [
+ {
+ "id": "cgrates",
+ "tenant": "1",
+ "filters": [],
+ "flags": ["1"],
+ "request_fields": [
+ {"path": "randomPath"},
+ ],
+ "reply_fields": [
+ {"path": "randomPath"},
+ ],
+ }
+ ]
},
}`
eMap := map[string]interface{}{
@@ -106,15 +159,46 @@ func TestDiameterAgentCfgAsMapInterface(t *testing.T) {
utils.OriginRealmCfg: "cgrates.org",
utils.ProductNameCfg: "CGRateS",
utils.RARTemplateCfg: "",
- utils.SessionSConnsCfg: []string{"*internal"},
+ utils.SessionSConnsCfg: []string{utils.MetaInternal, "*conn1"},
utils.SyncedConnReqsCfg: true,
utils.VendorIdCfg: 0,
- utils.RequestProcessorsCfg: []map[string]interface{}{},
+ utils.RequestProcessorsCfg: []map[string]interface{}{
+ {
+ utils.IdCfg: utils.CGRATES,
+ utils.TenantCfg: "1",
+ utils.FiltersCfg: []string{},
+ utils.FlagsCfg: []string{"1"},
+ utils.TimezoneCfg: utils.EmptyString,
+ utils.RequestFieldsCfg: []map[string]interface{}{
+ {
+ utils.PathCfg: "randomPath",
+ utils.TagCfg: "randomPath",
+ },
+ },
+ utils.ReplyFieldsCfg: []map[string]interface{}{
+ {
+ utils.PathCfg: "randomPath",
+ utils.TagCfg: "randomPath",
+ },
+ },
+ },
+ },
}
if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil {
t.Error(err)
- } else if rcv := cgrCfg.diameterAgentCfg.AsMapInterface(utils.EmptyString); !reflect.DeepEqual(rcv, eMap) {
- t.Errorf("Expected %+v \n, received %+v", eMap, rcv)
+ } else {
+ for _, v := range cgrCfg.diameterAgentCfg.RequestProcessors[0].ReplyFields {
+ v.ComputePath()
+ }
+ for _, v := range cgrCfg.diameterAgentCfg.RequestProcessors[0].RequestFields {
+ v.ComputePath()
+ }
+ rcv := cgrCfg.diameterAgentCfg.AsMapInterface(utils.EmptyString)
+ if !reflect.DeepEqual(rcv, eMap) {
+ fmt.Printf("%T \n", rcv[utils.RequestProcessorsCfg].([]map[string]interface{})[0][utils.FlagsCfg])
+ fmt.Printf("%T \n", eMap[utils.RequestProcessorsCfg].([]map[string]interface{})[0][utils.FlagsCfg])
+ t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
+ }
}
}