Covered diametercfg to 100%

This commit is contained in:
porosnicuadrian
2020-10-02 15:08:34 +03:00
committed by Dan Christian Bogos
parent 1b9314bdb3
commit af0ba5e23b

View File

@@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
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: <a{*>"
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))
}
}
}