diff --git a/config/cdrecfg_test.go b/config/cdrecfg_test.go index 3af7881e5..a74c0b393 100644 --- a/config/cdrecfg_test.go +++ b/config/cdrecfg_test.go @@ -138,7 +138,7 @@ func TestCdreCfgloadFromJsonCfg(t *testing.T) { } } -func TestCdreAsMapInterface(t *testing.T) { +func TestCdreCfgAsMapInterface(t *testing.T) { var cdre CdreCfg cfgJSONStr := `{ "cdre": { diff --git a/config/datadbcfg.go b/config/datadbcfg.go index e945d8ddf..049c0577e 100644 --- a/config/datadbcfg.go +++ b/config/datadbcfg.go @@ -100,6 +100,7 @@ func (dbcfg *DataDbCfg) loadFromJsonCfg(jsnDbCfg *DbJsonCfg) (err error) { } } if jsnDbCfg.Items != nil { + dbcfg.Items = make(map[string]*ItemOpt) for kJsn, vJsn := range *jsnDbCfg.Items { val, has := dbcfg.Items[kJsn] if val == nil || !has { @@ -134,16 +135,21 @@ func (dbcfg *DataDbCfg) AsMapInterface() map[string]interface{} { for key, item := range dbcfg.Items { items[key] = item.AsMapInterface() } + var queryTimeout string = "0" + if dbcfg.QueryTimeout != 0 { + queryTimeout = dbcfg.QueryTimeout.String() + } + dbPort, _ := strconv.Atoi(dbcfg.DataDbPort) return map[string]interface{}{ - utils.DataDbTypeCfg: dbcfg.DataDbType, + utils.DataDbTypeCfg: utils.Meta + dbcfg.DataDbType, utils.DataDbHostCfg: dbcfg.DataDbHost, - utils.DataDbPortCfg: dbcfg.DataDbPort, + utils.DataDbPortCfg: dbPort, utils.DataDbNameCfg: dbcfg.DataDbName, utils.DataDbUserCfg: dbcfg.DataDbUser, utils.DataDbPassCfg: dbcfg.DataDbPass, utils.DataDbSentinelNameCfg: dbcfg.DataDbSentinelName, - utils.QueryTimeoutCfg: dbcfg.QueryTimeout, + utils.QueryTimeoutCfg: queryTimeout, utils.RmtConnsCfg: dbcfg.RmtConns, utils.RplConnsCfg: dbcfg.RplConns, utils.ItemsCfg: items, @@ -162,11 +168,16 @@ type ItemOpt struct { } func (itm *ItemOpt) AsMapInterface() map[string]interface{} { + var ttl string = "" + if itm.TTL != 0 { + ttl = itm.TTL.String() + } + return map[string]interface{}{ utils.RemoteCfg: itm.Remote, utils.ReplicateCfg: itm.Replicate, utils.LimitCfg: itm.Limit, - utils.TTLCfg: itm.TTL, + utils.TTLCfg: ttl, utils.StaticTTLCfg: itm.StaticTTL, } } diff --git a/config/datadbcfg_test.go b/config/datadbcfg_test.go index 6cbbaf5fa..3d9c4a638 100644 --- a/config/datadbcfg_test.go +++ b/config/datadbcfg_test.go @@ -395,3 +395,50 @@ func TestDataDbCfgloadFromJsonCfgItems(t *testing.T) { t.Errorf("Expected: %+v ,\n recived: %+v", utils.ToJSON(expected), utils.ToJSON(dbcfg)) } } + +func TestDataDbCfgAsMapInterface(t *testing.T) { + var dbcfg DataDbCfg + cfgJSONStr := `{ + "data_db": { + "db_type": "*redis", + "db_host": "127.0.0.1", + "db_port": 6379, + "db_name": "10", + "db_user": "cgrates", + "db_password": "", + "redis_sentinel":"", + "query_timeout":"10s", + "remote_conns":[], + "replication_conns":[], + "items":{ + "*accounts":{"remote":true, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, + "*reverse_destinations": {"remote":false, "replicate":false, "limit": 7, "ttl": "", "static_ttl": true}, + }, + }, +}` + eMap := map[string]interface{}{ + "db_type": "*redis", + "db_host": "127.0.0.1", + "db_port": 6379, + "db_name": "10", + "db_user": "cgrates", + "db_password": "", + "redis_sentinel": "", + "query_timeout": "10s", + "remote_conns": []string{}, + "replication_conns": []string{}, + "items": map[string]interface{}{ + "*accounts": map[string]interface{}{"remote": true, "replicate": false, "limit": -1, "ttl": "", "static_ttl": false}, + "*reverse_destinations": map[string]interface{}{"remote": false, "replicate": false, "limit": 7, "ttl": "", "static_ttl": true}, + }, + } + if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + t.Error(err) + } else if jsnDataDbCfg, err := jsnCfg.DbJsonCfg(DATADB_JSN); err != nil { + t.Error(err) + } else if err = dbcfg.loadFromJsonCfg(jsnDataDbCfg); err != nil { + t.Error(err) + } else if rcv := dbcfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { + t.Errorf("Expected: %+v ,\n recived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } +} diff --git a/config/filterscfg_test.go b/config/filterscfg_test.go index 9c1e01b5a..fe259da49 100644 --- a/config/filterscfg_test.go +++ b/config/filterscfg_test.go @@ -54,3 +54,29 @@ func TestFilterSCfgloadFromJsonCfg(t *testing.T) { t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(fscfg)) } } + +func TestFilterSCfgAsMapInterface(t *testing.T) { + var fscfg FilterSCfg + cfgJSONStr := `{ + "filters": { + "stats_conns": ["*localhost"], + "resources_conns": [], + "apiers_conns": [], + }, +}` + var emptySlice []string + eMap := map[string]interface{}{ + "stats_conns": []string{"*localhost"}, + "resources_conns": emptySlice, + "apiers_conns": emptySlice, + } + if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + t.Error(err) + } else if jsnFsCfg, err := jsnCfg.FilterSJsonCfg(); err != nil { + t.Error(err) + } else if err = fscfg.loadFromJsonCfg(jsnFsCfg); err != nil { + t.Error(err) + } else if rcv := fscfg.AsMapInterface(); reflect.DeepEqual(eMap, rcv) { + t.Errorf("Expected: %+v ,\n recived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } +} diff --git a/config/httpagntcfg_test.go b/config/httpagntcfg_test.go index 625fc1e55..8824766b3 100644 --- a/config/httpagntcfg_test.go +++ b/config/httpagntcfg_test.go @@ -352,7 +352,7 @@ func TestHttpAgentCfgappendHttpAgntProcCfgs(t *testing.T) { } } -func testHttpAgentCfgAsMapInterface(t *testing.T) { +func TestHttpAgentCfgAsMapInterface(t *testing.T) { var httpcfg HttpAgentCfgs cfgJSONStr := `{ @@ -388,7 +388,6 @@ func testHttpAgentCfgAsMapInterface(t *testing.T) { }, ], }` - request_fields := []string{} eMap := []map[string]interface{}{ { "id": "conecto1", @@ -401,9 +400,9 @@ func testHttpAgentCfgAsMapInterface(t *testing.T) { "id": "OutboundAUTHDryRun", "filters": []string{"*string:~*req.request_type:OutboundAUTH", "*string:~*req.Msisdn:497700056231"}, "tenant": "cgrates.org", - "flags": map[string][]string{"*dryrun": request_fields}, + "flags": map[string][]string{"*dryrun": {}}, "Timezone": "", - "request_fields": request_fields, + "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}, @@ -424,5 +423,4 @@ func testHttpAgentCfgAsMapInterface(t *testing.T) { } else if rcv := httpcfg.AsMapInterface(";"); !reflect.DeepEqual(eMap, rcv) { t.Errorf("Expected: %+v,\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) } - } diff --git a/config/httpcfg.go b/config/httpcfg.go index d97db7061..258f0fe21 100644 --- a/config/httpcfg.go +++ b/config/httpcfg.go @@ -58,12 +58,17 @@ func (httpcfg *HTTPCfg) loadFromJsonCfg(jsnHttpCfg *HTTPJsonCfg) (err error) { } func (httpcfg *HTTPCfg) AsMapInterface() map[string]interface{} { + httpUsers := map[string]interface{}{} + for key, item := range httpcfg.HTTPAuthUsers { + httpUsers[key] = item + } + return map[string]interface{}{ utils.HTTPJsonRPCURLCfg: httpcfg.HTTPJsonRPCURL, utils.HTTPWSURLCfg: httpcfg.HTTPWSURL, utils.HTTPFreeswitchCDRsURLCfg: httpcfg.HTTPFreeswitchCDRsURL, utils.HTTPCDRsURLCfg: httpcfg.HTTPCDRsURL, utils.HTTPUseBasicAuthCfg: httpcfg.HTTPUseBasicAuth, - utils.HTTPAuthUsersCfg: httpcfg.HTTPAuthUsers, + utils.HTTPAuthUsersCfg: httpUsers, } } diff --git a/config/httpcfg_test.go b/config/httpcfg_test.go index 5b3f856c2..071c38c3d 100644 --- a/config/httpcfg_test.go +++ b/config/httpcfg_test.go @@ -20,6 +20,8 @@ package config import ( "reflect" "testing" + + "github.com/cgrates/cgrates/utils" ) func TestHTTPCfgloadFromJsonCfg(t *testing.T) { @@ -62,3 +64,36 @@ func TestHTTPCfgloadFromJsonCfg(t *testing.T) { t.Errorf("Expected: %+v , recived: %+v", expected, httpcfg) } } + +func TestHTTPCfgAsMapInterface(t *testing.T) { + var httpcfg HTTPCfg + cfgJSONStr := `{ + "http": { + "json_rpc_url": "/jsonrpc", + "ws_url": "/ws", + "freeswitch_cdrs_url": "/freeswitch_json", + "http_cdrs": "/cdr_http", + "use_basic_auth": false, + "auth_users": {}, + }, +}` + + eMap := map[string]interface{}{ + "json_rpc_url": "/jsonrpc", + "ws_url": "/ws", + "freeswitch_cdrs_url": "/freeswitch_json", + "http_cdrs": "/cdr_http", + "use_basic_auth": false, + "auth_users": map[string]interface{}{}, + } + + if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + t.Error(err) + } else if jsnhttpCfg, err := jsnCfg.HttpJsonCfg(); err != nil { + t.Error(err) + } else if err = httpcfg.loadFromJsonCfg(jsnhttpCfg); err != nil { + t.Error(err) + } else if rcv := httpcfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { + t.Errorf("Expected: %+v ,\n recived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } +} diff --git a/config/loaderscfg.go b/config/loaderscfg.go index c40a0d769..4ed55b9ad 100644 --- a/config/loaderscfg.go +++ b/config/loaderscfg.go @@ -211,6 +211,15 @@ func (l *LoaderSCfg) AsMapInterface(separator string) map[string]interface{} { if l.RunDelay != 0 { runDelay = l.RunDelay.String() } + cacheSConns := make([]string, len(l.CacheSConns)) + for i, item := range l.CacheSConns { + buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches) + if item == buf { + cacheSConns[i] = strings.ReplaceAll(item, ":*caches", utils.EmptyString) + } else { + cacheSConns[i] = item + } + } return map[string]interface{}{ utils.IdCfg: l.Id, @@ -219,7 +228,7 @@ func (l *LoaderSCfg) AsMapInterface(separator string) map[string]interface{} { utils.DryRunCfg: l.DryRun, utils.RunDelayCfg: runDelay, utils.LockFileNameCfg: l.LockFileName, - utils.CacheSConnsCfg: l.CacheSConns, + utils.CacheSConnsCfg: cacheSConns, utils.FieldSeparatorCfg: l.FieldSeparator, utils.TpInDirCfg: l.TpInDir, utils.TpOutDirCfg: l.TpOutDir, diff --git a/config/loaderscfg_test.go b/config/loaderscfg_test.go index 99015fff6..0ea873b01 100644 --- a/config/loaderscfg_test.go +++ b/config/loaderscfg_test.go @@ -141,7 +141,7 @@ func TestLoaderCfgAsMapInterface(t *testing.T) { "dry_run": false, "run_delay": "0", "lock_filename": ".cgr.lck", - "caches_conns": []string{"*internal:*caches"}, + "caches_conns": []string{"*internal"}, "field_separator": ",", "tp_in_dir": "/var/spool/cgrates/loader/in", "tp_out_dir": "/var/spool/cgrates/loader/out", diff --git a/config/ralscfg.go b/config/ralscfg.go index 1d4e08828..a4f473105 100644 --- a/config/ralscfg.go +++ b/config/ralscfg.go @@ -19,6 +19,8 @@ along with this program. If not, see package config import ( + "strconv" + "strings" "time" "github.com/cgrates/cgrates/utils" @@ -86,6 +88,7 @@ func (ralsCfg *RalsCfg) loadFromJsonCfg(jsnRALsCfg *RalsJsonCfg) (err error) { ralsCfg.RemoveExpired = *jsnRALsCfg.Remove_expired } if jsnRALsCfg.Max_computed_usage != nil { + ralsCfg.MaxComputedUsage = make(map[string]time.Duration, len(*jsnRALsCfg.Max_computed_usage)) for k, v := range *jsnRALsCfg.Max_computed_usage { if ralsCfg.MaxComputedUsage[k], err = utils.ParseDurationWithNanosecs(v); err != nil { return @@ -96,6 +99,7 @@ func (ralsCfg *RalsCfg) loadFromJsonCfg(jsnRALsCfg *RalsJsonCfg) (err error) { ralsCfg.MaxIncrements = *jsnRALsCfg.Max_increments } if jsnRALsCfg.Balance_rating_subject != nil { + ralsCfg.BalanceRatingSubject = make(map[string]string, len(*jsnRALsCfg.Balance_rating_subject)) for k, v := range *jsnRALsCfg.Balance_rating_subject { ralsCfg.BalanceRatingSubject[k] = v } @@ -113,7 +117,21 @@ func (ralsCfg *RalsCfg) loadFromJsonCfg(jsnRALsCfg *RalsJsonCfg) (err error) { func (ralsCfg *RalsCfg) AsMapInterface() map[string]interface{} { maxComputed := make(map[string]interface{}) for key, item := range ralsCfg.MaxComputedUsage { - maxComputed[key] = item + if key == utils.ANY || key == utils.VOICE { + maxComputed[key] = item.String() + } else { + maxComputed[key] = strconv.Itoa(int(item)) + } + } + + cacheSConns := make([]string, len(ralsCfg.CacheSConns)) + for i, item := range ralsCfg.CacheSConns { + buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches) + if item == buf { + cacheSConns[i] = strings.ReplaceAll(item, ":*caches", utils.EmptyString) + } else { + cacheSConns[i] = item + } } balanceRating := make(map[string]interface{}) @@ -125,11 +143,12 @@ func (ralsCfg *RalsCfg) AsMapInterface() map[string]interface{} { utils.EnabledCfg: ralsCfg.Enabled, utils.ThresholdSConnsCfg: ralsCfg.ThresholdSConns, utils.StatSConnsCfg: ralsCfg.StatSConns, - utils.CacheSConnsCfg: ralsCfg.CacheSConns, + utils.CacheSConnsCfg: cacheSConns, utils.RpSubjectPrefixMatchingCfg: ralsCfg.RpSubjectPrefixMatching, utils.RemoveExpiredCfg: ralsCfg.RemoveExpired, utils.MaxComputedUsageCfg: maxComputed, utils.BalanceRatingSubjectCfg: balanceRating, utils.MaxIncrementsCfg: ralsCfg.MaxIncrements, + utils.Dynaprepaid_actionplansCfg: ralsCfg.DynaprepaidActionPlans, } } diff --git a/config/ralscfg_test.go b/config/ralscfg_test.go index 6fb9e4541..835fbc2c1 100644 --- a/config/ralscfg_test.go +++ b/config/ralscfg_test.go @@ -75,3 +75,61 @@ func TestRalsCfgFromJsonCfg(t *testing.T) { t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(ralscfg)) } } + +func TestRalsCfgAsMapInterface(t *testing.T) { + var ralscfg RalsCfg + cfgJSONStr := `{ + "rals": { + "enabled": false, + "thresholds_conns": [], + "stats_conns": [], + "caches_conns":["*internal"], + "rp_subject_prefix_matching": false, + "remove_expired":true, + "max_computed_usage": { + "*any": "189h", + "*voice": "72h", + "*data": "107374182400", + "*sms": "10000", + "*mms": "10000" + }, + "max_increments": 1000000, + "balance_rating_subject":{ + "*any": "*zero1ns", + "*voice": "*zero1s" + }, + "dynaprepaid_actionplans": [], + }, +}` + eMap := map[string]interface{}{ + "enabled": false, + "thresholds_conns": []string{}, + "stats_conns": []string{}, + "caches_conns": []string{"*internal"}, + "rp_subject_prefix_matching": false, + "remove_expired": true, + "max_computed_usage": map[string]interface{}{ + "*any": "189h0m0s", + "*voice": "72h0m0s", + "*data": "107374182400", + "*sms": "10000", + "*mms": "10000", + }, + "max_increments": 1000000, + "balance_rating_subject": map[string]interface{}{ + "*any": "*zero1ns", + "*voice": "*zero1s", + }, + "dynaprepaid_actionplans": []string{}, + } + + if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + t.Error(err) + } else if jsnRalsCfg, err := jsnCfg.RalsJsonCfg(); err != nil { + t.Error(err) + } else if err = ralscfg.loadFromJsonCfg(jsnRalsCfg); err != nil { + t.Error(err) + } else if rcv := ralscfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { + t.Errorf("Expected: %+v ,\n recived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } +} diff --git a/config/stordbcfg.go b/config/stordbcfg.go index fd7f3cd94..1295d5ebe 100644 --- a/config/stordbcfg.go +++ b/config/stordbcfg.go @@ -95,6 +95,7 @@ func (dbcfg *StorDbCfg) loadFromJsonCfg(jsnDbCfg *DbJsonCfg) (err error) { dbcfg.SSLMode = *jsnDbCfg.Sslmode } if jsnDbCfg.Items != nil { + dbcfg.Items = make(map[string]*ItemOpt) for kJsn, vJsn := range *jsnDbCfg.Items { val := new(ItemOpt) if err := val.loadFromJsonCfg(vJsn); err != nil { @@ -131,11 +132,16 @@ func (dbcfg *StorDbCfg) AsMapInterface() map[string]interface{} { for key, item := range dbcfg.Items { items[key] = item.AsMapInterface() } + var queryTimeout string = "0" + if dbcfg.QueryTimeout != 0 { + queryTimeout = dbcfg.QueryTimeout.String() + } + dbPort, _ := strconv.Atoi(dbcfg.Port) return map[string]interface{}{ - utils.TypeCfg: dbcfg.Type, + utils.TypeCfg: utils.Meta + dbcfg.Type, utils.HostCfg: dbcfg.Host, - utils.PortCfg: dbcfg.Port, + utils.PortCfg: dbPort, utils.NameCfg: dbcfg.Name, utils.UserCfg: dbcfg.User, utils.PasswordCfg: dbcfg.Password, @@ -144,7 +150,7 @@ func (dbcfg *StorDbCfg) AsMapInterface() map[string]interface{} { utils.ConnMaxLifetimeCfg: dbcfg.ConnMaxLifetime, utils.StringIndexedFieldsCfg: dbcfg.StringIndexedFields, utils.PrefixIndexedFieldsCfg: dbcfg.PrefixIndexedFields, - utils.QueryTimeoutCfg: dbcfg.QueryTimeout, + utils.QueryTimeoutCfg: queryTimeout, utils.SSLModeCfg: dbcfg.SSLMode, utils.ItemsCfg: items, } diff --git a/config/stordbcfg_test.go b/config/stordbcfg_test.go index b05344dc5..1ef7e654d 100644 --- a/config/stordbcfg_test.go +++ b/config/stordbcfg_test.go @@ -20,6 +20,8 @@ package config import ( "reflect" "testing" + + "github.com/cgrates/cgrates/utils" ) func TestStoreDbCfgloadFromJsonCfg(t *testing.T) { @@ -130,3 +132,57 @@ func TestStoreDbCfgloadFromJsonCfgPort(t *testing.T) { t.Errorf("Expected: %+v , recived: %+v", expected, dbcfg) } } + +func TestStorDbCfgAsMapInterface(t *testing.T) { + var dbcfg StorDbCfg + cfgJSONStr := `{ + "stor_db": { + "db_type": "*mysql", + "db_host": "127.0.0.1", + "db_port": -1, + "db_name": "cgrates", + "db_user": "cgrates", + "db_password": "", + "max_open_conns": 100, + "max_idle_conns": 10, + "conn_max_lifetime": 0, + "string_indexed_fields": [], + "prefix_indexed_fields":[], + "query_timeout":"10s", + "sslmode":"disable", + "items":{ + "session_costs": {"limit": -1, "ttl": "", "static_ttl": false}, + "cdrs": {"limit": -1, "ttl": "", "static_ttl": false}, + }, + }, +}` + + eMap := map[string]interface{}{ + "db_type": "*mysql", + "db_host": "127.0.0.1", + "db_port": 3306, + "db_name": "cgrates", + "db_user": "cgrates", + "db_password": "", + "max_open_conns": 100, + "max_idle_conns": 10, + "conn_max_lifetime": 0, + "string_indexed_fields": []string{}, + "prefix_indexed_fields": []string{}, + "query_timeout": "10s", + "sslmode": "disable", + "items": map[string]interface{}{ + "session_costs": map[string]interface{}{"limit": -1, "ttl": "", "static_ttl": false, "remote": false, "replicate": false}, + "cdrs": map[string]interface{}{"limit": -1, "ttl": "", "static_ttl": false, "remote": false, "replicate": false}, + }, + } + if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + t.Error(err) + } else if jsnStoreDbCfg, err := jsnCfg.DbJsonCfg(STORDB_JSN); err != nil { + t.Error(err) + } else if err = dbcfg.loadFromJsonCfg(jsnStoreDbCfg); err != nil { + t.Error(err) + } else if rcv := dbcfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { + t.Errorf("Expected: %+v ,\n recived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } +} diff --git a/config/tlscfg_test.go b/config/tlscfg_test.go index c72dcdf13..ef12e5964 100644 --- a/config/tlscfg_test.go +++ b/config/tlscfg_test.go @@ -20,6 +20,8 @@ package config import ( "reflect" "testing" + + "github.com/cgrates/cgrates/utils" ) func TestTlsCfgloadFromJsonCfg(t *testing.T) { @@ -65,3 +67,67 @@ func TestTlsCfgloadFromJsonCfg(t *testing.T) { t.Errorf("Expected: %+v , recived: %+v", expected, tlscfg) } } +func TestTlsCfgAsMapInterface(t *testing.T) { + var tlscfg TlsCfg + cfgJSONStr := ` { + "tls": { + "server_certificate" : "", + "server_key":"", + "client_certificate" : "", + "client_key":"", + "ca_certificate":"", + "server_policy":4, + "server_name":"", + }, +}` + eMap := map[string]interface{}{ + "server_certificate": "", + "server_key": "", + "client_certificate": "", + "client_key": "", + "ca_certificate": "", + "server_policy": 4, + "server_name": "", + } + + if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + t.Error(err) + } else if jsntlsCfg, err := jsnCfg.TlsCfgJson(); err != nil { + t.Error(err) + } else if err = tlscfg.loadFromJsonCfg(jsntlsCfg); err != nil { + t.Error(err) + } else if rcv := tlscfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { + t.Errorf("Expected: %+v,\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } + + cfgJSONStr = ` { + "tls":{ + "server_certificate" : "path/To/Server/Cert", + "server_key":"path/To/Server/Key", + "client_certificate" : "path/To/Client/Cert", + "client_key":"path/To/Client/Key", + "ca_certificate":"path/To/CA/Cert", + "server_name":"TestServerName", + "server_policy":3, + }, +}` + eMap = map[string]interface{}{ + "server_certificate": "path/To/Server/Cert", + "server_key": "path/To/Server/Key", + "client_certificate": "path/To/Client/Cert", + "client_key": "path/To/Client/Key", + "ca_certificate": "path/To/CA/Cert", + "server_name": "TestServerName", + "server_policy": 3, + } + + if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + t.Error(err) + } else if jsntlsCfg, err := jsnCfg.TlsCfgJson(); err != nil { + t.Error(err) + } else if err = tlscfg.loadFromJsonCfg(jsntlsCfg); err != nil { + t.Error(err) + } else if rcv := tlscfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { + t.Errorf("Expected: %+v,\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } +} diff --git a/utils/consts.go b/utils/consts.go index 502b66fa9..882c1e959 100755 --- a/utils/consts.go +++ b/utils/consts.go @@ -1890,15 +1890,16 @@ const ( TpOutDirCfg = "tp_out_dir" DataCfg = "data" - DefaultRatioCfg = "default_ratio" - ReadersCfg = "readers" - PoolSize = "poolSize" - Conns = "conns" - FilenameCfg = "file_name" - RequestPayloadCfg = "request_payload" - ReplyPayloadCfg = "reply_payload" - TransportCfg = "transport" - StrategyCfg = "strategy" + DefaultRatioCfg = "default_ratio" + ReadersCfg = "readers" + PoolSize = "poolSize" + Conns = "conns" + FilenameCfg = "file_name" + RequestPayloadCfg = "request_payload" + ReplyPayloadCfg = "reply_payload" + TransportCfg = "transport" + StrategyCfg = "strategy" + Dynaprepaid_actionplansCfg = "dynaprepaid_actionplans" ) // FC Template