From 5c564c471d0ec2497cfd990bf7016064979f3a26 Mon Sep 17 00:00:00 2001 From: porosnicuadrian Date: Mon, 12 Jul 2021 17:03:04 +0300 Subject: [PATCH] Started adding defautl tenant on session apis + tests --- sessions/sessions.go | 3 ++ sessions/sessions_test.go | 61 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/sessions/sessions.go b/sessions/sessions.go index 1c2c898c5..8d9d0029a 100644 --- a/sessions/sessions.go +++ b/sessions/sessions.go @@ -2639,6 +2639,9 @@ func (sS *SessionS) BiRPCv1ProcessCDR(clnt rpcclient.ClientConnector, if cgrEvWithArgDisp.ID == "" { cgrEvWithArgDisp.ID = utils.GenUUID() } + if cgrEvWithArgDisp.Tenant == utils.EmptyString { + cgrEvWithArgDisp.Tenant = sS.cgrCfg.GeneralCfg().DefaultTenant + } // RPC caching if sS.cgrCfg.CacheCfg()[utils.CacheRPCResponses].Limit != 0 { diff --git a/sessions/sessions_test.go b/sessions/sessions_test.go index 65fb7e23a..71fe19939 100644 --- a/sessions/sessions_test.go +++ b/sessions/sessions_test.go @@ -2368,3 +2368,64 @@ func TestInitSession(t *testing.T) { t.Errorf("Expected %v , received: %s", utils.ToJSON(exp), utils.ToJSON(s)) } } + +func TestBiRPCv1ProcessCDRNoTenant(t *testing.T) { + cfg, err := config.NewDefaultCGRConfig() + if err != nil { + t.Error(err) + } + cfg.CdrsCfg().Enabled = true + cfg.SessionSCfg().CDRsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCDRs)} + clMock := clMock(func(_ string, args interface{}, reply interface{}) error { + rply, cancast := reply.(*string) + if !cancast { + return fmt.Errorf("can't cast") + } + newArgs, cancast := args.(*engine.ArgV1ProcessEvent) + if !cancast { + return fmt.Errorf("can't cast") + } + if newArgs.Tenant == utils.EmptyString { + return fmt.Errorf("Tenant is missing") + } else if newArgs.Tenant == "cgrates.org" { + *rply = utils.OK + } + return nil + }) + chanClnt := make(chan rpcclient.ClientConnector, 1) + chanClnt <- clMock + connMngr := engine.NewConnManager(cfg, map[string]chan rpcclient.ClientConnector{ + utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCDRs): chanClnt, + }) + db := engine.NewInternalDB(nil, nil, true, cfg.DataDbCfg().Items) + dm := engine.NewDataManager(db, cfg.CacheCfg(), connMngr) + ss := NewSessionS(cfg, dm, connMngr) + + args := &utils.CGREventWithArgDispatcher{ + CGREvent: &utils.CGREvent{ + ID: "TestBiRPCv1ProcessCDRNoTenant", + Event: map[string]interface{}{ + utils.EVENT_NAME: "TerminateEvent", + utils.ToR: utils.VOICE, + utils.OriginID: "123451", + utils.Account: "1001", + utils.Subject: "1001", + utils.Destination: "1002", + utils.Category: "call", + utils.Tenant: "cgrates.org", + utils.RequestType: utils.META_PREPAID, + utils.SetupTime: time.Date(2016, time.January, 5, 18, 30, 49, 0, time.UTC), + utils.AnswerTime: time.Date(2016, time.January, 5, 18, 31, 05, 0, time.UTC), + utils.Usage: "1m10s", + utils.CGRDebitInterval: "10s", + }, + }, + } + var reply string + if err := ss.BiRPCv1ProcessCDR(nil, args, + &reply); err != nil { + t.Error(err) + } else if reply != utils.OK { + t.Errorf("Unexpected reply returned %v", reply) + } +}