mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Add tests for passTimings function in filters.go
This commit is contained in:
committed by
Dan Christian Bogos
parent
e758c048e7
commit
3e7775c6ef
@@ -24,6 +24,7 @@ import (
|
||||
"github.com/cgrates/baningo"
|
||||
"github.com/cgrates/cgrates/config"
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
"github.com/cgrates/rpcclient"
|
||||
)
|
||||
|
||||
func TestFilterPassString(t *testing.T) {
|
||||
@@ -1619,3 +1620,267 @@ func TestAPIBan(t *testing.T) {
|
||||
t.Errorf("Expected error %s received: %v", expErr, err)
|
||||
}
|
||||
}
|
||||
|
||||
// func TestFiltersPassTimings(t *testing.T) {
|
||||
// tmp := connMgr
|
||||
// defer func() {
|
||||
// connMgr = tmp
|
||||
// }()
|
||||
|
||||
// // t.Run("Call is successful", func(t *testing.T) {
|
||||
|
||||
// // cfg := config.NewDefaultCGRConfig()
|
||||
// // cfg.FilterSCfg().ApierSConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaApier)}
|
||||
// // config.SetCgrConfig(cfg)
|
||||
// // client := make(chan rpcclient.ClientConnector, 1)
|
||||
// // ccM := &ccMock{
|
||||
// // calls: map[string]func(args interface{}, reply interface{}) error{
|
||||
// // utils.APIerSv1GetTiming: func(args, reply interface{}) error {
|
||||
// // exp := &utils.TPTiming{
|
||||
// // ID: "MIDNIGHT",
|
||||
// // Years: utils.Years{2020, 2018},
|
||||
// // Months: utils.Months{1, 2, 3, 4},
|
||||
// // MonthDays: utils.MonthDays{5, 6, 7, 8},
|
||||
// // WeekDays: utils.WeekDays{0, 1, 2, 3, 4, 5, 6},
|
||||
// // StartTime: "17:00:00",
|
||||
// // EndTime: "17:00:18",
|
||||
// // }
|
||||
// // *reply.(*utils.TPTiming) = *exp
|
||||
// // return nil
|
||||
// // },
|
||||
// // },
|
||||
// // }
|
||||
// // client <- ccM
|
||||
// // NewConnManager(cfg, map[string]chan rpcclient.ClientConnector{
|
||||
// // utils.ConcatenatedKey(utils.MetaInternal, utils.MetaApier): client,
|
||||
// // })
|
||||
// // fltr, err := NewFilterRule(utils.MetaTimings, "~*req.AnswerTime", []string{"2018-01-07T17:00:10Z"})
|
||||
// // if err != nil {
|
||||
// // t.Fatal(err)
|
||||
// // }
|
||||
// // dtP := utils.MapStorage{
|
||||
// // utils.MetaReq: map[string]interface{}{
|
||||
// // "AnswerTime": "2018-01-07T17:00:10Z",
|
||||
// // },
|
||||
// // }
|
||||
// // rcv, err := fltr.passTimings(dtP)
|
||||
|
||||
// // assertError(t, err, nil)
|
||||
// // assertStatus(t, rcv, true)
|
||||
// // })
|
||||
|
||||
// // t.Run("Failed to parse DataProvider: NOT_FOUND", func(t *testing.T) {
|
||||
// // fltr, err := NewFilterRule(utils.MetaTimings, "~*req.AnswerTime", []string{"2018-01-07T17:00:10Z"})
|
||||
// // if err != nil {
|
||||
// // t.Fatal(err)
|
||||
// // }
|
||||
// // dtP := utils.MapStorage{}
|
||||
// // rcv, err := fltr.passTimings(dtP)
|
||||
|
||||
// // assertError(t, err, nil)
|
||||
// // assertStatus(t, rcv, false)
|
||||
// // })
|
||||
|
||||
// // t.Run("Failed to parse DataProvider: WRONG_PATH", func(t *testing.T) {
|
||||
// // fltr, err := NewFilterRule(utils.MetaTimings, "~*req.AnswerTime", []string{"2018-01-07T17:00:10Z"})
|
||||
// // if err != nil {
|
||||
// // t.Fatal(err)
|
||||
// // }
|
||||
// // dtP := utils.MapStorage{
|
||||
// // utils.MetaReq: 13,
|
||||
// // }
|
||||
// // rcv, err := fltr.passTimings(dtP)
|
||||
// // assertError(t, err, utils.ErrWrongPath)
|
||||
// // assertStatus(t, rcv, false)
|
||||
// // })
|
||||
|
||||
// // t.Run("Failed to convert to time.Time", func(t *testing.T) {
|
||||
// // fltr, err := NewFilterRule(utils.MetaTimings, "~*req.AnswerTime", []string{"2018-01-07T17:00:10Z"})
|
||||
// // if err != nil {
|
||||
// // t.Fatal(err)
|
||||
// // }
|
||||
// // dtP := utils.MapStorage{
|
||||
// // utils.MetaReq: map[string]interface{}{
|
||||
// // "AnswerTime": "invalid time",
|
||||
// // },
|
||||
// // }
|
||||
// // experr := errors.New("Unsupported time format")
|
||||
// // rcv, err := fltr.passTimings(dtP)
|
||||
|
||||
// // assertError(t, err, experr)
|
||||
// // assertStatus(t, rcv, false)
|
||||
// // })
|
||||
|
||||
// // t.Run("Failed to convert to time.Tim", func(t *testing.T) {
|
||||
// // fltr, err := NewFilterRule(utils.MetaTimings, "~*req.AnswerTime", []string{"2018-01-07T17:00:10Z"})
|
||||
// // if err != nil {
|
||||
// // t.Fatal(err)
|
||||
// // }
|
||||
// // dtP := utils.MapStorage{
|
||||
// // utils.MetaReq: map[string]interface{}{
|
||||
// // "AnswerTime": "2018-01-07T17:00:10Z",
|
||||
// // },
|
||||
// // }
|
||||
// // rcv, err := fltr.passTimings(dtP)
|
||||
|
||||
// // assertError(t, err, nil)
|
||||
// // assertStatus(t, rcv, false)
|
||||
// // })
|
||||
// }
|
||||
|
||||
// // func assertError(t testing.TB, received, expected error) {
|
||||
// // t.Helper()
|
||||
// // if expected != nil {
|
||||
// // if received == nil || received.Error() != expected.Error() {
|
||||
// // t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", expected, received)
|
||||
// // } else {
|
||||
// // if received != expected {
|
||||
// // t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", expected, received)
|
||||
// // }
|
||||
// // }
|
||||
// // }
|
||||
// // }
|
||||
|
||||
// // func assertStatus(t testing.TB, received, expected bool) {
|
||||
// // t.Helper()
|
||||
// // if received != expected {
|
||||
// // t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", expected, received)
|
||||
// // }
|
||||
// // }
|
||||
func TestFiltersPassTimingsParseFailNotFound(t *testing.T) {
|
||||
fltr, err := NewFilterRule(utils.MetaTimings, "~*req.AnswerTime", []string{"2018-01-07T17:00:10Z"})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
dtP := utils.MapStorage{}
|
||||
rcv, err := fltr.passTimings(dtP)
|
||||
|
||||
if err != nil {
|
||||
t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", nil, err)
|
||||
}
|
||||
|
||||
if rcv != false {
|
||||
t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", false, rcv)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFiltersPassTimingsParseFailWrongPath(t *testing.T) {
|
||||
fltr, err := NewFilterRule(utils.MetaTimings, "~*req.AnswerTime", []string{"2018-01-07T17:00:10Z"})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
dtP := utils.MapStorage{
|
||||
utils.MetaReq: 13,
|
||||
}
|
||||
|
||||
experr := utils.ErrWrongPath
|
||||
rcv, err := fltr.passTimings(dtP)
|
||||
|
||||
if err == nil || err != experr {
|
||||
t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", experr, err)
|
||||
}
|
||||
|
||||
if rcv != false {
|
||||
t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", false, rcv)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFiltersPassTimingsTimeConvertFail(t *testing.T) {
|
||||
fltr, err := NewFilterRule(utils.MetaTimings, "~*req.AnswerTime", []string{"2018-01-07T17:00:10Z"})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
dtP := utils.MapStorage{
|
||||
utils.MetaReq: map[string]interface{}{
|
||||
"AnswerTime": "invalid time",
|
||||
},
|
||||
}
|
||||
experr := "Unsupported time format"
|
||||
rcv, err := fltr.passTimings(dtP)
|
||||
|
||||
if err == nil || err.Error() != experr {
|
||||
t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", experr, err)
|
||||
}
|
||||
|
||||
if rcv != false {
|
||||
t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", false, rcv)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFiltersPassTimingsCallSuccessful(t *testing.T) {
|
||||
tmp1, tmp2 := connMgr, config.CgrConfig()
|
||||
defer func() {
|
||||
connMgr = tmp1
|
||||
config.SetCgrConfig(tmp2)
|
||||
}()
|
||||
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
cfg.FilterSCfg().ApierSConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaApier)}
|
||||
config.SetCgrConfig(cfg)
|
||||
|
||||
client := make(chan rpcclient.ClientConnector, 1)
|
||||
ccM := &ccMock{
|
||||
calls: map[string]func(args interface{}, reply interface{}) error{
|
||||
utils.APIerSv1GetTiming: func(args, reply interface{}) error {
|
||||
exp := &utils.TPTiming{
|
||||
ID: "MIDNIGHT",
|
||||
Years: utils.Years{2020, 2018},
|
||||
Months: utils.Months{1, 2, 3, 4},
|
||||
MonthDays: utils.MonthDays{5, 6, 7, 8},
|
||||
WeekDays: utils.WeekDays{0, 1, 2, 3, 4, 5, 6},
|
||||
StartTime: "17:00:00",
|
||||
EndTime: "17:00:18",
|
||||
}
|
||||
*reply.(*utils.TPTiming) = *exp
|
||||
return nil
|
||||
},
|
||||
},
|
||||
}
|
||||
client <- ccM
|
||||
|
||||
NewConnManager(cfg, map[string]chan rpcclient.ClientConnector{
|
||||
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaApier): client,
|
||||
})
|
||||
|
||||
fltr, err := NewFilterRule(utils.MetaTimings, "~*req.AnswerTime", []string{"2018-01-07T17:00:10Z"})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
dtP := utils.MapStorage{
|
||||
utils.MetaReq: map[string]interface{}{
|
||||
"AnswerTime": "2018-01-07T17:00:10Z",
|
||||
},
|
||||
}
|
||||
|
||||
rcv, err := fltr.passTimings(dtP)
|
||||
|
||||
if err != nil {
|
||||
t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", nil, err)
|
||||
}
|
||||
|
||||
if rcv != true {
|
||||
t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", true, rcv)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFiltersPassTimingsCallFail(t *testing.T) {
|
||||
|
||||
fltr, err := NewFilterRule(utils.MetaTimings, "~*req.AnswerTime", []string{"2018-01-07T17:00:10Z"})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
dtP := utils.MapStorage{
|
||||
utils.MetaReq: map[string]interface{}{
|
||||
"AnswerTime": "2018-01-07T17:00:10Z",
|
||||
},
|
||||
}
|
||||
rcv, err := fltr.passTimings(dtP)
|
||||
|
||||
if err != nil {
|
||||
t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", nil, err)
|
||||
}
|
||||
|
||||
if rcv != false {
|
||||
t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", false, rcv)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user