From c2a5259f752fb13b45f88ef9d75825c8e6335939 Mon Sep 17 00:00:00 2001 From: gezimbll Date: Tue, 1 Nov 2022 20:44:13 -0400 Subject: [PATCH] improving coverage tests --- config/eescfg_test.go | 14 ++++- config/erscfg_test.go | 1 - config/objdp_test.go | 2 + engine/account_test.go | 40 +++++++------- engine/action_plan_test.go | 7 ++- engine/action_trigger_test.go | 28 +++++----- engine/balance_filter_test.go | 66 +++++++++++------------ engine/balances_test.go | 13 ++++- engine/calldesc_test.go | 2 + engine/libeventcost_test.go | 22 ++++---- engine/libroutes_test.go | 79 ++++++++++++++++++++++++++-- engine/libstats_test.go | 14 +++++ engine/rateinterval_test.go | 98 +++++++++++++++++++++++++++++++++-- engine/units_counter_test.go | 4 +- 14 files changed, 296 insertions(+), 94 deletions(-) diff --git a/config/eescfg_test.go b/config/eescfg_test.go index 70aaab96f..e4559b5d5 100644 --- a/config/eescfg_test.go +++ b/config/eescfg_test.go @@ -90,6 +90,9 @@ func TestEESClone(t *testing.T) { "connIDs":["id1","id2"], "rpcConnTimeout":"1m", "rpcReplyTimeout":"1m", + "rpcAPIOpts":{ + "key":"val", + } }, "timezone": "local", "filters": ["randomFiletrs"], @@ -268,6 +271,9 @@ func TestEESClone(t *testing.T) { ConnIDs: utils.SliceStringPointer([]string{"id1", "id2"}), RPCConnTimeout: utils.DurationPointer(1 * time.Minute), RPCReplyTimeout: utils.DurationPointer(1 * time.Minute), + RPCAPIOpts: map[string]interface{}{ + "key": "val", + }, }, }, }, @@ -851,7 +857,10 @@ func TestEEsCfgAsMapInterface(t *testing.T) { "csvFieldSeparator":",", "mysqlDSNParams":{ "key":"param", - }, + }, + "rpcAPIOpts":{ + "key":"val", + } }, "timezone": "UTC", "filters": [], @@ -935,6 +944,9 @@ func TestEEsCfgAsMapInterface(t *testing.T) { utils.MYSQLDSNParams: map[string]string{ "key": "param", }, + utils.RPCAPIOpts: map[string]interface{}{ + "key": "val", + }, }, utils.TimezoneCfg: "UTC", utils.FiltersCfg: []string{}, diff --git a/config/erscfg_test.go b/config/erscfg_test.go index 3442296c3..3d20bd34c 100644 --- a/config/erscfg_test.go +++ b/config/erscfg_test.go @@ -169,7 +169,6 @@ func TestEventReaderloadFromJsonCfg(t *testing.T) { if err = eventReader.loadFromJSONCfg(nil, jsonCfg.templates, jsonCfg.generalCfg.RSRSep); err != nil { t.Error(err) } - } func TestEventReaderloadFromJsonCase1(t *testing.T) { diff --git a/config/objdp_test.go b/config/objdp_test.go index 4a3a8cee1..62b345569 100644 --- a/config/objdp_test.go +++ b/config/objdp_test.go @@ -133,6 +133,8 @@ func TestFieldAsInterfaceObjDPValid1(t *testing.T) { t.Error(err) } else if rcv != 1 { t.Errorf("Expected %+v, received %+v", 1, rcv) + } else if _, err = objDp.FieldAsInterface([]string{"val"}); err == nil && err != utils.ErrNotFound { + t.Error(err) } } diff --git a/engine/account_test.go b/engine/account_test.go index 772dda641..aecbf9bd4 100644 --- a/engine/account_test.go +++ b/engine/account_test.go @@ -2436,7 +2436,7 @@ func TestAccountSummaryFieldAsInterface(t *testing.T) { ID: "accID", } - if _, err := as.FieldAsInterface(nil); err == nil { + if _, err := as.FieldAsInterface(nil); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err := as.FieldAsInterface([]string{"test"}); err == nil { t.Error(err) @@ -2447,11 +2447,11 @@ func TestAccountSummaryFieldAsInterface(t *testing.T) { t.Errorf("expected %v ,received %v", utils.ToJSON(val), utils.ToJSON(as.BalanceSummaries[0])) } else if _, err = as.FieldAsInterface([]string{"Tenant"}); err != nil { t.Error(err) - } else if _, err = as.FieldAsInterface([]string{"Tenant", "Value"}); err == nil { + } else if _, err = as.FieldAsInterface([]string{"Tenant", "Value"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = as.FieldAsInterface([]string{"ID"}); err != nil { t.Error(err) - } else if _, err = as.FieldAsInterface([]string{"ID", "test"}); err == nil { + } else if _, err = as.FieldAsInterface([]string{"ID", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } if val, err := as.FieldAsInterface([]string{"BalanceSummaries"}); err != nil { @@ -2475,7 +2475,7 @@ func TestAccountSummaryFieldAsInterface(t *testing.T) { Initial: 20.54, Value: 1, }} - if _, err := as.FieldAsInterface([]string{"BalanceSummaries", "id3"}); err == nil { + if _, err := as.FieldAsInterface([]string{"BalanceSummaries", "id3"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if val, err := as.FieldAsInterface([]string{"BalanceSummaries", "id2"}); err != nil { @@ -2486,11 +2486,11 @@ func TestAccountSummaryFieldAsInterface(t *testing.T) { } if _, err = as.FieldAsInterface([]string{"AllowNegative"}); err != nil { t.Error(err) - } else if _, err = as.FieldAsInterface([]string{"AllowNegative", "test"}); err == nil { + } else if _, err = as.FieldAsInterface([]string{"AllowNegative", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = as.FieldAsInterface([]string{"Disabled"}); err != nil { t.Error(err) - } else if _, err = as.FieldAsInterface([]string{"Disabled", "test"}); err == nil { + } else if _, err = as.FieldAsInterface([]string{"Disabled", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } @@ -2524,8 +2524,6 @@ func TestAccountFieldAsInterface(t *testing.T) { var acc *Account if _, err := acc.FieldAsInterface([]string{}); err != nil { t.Error(err) - } else if _, err := acc.FieldAsInterface([]string{"test"}); err == nil { - t.Error(err) } acc = &Account{ ID: "id", @@ -2575,7 +2573,7 @@ func TestAccountFieldAsInterface(t *testing.T) { } if _, err := acc.FieldAsInterface([]string{"Balance"}); err == nil { t.Error(err) - } else if _, err = acc.FieldAsInterface([]string{"BalanceMap[second]"}); err == nil { + } else if _, err = acc.FieldAsInterface([]string{"BalanceMap[second]"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if val, err := acc.FieldAsInterface([]string{"BalanceMap[first]"}); err != nil { t.Error(err) @@ -2583,14 +2581,14 @@ func TestAccountFieldAsInterface(t *testing.T) { t.Errorf("expected %v ,received %v", utils.ToJSON(val), utils.ToJSON(acc.BalanceMap["first"])) } else if _, err := acc.FieldAsInterface([]string{"BalanceMap[first]", "UnitCounters[test]"}); err == nil { t.Error(err) - } else if _, err := acc.FieldAsInterface([]string{"UnitCounters[test]"}); err == nil { + } else if _, err := acc.FieldAsInterface([]string{"UnitCounters[test]"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if val, err := acc.FieldAsInterface([]string{"UnitCounters[first]"}); err != nil { t.Error(err) } else if !reflect.DeepEqual(val, acc.UnitCounters["first"]) { t.Errorf("expected %v ,received %v", val, acc.UnitCounters["first"]) } - if _, err := acc.FieldAsInterface([]string{"ActionTriggers[3]"}); err == nil { + if _, err := acc.FieldAsInterface([]string{"ActionTriggers[3]"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err := acc.FieldAsInterface([]string{"ActionTriggers[three]"}); err == nil { t.Error(err) @@ -2603,16 +2601,16 @@ func TestAccountFieldAsInterface(t *testing.T) { } if _, err := acc.FieldAsInterface([]string{"ID"}); err != nil { t.Error(err) - } else if _, err = acc.FieldAsInterface([]string{"ID", "test"}); err == nil { + } else if _, err = acc.FieldAsInterface([]string{"ID", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } if _, err := acc.FieldAsInterface([]string{"BalanceMap"}); err != nil { t.Error(err) } else if _, err = acc.FieldAsInterface([]string{"BalanceMap", "first[0]"}); err != nil { t.Error(err) - } else if _, err = acc.FieldAsInterface([]string{"BalanceMap", "first[3]"}); err == nil { + } else if _, err = acc.FieldAsInterface([]string{"BalanceMap", "first[3]"}); err == nil || err != utils.ErrNotFound { t.Error(err) - } else if _, err = acc.FieldAsInterface([]string{"BalanceMap", "first[first]"}); err == nil { + } else if _, err = acc.FieldAsInterface([]string{"BalanceMap", "first[first]"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = acc.FieldAsInterface([]string{utils.UnitCounters}); err != nil { t.Error(err) @@ -2620,15 +2618,15 @@ func TestAccountFieldAsInterface(t *testing.T) { t.Error(err) } else if _, err = acc.FieldAsInterface([]string{utils.UnitCounters, "first", "sec"}); err == nil { t.Error(err) - } else if _, err = acc.FieldAsInterface([]string{utils.UnitCounters, "first", "2"}); err == nil { + } else if _, err = acc.FieldAsInterface([]string{utils.UnitCounters, "first", "2"}); err == nil || err != utils.ErrNotFound { t.Error(err) - } else if _, err := acc.FieldAsInterface([]string{utils.UnitCounters, "first", "0"}); err == nil { + } else if _, err := acc.FieldAsInterface([]string{utils.UnitCounters, "first", "0"}); err == nil || err != utils.ErrNotFound { t.Error(err) - } else if _, err = acc.FieldAsInterface([]string{utils.UnitCounters, "sec"}); err == nil { + } else if _, err = acc.FieldAsInterface([]string{utils.UnitCounters, "sec"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = acc.FieldAsInterface([]string{utils.ActionTriggers}); err != nil { t.Error(err) - } else if _, err = acc.FieldAsInterface([]string{utils.ActionTriggers, "val"}); err == nil { + } else if _, err = acc.FieldAsInterface([]string{utils.ActionTriggers, "val"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if val, err := acc.FieldAsInterface([]string{utils.ActionTriggers, "id"}); err != nil { t.Error(err) @@ -2636,15 +2634,15 @@ func TestAccountFieldAsInterface(t *testing.T) { t.Errorf("expected %v ,received %v", utils.ToJSON(val), utils.ToJSON(acc.ActionTriggers[0])) } else if _, err = acc.FieldAsInterface([]string{utils.AllowNegative}); err != nil { t.Error(err) - } else if _, err = acc.FieldAsInterface([]string{utils.AllowNegative, "test"}); err == nil { + } else if _, err = acc.FieldAsInterface([]string{utils.AllowNegative, "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = acc.FieldAsInterface([]string{utils.Disabled}); err != nil { t.Error(err) - } else if _, err = acc.FieldAsInterface([]string{utils.Disabled, "test"}); err == nil { + } else if _, err = acc.FieldAsInterface([]string{utils.Disabled, "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = acc.FieldAsInterface([]string{utils.UpdateTime}); err != nil { t.Error(err) - } else if _, err = acc.FieldAsInterface([]string{utils.UpdateTime, "test"}); err == nil { + } else if _, err = acc.FieldAsInterface([]string{utils.UpdateTime, "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } } diff --git a/engine/action_plan_test.go b/engine/action_plan_test.go index f2e18e4cf..525478d13 100644 --- a/engine/action_plan_test.go +++ b/engine/action_plan_test.go @@ -114,7 +114,12 @@ func TestActionPlanClone(t *testing.T) { } func TestActionTimingClone(t *testing.T) { - at := &ActionTiming{ + var at *ActionTiming + val := at.Clone() + if val != nil { + t.Errorf("expected nil ,received %v", val) + } + at = &ActionTiming{ Uuid: "Uuid_test", ActionsID: "ActionsID_test", Weight: 0.7, diff --git a/engine/action_trigger_test.go b/engine/action_trigger_test.go index dcb7068c3..8001ab56e 100644 --- a/engine/action_trigger_test.go +++ b/engine/action_trigger_test.go @@ -119,7 +119,7 @@ func TestActionTriggersClone(t *testing.T) { func TestActionTriggerFieldAsInterface(t *testing.T) { at := &ActionTrigger{} - if _, err := at.FieldAsInterface([]string{}); err == nil { + if _, err := at.FieldAsInterface([]string{}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = at.FieldAsInterface([]string{"test"}); err == nil { t.Error(err) @@ -142,35 +142,35 @@ func TestActionTriggerFieldAsInterface(t *testing.T) { } if _, err := at.FieldAsInterface([]string{"ID"}); err != nil { t.Error(err) - } else if _, err = at.FieldAsInterface([]string{"ID", "test"}); err == nil { + } else if _, err = at.FieldAsInterface([]string{"ID", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = at.FieldAsInterface([]string{"UniqueID"}); err != nil { t.Error(err) - } else if _, err = at.FieldAsInterface([]string{"UniqueID", "test"}); err == nil { + } else if _, err = at.FieldAsInterface([]string{"UniqueID", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = at.FieldAsInterface([]string{"ThresholdType"}); err != nil { t.Error(err) - } else if _, err = at.FieldAsInterface([]string{"ThresholdType", "test"}); err == nil { + } else if _, err = at.FieldAsInterface([]string{"ThresholdType", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = at.FieldAsInterface([]string{"ThresholdValue"}); err != nil { t.Error(err) - } else if _, err = at.FieldAsInterface([]string{"ThresholdValue", "test"}); err == nil { + } else if _, err = at.FieldAsInterface([]string{"ThresholdValue", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = at.FieldAsInterface([]string{"Recurrent"}); err != nil { t.Error(err) - } else if _, err = at.FieldAsInterface([]string{"Recurrent", "test"}); err == nil { + } else if _, err = at.FieldAsInterface([]string{"Recurrent", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = at.FieldAsInterface([]string{"MinSleep"}); err != nil { t.Error(err) - } else if _, err = at.FieldAsInterface([]string{"MinSleep", "test"}); err == nil { + } else if _, err = at.FieldAsInterface([]string{"MinSleep", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = at.FieldAsInterface([]string{"ExpirationDate"}); err != nil { t.Error(err) - } else if _, err = at.FieldAsInterface([]string{"ExpirationDate", "test"}); err == nil { + } else if _, err = at.FieldAsInterface([]string{"ExpirationDate", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = at.FieldAsInterface([]string{"ActivationDate"}); err != nil { t.Error(err) - } else if _, err = at.FieldAsInterface([]string{"ActivationDate", "test"}); err == nil { + } else if _, err = at.FieldAsInterface([]string{"ActivationDate", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = at.FieldAsInterface([]string{"Balance"}); err != nil { t.Error(err) @@ -178,23 +178,23 @@ func TestActionTriggerFieldAsInterface(t *testing.T) { t.Error(err) } else if _, err = at.FieldAsInterface([]string{"Weight"}); err != nil { t.Error(err) - } else if _, err = at.FieldAsInterface([]string{"Weight", "test"}); err == nil { + } else if _, err = at.FieldAsInterface([]string{"Weight", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = at.FieldAsInterface([]string{"ActionsID"}); err != nil { t.Error(err) - } else if _, err = at.FieldAsInterface([]string{"ActionsID", "test"}); err == nil { + } else if _, err = at.FieldAsInterface([]string{"ActionsID", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = at.FieldAsInterface([]string{"MinQueuedItems"}); err != nil { t.Error(err) - } else if _, err = at.FieldAsInterface([]string{"MinQueuedItems", "test"}); err == nil { + } else if _, err = at.FieldAsInterface([]string{"MinQueuedItems", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = at.FieldAsInterface([]string{"Executed"}); err != nil { t.Error(err) - } else if _, err = at.FieldAsInterface([]string{"Executed", "test"}); err == nil { + } else if _, err = at.FieldAsInterface([]string{"Executed", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = at.FieldAsInterface([]string{"LastExecutionTime"}); err != nil { t.Error(err) - } else if _, err = at.FieldAsInterface([]string{"LastExecutionTime", "test"}); err == nil { + } else if _, err = at.FieldAsInterface([]string{"LastExecutionTime", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } diff --git a/engine/balance_filter_test.go b/engine/balance_filter_test.go index b397464b3..9398d50cb 100644 --- a/engine/balance_filter_test.go +++ b/engine/balance_filter_test.go @@ -190,8 +190,8 @@ func TestBalanceLoadFromBalance(t *testing.T) { Timings: []*RITiming{}, TimingIDs: &utils.StringMap{}, Factor: &ValueFactor{}, - Disabled: utils.BoolPointer(false), - Blocker: utils.BoolPointer(false), + Disabled: utils.BoolPointer(true), + Blocker: utils.BoolPointer(true), } b := &Balance{ Uuid: "uuid", @@ -229,8 +229,8 @@ func TestBalanceLoadFromBalance(t *testing.T) { Factor: ValueFactor{ "valfac": 22, }, - Disabled: false, - Blocker: false, + Disabled: true, + Blocker: true, } eOut := &BalanceFilter{ Uuid: utils.StringPointer("uuid"), @@ -271,8 +271,8 @@ func TestBalanceLoadFromBalance(t *testing.T) { Factor: &ValueFactor{ "valfac": 22, }, - Disabled: utils.BoolPointer(false), - Blocker: utils.BoolPointer(false), + Disabled: utils.BoolPointer(true), + Blocker: utils.BoolPointer(true), } if val := bf.LoadFromBalance(b); !reflect.DeepEqual(val, eOut) { t.Errorf("expected %v ,received %v", utils.ToJSON(eOut), utils.ToJSON(val)) @@ -283,19 +283,19 @@ func TestBalanceLoadFromBalance(t *testing.T) { func TestBalanceFilterFieldAsInterface(t *testing.T) { bp := &BalanceFilter{} - if _, err := bp.FieldAsInterface([]string{}); err == nil { + if _, err := bp.FieldAsInterface([]string{}); err == nil || err != utils.ErrNotFound { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"DestinationIDs[key]"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"DestinationIDs[key]"}); err == nil || err != utils.ErrNotFound { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"Categories[indx]"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"Categories[indx]"}); err == nil || err != utils.ErrNotFound { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"SharedGroups[indx]"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"SharedGroups[indx]"}); err == nil || err != utils.ErrNotFound { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"TimingIDs[index]"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"TimingIDs[indx]"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = bp.FieldAsInterface([]string{"Timings[indx]"}); err == nil { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"Factor[indx]"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"Factor[indx]"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = bp.FieldAsInterface([]string{"Uuid"}); err != nil { t.Error(err) @@ -372,15 +372,15 @@ func TestBalanceFilterFieldAsInterface(t *testing.T) { Blocker: utils.BoolPointer(false), } - if _, err := bp.FieldAsInterface([]string{"DestinationIDs[indx]"}); err == nil { + if _, err := bp.FieldAsInterface([]string{"DestinationIDs[indx]"}); err == nil || err != utils.ErrNotFound { t.Error(err) - } else if _, err := bp.FieldAsInterface([]string{"Categories[indx]"}); err == nil { + } else if _, err := bp.FieldAsInterface([]string{"Categories[indx]"}); err == nil || err != utils.ErrNotFound { t.Error(err) - } else if _, err := bp.FieldAsInterface([]string{"SharedGroups[indx]"}); err == nil { + } else if _, err := bp.FieldAsInterface([]string{"SharedGroups[indx]"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err := bp.FieldAsInterface([]string{"TimingIDs[indx]"}); err == nil { t.Error(err) - } else if _, err := bp.FieldAsInterface([]string{"Factor[indx]"}); err == nil { + } else if _, err := bp.FieldAsInterface([]string{"Factor[indx]"}); err == nil || err != utils.ErrNotFound { t.Error(err) } @@ -398,72 +398,68 @@ func TestBalanceFilterFieldAsInterface(t *testing.T) { if _, err = bp.FieldAsInterface([]string{"Timings[three]"}); err == nil { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"Timings[3]"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"Timings[3]"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = bp.FieldAsInterface([]string{"Timings[0]"}); err != nil { t.Error(err) } if _, err := bp.FieldAsInterface([]string{"Uuid"}); err != nil { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"Uuid", "test"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"Uuid", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = bp.FieldAsInterface([]string{"ID"}); err != nil { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"ID", "test"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"ID", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = bp.FieldAsInterface([]string{"Type"}); err != nil { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"Type", "test"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"Type", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = bp.FieldAsInterface([]string{"ExpirationDate"}); err != nil { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"ExpirationDate", "test"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"ExpirationDate", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = bp.FieldAsInterface([]string{"Weight"}); err != nil { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"Weight", "test"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"Weight", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = bp.FieldAsInterface([]string{"Type"}); err != nil { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"Type", "test"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"Type", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = bp.FieldAsInterface([]string{"RatingSubject"}); err != nil { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"RatingSubject", "test"}); err == nil { - t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"RatingSubject"}); err != nil { - t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"RatingSubject", "test"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"RatingSubject", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = bp.FieldAsInterface([]string{"Disabled"}); err != nil { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"Disabled", "test"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"Disabled", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = bp.FieldAsInterface([]string{"RatingSubject"}); err != nil { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"RatingSubject", "test"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"RatingSubject", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = bp.FieldAsInterface([]string{"Blocker"}); err != nil { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"Blocker", "test"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"Blocker", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = bp.FieldAsInterface([]string{"DestinationIDs"}); err != nil { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"DestinationIDs", "test"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"DestinationIDs", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = bp.FieldAsInterface([]string{"Categories"}); err != nil { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"Categories", "test"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"Categories", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = bp.FieldAsInterface([]string{"SharedGroups"}); err != nil { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"SharedGroups", "test"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"SharedGroups", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = bp.FieldAsInterface([]string{"Timings"}); err != nil { t.Error(err) } else if _, err = bp.FieldAsInterface([]string{"Timings", "id2"}); err != nil { t.Error(err) - } else if _, err = bp.FieldAsInterface([]string{"Timings", "test"}); err == nil { + } else if _, err = bp.FieldAsInterface([]string{"Timings", "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } diff --git a/engine/balances_test.go b/engine/balances_test.go index b512abddb..6012cc663 100644 --- a/engine/balances_test.go +++ b/engine/balances_test.go @@ -116,6 +116,12 @@ func TestBalanceMatchFilter(t *testing.T) { if !mb1.MatchFilter(mb2, false, false) { t.Errorf("Match filter failure: %+v == %+v", mb1, mb2) } + + mb1.Uuid, mb2.Uuid = "id", utils.StringPointer("id") + if !mb1.MatchFilter(mb2, false, false) { + t.Errorf("Match filter failure: %+v == %+v", mb1, mb2) + } + } func TestBalanceMatchFilterEmpty(t *testing.T) { @@ -143,7 +149,12 @@ func TestBalanceMatchFilterDiffId(t *testing.T) { } func TestBalanceClone(t *testing.T) { - mb1 := &Balance{Value: 1, Weight: 2, RatingSubject: "test", DestinationIDs: utils.NewStringMap("5")} + var mb1 *Balance + if mb2 := mb1.Clone(); mb2 != nil { + t.Errorf("Balance should be %v", mb2) + } + + mb1 = &Balance{Value: 1, Weight: 2, RatingSubject: "test", DestinationIDs: utils.NewStringMap("5")} mb2 := mb1.Clone() if mb1 == mb2 || !mb1.Equal(mb2) { t.Errorf("Cloning failure: \n%+v\n%+v", mb1, mb2) diff --git a/engine/calldesc_test.go b/engine/calldesc_test.go index 6f4712304..b8a8a7831 100644 --- a/engine/calldesc_test.go +++ b/engine/calldesc_test.go @@ -1857,6 +1857,7 @@ func TestCallDescriptorUpdateFromCGREvent(t *testing.T) { "Tenant": "cgrates.org", "ToR": "", "Usage": 30 * time.Minute, + "Extra": "Value", }, } cd := &CallDescriptor{ @@ -2227,6 +2228,7 @@ func TestCalldescNewCallDescriptorFromCGREvent(t *testing.T) { if !reflect.DeepEqual(rcv, exp) { t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", exp, rcv) } + } func TestCalldescAsCGREvent(t *testing.T) { diff --git a/engine/libeventcost_test.go b/engine/libeventcost_test.go index 4f25e2b42..ee397e629 100644 --- a/engine/libeventcost_test.go +++ b/engine/libeventcost_test.go @@ -26,7 +26,7 @@ import ( "github.com/cgrates/cgrates/utils" ) -//Start tests for ChargingInterval +// Start tests for ChargingInterval func TestChargingIntervalPartiallyEquals(t *testing.T) { ci1 := &ChargingInterval{ RatingID: "Rating1", @@ -341,7 +341,7 @@ func TestChargingIntervalClone(t *testing.T) { } -//Start tests for ChargingIncrement +// Start tests for ChargingIncrement func TestChargingIncrementEquals(t *testing.T) { ch1 := &ChargingIncrement{ AccountingID: "Acc1", @@ -414,7 +414,7 @@ func TestChargingIncrementTotalCost(t *testing.T) { } } -//Start tests for BalanceCharge +// Start tests for BalanceCharge func TestBalanceChargeEquals(t *testing.T) { bc1 := &BalanceCharge{ AccountID: "1001", @@ -463,7 +463,7 @@ func TestBalanceChargeClone(t *testing.T) { } } -//Start tests for RatingMatchedFilters +// Start tests for RatingMatchedFilters func TestRatingMatchedFiltersEquals(t *testing.T) { rmf1 := RatingMatchedFilters{ "AccountID": "1001", @@ -504,7 +504,7 @@ func TestRatingMatchedFiltersClone(t *testing.T) { } } -//Start tests for ChargedTiming +// Start tests for ChargedTiming func TestChargedTimingEquals(t *testing.T) { ct1 := &ChargedTiming{ Years: utils.Years{1, 2}, @@ -553,7 +553,7 @@ func TestChargedTimingClone(t *testing.T) { } } -//Start tests for RatingUnit +// Start tests for RatingUnit func TestRatingUnitEquals(t *testing.T) { ru1 := &RatingUnit{ ConnectFee: 1.23, @@ -614,7 +614,7 @@ func TestRatingUnitClone(t *testing.T) { } } -//Start tests for RatingFilters +// Start tests for RatingFilters func TestRatingFiltersGetIDWithSet(t *testing.T) { rf1 := RatingFilters{ "Key1": RatingMatchedFilters{ @@ -673,7 +673,7 @@ func TestRatingFiltersClone(t *testing.T) { } } -//Start tests for Rating +// Start tests for Rating func TestRatingGetIDWithSet(t *testing.T) { r1 := Rating{ "Key1": &RatingUnit{ @@ -762,7 +762,7 @@ func TestRatingClone(t *testing.T) { } } -//Start tests for ChargedRates +// Start tests for ChargedRates func TestChargedRatesGetIDWithSet(t *testing.T) { cr1 := ChargedRates{ "Key1": RateGroups{ @@ -875,7 +875,7 @@ func TestChargedRatesClone(t *testing.T) { } } -//Start tests for ChargedTimings +// Start tests for ChargedTimings func TestChargedTimingsGetIDWithSet(t *testing.T) { ct1 := ChargedTimings{ "Key1": &ChargedTiming{ @@ -946,7 +946,7 @@ func TestChargedTimingsClone(t *testing.T) { } } -//Start tests for Accounting +// Start tests for Accounting func TestAccountingGetIDWithSet(t *testing.T) { a1 := Accounting{ "Key1": &BalanceCharge{ diff --git a/engine/libroutes_test.go b/engine/libroutes_test.go index d3ccf8e5c..2975c565c 100644 --- a/engine/libroutes_test.go +++ b/engine/libroutes_test.go @@ -359,7 +359,7 @@ func TestLibRoutesSortHighestCost(t *testing.T) { } } -//sort based on *acd and *tcd +// sort based on *acd and *tcd func TestLibRoutesSortQOS(t *testing.T) { sSpls := &SortedRoutes{ Routes: []*SortedRoute{ @@ -428,7 +428,7 @@ func TestLibRoutesSortQOS(t *testing.T) { } } -//sort based on *acd and *tcd +// sort based on *acd and *tcd func TestLibRoutesSortQOS2(t *testing.T) { sSpls := &SortedRoutes{ Routes: []*SortedRoute{ @@ -492,7 +492,7 @@ func TestLibRoutesSortQOS2(t *testing.T) { } } -//sort based on *pdd +// sort based on *pdd func TestLibRoutesSortQOS3(t *testing.T) { sSpls := &SortedRoutes{ Routes: []*SortedRoute{ @@ -1400,3 +1400,76 @@ func TestSortedRoutesAsNavigableMap(t *testing.T) { t.Errorf("Expected %+v, received %+v", utils.ToJSON(expNavMap), utils.ToJSON(rcv)) } } + +func TestSortedRoutesListRouteIDs(t *testing.T) { + sr := SortedRoutesList{ + { + Routes: []*SortedRoute{ + { + RouteID: "sr1id1", + }, + { + RouteID: "sr1id2", + }, + }, + }, + { + Routes: []*SortedRoute{ + { + RouteID: "sr2id1", + }, + { + RouteID: "sr2id2", + }, + }, + }, + } + + val := sr.RouteIDs() + sort.Slice(val, func(i, j int) bool { + return val[i] < val[j] + }) + exp := []string{"sr1id1", "sr1id2", "sr2id1", "sr2id2"} + if !reflect.DeepEqual(val, exp) { + t.Errorf("expected %v ,received %v", exp, val) + } +} + +func TestSortedRoutesListRoutesWithParams(t *testing.T) { + sRs := SortedRoutesList{ + { + Routes: []*SortedRoute{ + { + RouteID: "route1", + RouteParameters: "params1", + }, + { + RouteID: "route2", + RouteParameters: "params2", + }, + }, + }, + { + Routes: []*SortedRoute{ + { + RouteID: "route3", + RouteParameters: "params3", + }, + { + RouteID: "route4", + RouteParameters: "params4", + }, + }, + }, + } + val := sRs.RoutesWithParams() + sort.Slice(val, func(i, j int) bool { + return val[i] < val[j] + }) + exp := []string{"route1:params1", "route2:params2", "route3:params3", "route4:params4"} + + if !reflect.DeepEqual(val, exp) { + t.Errorf("expected %v ,received %v", val, exp) + } + +} diff --git a/engine/libstats_test.go b/engine/libstats_test.go index 596b97fec..96d05b90b 100644 --- a/engine/libstats_test.go +++ b/engine/libstats_test.go @@ -1333,3 +1333,17 @@ func TestStatQueueLockUnlockStatQueues(t *testing.T) { t.Fatal("expected struct field \"lkID\" to be empty") } } + +func TestStatQueueUnmarshalJSON(t *testing.T) { + sq := &StatQueue{} + if err := sq.UnmarshalJSON(nil); err == nil { + t.Error(err) + } + ssq := &StatQueueWithAPIOpts{} + if err := ssq.UnmarshalJSON(nil); err == nil { + t.Error(err) + } else if err := ssq.UnmarshalJSON([]byte("value:key")); err == nil { + t.Error(err) + } + +} diff --git a/engine/rateinterval_test.go b/engine/rateinterval_test.go index da62f9d98..8402e6ab2 100644 --- a/engine/rateinterval_test.go +++ b/engine/rateinterval_test.go @@ -815,10 +815,100 @@ func TestRGRateCloneNil(t *testing.T) { } } -func RITimingAsFieldInterface(t *testing.T) { - ri := &RateInterval{} - if _, err := ri.Timing.FieldAsInterface([]string{}); err == nil { +func TestRGRateAsFieldInterface(t *testing.T) { + ri := &RITiming{ + Years: utils.Years{2, 3}, + Months: utils.Months{1, 2, 3, 5}, + MonthDays: utils.MonthDays{21, 12, 14}, + WeekDays: utils.WeekDays{0, 2, 3}, + ID: "id", + StartTime: "20:00:00", + EndTime: "20:30:00", + } + if _, err := ri.FieldAsInterface([]string{}); err == nil || err != utils.ErrNotFound { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"Years[3]"}); err == nil || err != utils.ErrNotFound { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"Months[5]"}); err == nil || err != utils.ErrNotFound { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"MonthDays[4]"}); err == nil || err != utils.ErrNotFound { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"WeekDays[4]"}); err == nil || err != utils.ErrNotFound { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"Values"}); err == nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"Years[0]"}); err != nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"Months[1]"}); err != nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"MonthDays[1]"}); err != nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"WeekDays[1]"}); err != nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"ID"}); err != nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"ID", "test"}); err == nil || err != utils.ErrNotFound { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"StartTime"}); err != nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"StartTime", "test"}); err == nil || err != utils.ErrNotFound { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"StartTime"}); err != nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"StartTime", "test"}); err == nil || err != utils.ErrNotFound { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"Years"}); err != nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"Years", "0"}); err != nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"Years", "5"}); err == nil || err != utils.ErrNotFound { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"Years", "zero"}); err == nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"Years", "0", "2"}); err == nil || err != utils.ErrNotFound { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"EndTime"}); err != nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"EndTime", "test"}); err == nil || err != utils.ErrNotFound { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"Months"}); err != nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"Months", "0"}); err != nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"Months", "5"}); err == nil || err != utils.ErrNotFound { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"Months", "zero"}); err == nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"Months", "0", "2"}); err == nil || err != utils.ErrNotFound { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"MonthDays"}); err != nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"MonthDays", "0"}); err != nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"MonthDays", "5"}); err == nil || err != utils.ErrNotFound { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"MonthDays", "zero"}); err == nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"MonthDays", "0", "2"}); err == nil || err != utils.ErrNotFound { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"WeekDays"}); err != nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"WeekDays", "0"}); err != nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"WeekDays", "5"}); err == nil || err != utils.ErrNotFound { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"WeekDays", "zero"}); err == nil { + t.Error(err) + } else if _, err = ri.FieldAsInterface([]string{"WeekDays", "0", "2"}); err == nil || err != utils.ErrNotFound { + t.Error(err) + } +} + +func TestRGRateFieldAsString(t *testing.T) { + rit := &RITiming{} + if _, err := rit.FieldAsString([]string{"ID"}); err != nil { + t.Error(err) + } else if _, err = rit.FieldAsString([]string{"val"}); err == nil { t.Error(err) } - } diff --git a/engine/units_counter_test.go b/engine/units_counter_test.go index dc28a000e..93acb0642 100644 --- a/engine/units_counter_test.go +++ b/engine/units_counter_test.go @@ -916,13 +916,13 @@ func TestUnitCounterFilterFieldAsInterFace(t *testing.T) { Type: utils.StringPointer("kind"), Weight: utils.Float64Pointer(15), }} - if _, err := cfs.FieldAsInterface([]string{}); err == nil { + if _, err := cfs.FieldAsInterface([]string{}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if _, err = cfs.FieldAsInterface([]string{"test"}); err == nil { t.Error(err) } else if _, err = cfs.FieldAsInterface([]string{utils.Value}); err != nil { t.Error(err) - } else if _, err = cfs.FieldAsInterface([]string{utils.Value, "test"}); err == nil { + } else if _, err = cfs.FieldAsInterface([]string{utils.Value, "test"}); err == nil || err != utils.ErrNotFound { t.Error(err) } else if val, err := cfs.FieldAsInterface([]string{utils.Filter}); err != nil { t.Error(err)