diff --git a/config/radiuscfg_test.go b/config/radiuscfg_test.go index f07a1ee9f..ecbb3bcf4 100644 --- a/config/radiuscfg_test.go +++ b/config/radiuscfg_test.go @@ -20,54 +20,75 @@ package config import ( "reflect" "testing" + "time" "github.com/cgrates/cgrates/utils" ) func TestRadiusAgentCfgloadFromJsonCfg(t *testing.T) { - var racfg, expected RadiusAgentCfg - if err := racfg.loadFromJsonCfg(nil, utils.INFIELD_SEP); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(racfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, racfg) + cfgJSON := &RadiusAgentJsonCfg{ + Enabled: utils.BoolPointer(true), + Listen_net: utils.StringPointer(utils.UDP), + Listen_auth: utils.StringPointer("127.0.0.1:1812"), + Listen_acct: utils.StringPointer("127.0.0.1:1813"), + Client_secrets: &map[string]string{utils.MetaDefault: "CGRateS.org"}, + Client_dictionaries: &map[string]string{utils.MetaDefault: "/usr/share/cgrates/radius/dict/"}, + Sessions_conns: &[]string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaSessionS)}, + Request_processors: &[]*ReqProcessorJsnCfg{ + { + ID: utils.StringPointer("OutboundAUTHDryRun"), + Filters: &[]string{"*string:~*req.request_type:OutboundAUTH", "*string:~*req.Msisdn:497700056231"}, + Flags: &[]string{utils.MetaDryRun}, + Timezone: utils.StringPointer(utils.EmptyString), + Request_fields: &[]*FcTemplateJsonCfg{}, + Reply_fields: &[]*FcTemplateJsonCfg{ + { + Tag: utils.StringPointer("Allow"), + Path: utils.StringPointer("*rep.response.Allow"), + Type: utils.StringPointer(utils.META_CONSTANT), + Mandatory: utils.BoolPointer(true), + Layout: utils.StringPointer(string(time.RFC3339)), + }, + }, + }, + }, } - if err := racfg.loadFromJsonCfg(new(RadiusAgentJsonCfg), utils.INFIELD_SEP); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(racfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, racfg) - } - cfgJSONStr := `{ -"radius_agent": { - "enabled": false, // enables the radius agent: - "listen_net": "udp", // network to listen on - "listen_auth": "127.0.0.1:1812", // address where to listen for radius authentication requests - "listen_acct": "127.0.0.1:1813", // address where to listen for radius accounting requests - "client_secrets": { // hash containing secrets for clients connecting here <*default|$client_ip> - "*default": "CGRateS.org" - }, - "client_dictionaries": { // per client path towards directory holding additional dictionaries to load (extra to RFC) - "*default": "/usr/share/cgrates/radius/dict/", // key represents the client IP or catch-all <*default|$client_ip> - }, - "sessions_conns": ["*internal"], - "request_processors": [], -}, -}` - expected = RadiusAgentCfg{ + expected := &RadiusAgentCfg{ + Enabled: true, ListenNet: "udp", ListenAuth: "127.0.0.1:1812", ListenAcct: "127.0.0.1:1813", ClientSecrets: map[string]string{utils.MetaDefault: "CGRateS.org"}, ClientDictionaries: map[string]string{utils.MetaDefault: "/usr/share/cgrates/radius/dict/"}, SessionSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaSessionS)}, + RequestProcessors: []*RequestProcessor{ + { + ID: "OutboundAUTHDryRun", + Filters: []string{"*string:~*req.request_type:OutboundAUTH", "*string:~*req.Msisdn:497700056231"}, + Flags: utils.FlagsWithParams{utils.MetaDryRun: {}}, + Timezone: utils.EmptyString, + RequestFields: []*FCTemplate{}, + ReplyFields: []*FCTemplate{ + { + Tag: "Allow", + Path: "*rep.response.Allow", + Type: utils.META_CONSTANT, + Mandatory: true, + Layout: time.RFC3339, + }, + }, + }, + }, } - if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + for _, r := range expected.RequestProcessors[0].ReplyFields { + r.ComputePath() + } + if cfgJson, err := NewDefaultCGRConfig(); err != nil { t.Error(err) - } else if jsnRaCfg, err := jsnCfg.RadiusAgentJsonCfg(); err != nil { + } else if err = cfgJson.radiusAgentCfg.loadFromJsonCfg(cfgJSON, cfgJson.generalCfg.RSRSep); err != nil { t.Error(err) - } else if err = racfg.loadFromJsonCfg(jsnRaCfg, utils.INFIELD_SEP); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(expected, racfg) { - t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(racfg)) + } else if !reflect.DeepEqual(expected, cfgJson.radiusAgentCfg) { + t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(expected), utils.ToJSON(cfgJson.radiusAgentCfg)) } }