From 3be693fcac7ecda14bb9af6269e9013b6dfd9851 Mon Sep 17 00:00:00 2001 From: TeoV Date: Thu, 1 Feb 2018 10:29:17 +0200 Subject: [PATCH] Add test for all methods of FSEvent and KamEvent --- agents/fsevent.go | 2 +- agents/kamevent.go | 1 + agents/kamevent_test.go | 113 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 115 insertions(+), 1 deletion(-) diff --git a/agents/fsevent.go b/agents/fsevent.go index d862d75ad..2a57eaace 100644 --- a/agents/fsevent.go +++ b/agents/fsevent.go @@ -416,7 +416,7 @@ func (fsev FSEvent) V1InitSessionArgs() (args *sessions.V1InitSessionArgs) { Tenant: fsev.GetTenant(utils.META_DEFAULT), ID: utils.UUIDSha1Prefix(), Time: &sTime, - Event: fsev.AsMapStringInterface(config.CgrConfig().DefaultTimezone), + Event: fsev.AsMapStringInterface(timezone), }, } subsystems, has := fsev[VarCGRSubsystems] diff --git a/agents/kamevent.go b/agents/kamevent.go index a7909ac76..1e987e9b8 100644 --- a/agents/kamevent.go +++ b/agents/kamevent.go @@ -125,6 +125,7 @@ func (kev KamEvent) AsMapStringInterface() (mp map[string]interface{}) { // AsCDR converts KamEvent into CDR func (kev KamEvent) AsCDR(timezone string) (cdr *engine.CDR) { cdr = new(engine.CDR) + cdr.ExtraFields = make(map[string]string) for fld, val := range kev { // first ExtraFields so we can overwrite if !utils.IsSliceMember(utils.PrimaryCdrFields, fld) && !utils.IsSliceMember(kamReservedFields, fld) { diff --git a/agents/kamevent_test.go b/agents/kamevent_test.go index fbd10987f..ff5bb28d3 100644 --- a/agents/kamevent_test.go +++ b/agents/kamevent_test.go @@ -20,8 +20,10 @@ package agents import ( "reflect" "testing" + "time" "github.com/cgrates/cgrates/config" + "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/sessions" "github.com/cgrates/cgrates/utils" ) @@ -59,6 +61,79 @@ func TestNewKamEvent(t *testing.T) { } } +func TestKamEvMissingParameter(t *testing.T) { + kamEv = KamEvent{EVENT: CGR_CALL_END, + "callid": "46c01a5c249b469e76333fc6bfa87f6a@0:0:0:0:0:0:0:0", + "from_tag": "bf71ad59", "to_tag": "7351fecf", + "cgr_reqtype": utils.META_POSTPAID, "cgr_account": "1001", + "cgr_answertime": "1419839310", "cgr_duration": "3", "cgr_pdd": "4", + utils.CGR_SUPPLIER: "supplier2", + utils.CGR_DISCONNECT_CAUSE: "200"} + if missingParam := kamEv.MissingParameter(); missingParam != true { + t.Errorf("Expecting: true, received:%+v ", missingParam) + } +} + +func TestKamEvAsMapStringInterface(t *testing.T) { + kamEv := KamEvent{"event": "CGR_CALL_END", + "callid": "46c01a5c249b469e76333fc6bfa87f6a@0:0:0:0:0:0:0:0", + "from_tag": "bf71ad59", "to_tag": "7351fecf", + "cgr_reqtype": utils.META_POSTPAID, "cgr_account": "1001", + "cgr_destination": "1002", "cgr_answertime": "1419839310", + "cgr_duration": "3", "cgr_pdd": "4", + utils.CGR_SUPPLIER: "supplier2", + utils.CGR_DISCONNECT_CAUSE: "200"} + expMp := make(map[string]interface{}) + expMp["cgr_account"] = "1001" + expMp["cgr_duration"] = "3" + expMp["cgr_pdd"] = "4" + expMp["cgr_destination"] = "1002" + expMp[utils.CGR_SUPPLIER] = "supplier2" + expMp["cgr_answertime"] = "1419839310" + expMp[utils.CGR_DISCONNECT_CAUSE] = "200" + expMp["callid"] = "46c01a5c249b469e76333fc6bfa87f6a@0:0:0:0:0:0:0:0" + expMp["from_tag"] = "bf71ad59" + expMp["to_tag"] = "7351fecf" + expMp["cgr_reqtype"] = utils.META_POSTPAID + rcv := kamEv.AsMapStringInterface() + if !reflect.DeepEqual(expMp, rcv) { + t.Errorf("Expecting: %+v, received: %+v", expMp, rcv) + } +} + +func TestKamEvAsCDR(t *testing.T) { + timezone := config.CgrConfig().DefaultTimezone + expMp := make(map[string]string) + expMp["cgr_account"] = "1001" + expMp["cgr_duration"] = "3" + expMp["cgr_pdd"] = "4" + expMp["cgr_destination"] = "1002" + expMp[utils.CGR_SUPPLIER] = "supplier2" + expMp["cgr_answertime"] = "1419839310" + expMp[utils.CGR_DISCONNECT_CAUSE] = "200" + expMp["callid"] = "46c01a5c249b469e76333fc6bfa87f6a@0:0:0:0:0:0:0:0" + expMp["from_tag"] = "bf71ad59" + expMp["to_tag"] = "7351fecf" + expMp["cgr_reqtype"] = utils.META_POSTPAID + kamEv := KamEvent{"event": "CGR_CALL_END", + "callid": "46c01a5c249b469e76333fc6bfa87f6a@0:0:0:0:0:0:0:0", + "from_tag": "bf71ad59", "to_tag": "7351fecf", + "cgr_reqtype": utils.META_POSTPAID, "cgr_account": "1001", + "cgr_destination": "1002", "cgr_answertime": "1419839310", + "cgr_duration": "3", "cgr_pdd": "4", + utils.CGR_SUPPLIER: "supplier2", + utils.CGR_DISCONNECT_CAUSE: "200"} + eStoredCdr := &engine.CDR{ + Tenant: "cgrates.org", Category: "call", Source: "KamailioEvent", + ToR: "*voice", Usage: 0, RequestType: "*rated", + ExtraFields: expMp, Cost: -1, + } + rcv := kamEv.AsCDR(timezone) + if !reflect.DeepEqual(eStoredCdr, rcv) { + t.Errorf("Expecting: %+v, received: %+v", eStoredCdr, rcv) + } +} + func TestKamEvV1AuthorizeArgs(t *testing.T) { timezone := config.CgrConfig().DefaultTimezone kamEv := KamEvent{"event": "CGR_CALL_END", @@ -101,6 +176,44 @@ func TestKamEvV1AuthorizeArgs(t *testing.T) { } } +func TestKamEvAsKamAuthReply(t *testing.T) { + timezone := config.CgrConfig().DefaultTimezone + kamEv := KamEvent{"event": "CGR_CALL_END", + "callid": "46c01a5c249b469e76333fc6bfa87f6a@0:0:0:0:0:0:0:0", + "from_tag": "bf71ad59", "to_tag": "7351fecf", + "cgr_reqtype": utils.META_POSTPAID, "cgr_account": "1001", + "cgr_destination": "1002", "cgr_answertime": "1419839310", + "cgr_duration": "3", "cgr_pdd": "4", + utils.CGR_SUPPLIER: "supplier2", + utils.CGR_DISCONNECT_CAUSE: "200"} + sTime, err := utils.ParseTimeDetectLayout(kamEv[utils.AnswerTime], timezone) + if err != nil { + return + } + authArgs := &sessions.V1AuthorizeArgs{ + GetMaxUsage: true, + CGREvent: utils.CGREvent{ + Tenant: utils.FirstNonEmpty(kamEv[utils.Tenant], + config.CgrConfig().DefaultTenant), + ID: utils.UUIDSha1Prefix(), + Time: &sTime, + Event: kamEv.AsMapStringInterface(), + }, + } + authRply := &sessions.V1AuthorizeReply{ + MaxUsage: utils.DurationPointer(time.Duration(5 * time.Second)), + } + expected := &KamAuthReply{ + Event: CGR_AUTH_REPLY, + MaxUsage: 5, + } + if rcv, err := kamEv.AsKamAuthReply(authArgs, authRply, nil); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(expected, rcv) { + t.Errorf("Expecting: %+v, received: %+v", expected, rcv) + } +} + func TestKamEvV1InitSessionArgs(t *testing.T) { timezone := config.CgrConfig().DefaultTimezone kamEv := KamEvent{"event": "CGR_CALL_END",