From 5552b01f47dd67c729f2b0809619cc83b053d678 Mon Sep 17 00:00:00 2001 From: andronache Date: Mon, 5 Apr 2021 15:00:06 +0300 Subject: [PATCH] 100% Coverage for ers/ers.go --- ers/ers_it_test.go | 92 +++++++++++++++++++++++++++++----------------- 1 file changed, 58 insertions(+), 34 deletions(-) diff --git a/ers/ers_it_test.go b/ers/ers_it_test.go index ebdfeee29..c3dac48d8 100644 --- a/ers/ers_it_test.go +++ b/ers/ers_it_test.go @@ -20,6 +20,7 @@ along with this program. If not, see package ers import ( + "errors" "reflect" "sync" "testing" @@ -670,40 +671,6 @@ func TestERsProcessEvent9(t *testing.T) { } func TestERsProcessEvent10(t *testing.T) { - cfg := config.NewDefaultCGRConfig() - cfg.ERsCfg().Readers = []*config.EventReaderCfg{ - { - ID: "test", - Type: utils.MetaNone, - }, - } - cfg.ERsCfg().SessionSConns = []string{rpcclient.InternalRPC} - fltrS := &engine.FilterS{} - rpcInt := map[string]chan rpcclient.ClientConnector{} - connMang := engine.NewConnManager(cfg, rpcInt) - srv := NewERService(cfg, fltrS, connMang) - - rdrCfg := &config.EventReaderCfg{ - Flags: map[string]utils.FlagParams{ - utils.MetaMessage: map[string][]string{}, - }, - } - cgrEvent := &utils.CGREvent{ - Tenant: "", - ID: "", - Time: nil, - Event: nil, - APIOpts: map[string]interface{}{ - utils.OptsRoutesLimit: true, - }, - } - err := srv.processEvent(cgrEvent, rdrCfg) - if err == nil || err.Error() != "UNSUPPORTED_SERVICE_METHOD" { - t.Fatalf("\nExpecting <%+v>,\n Received <%+v>", "UNSUPPORTED_SERVICE_METHOD", err) - } -} - -func TestERsProcessEvent11(t *testing.T) { cfg := config.NewDefaultCGRConfig() cfg.ERsCfg().Readers = []*config.EventReaderCfg{ { @@ -736,3 +703,60 @@ func TestERsProcessEvent11(t *testing.T) { t.Fatalf("\nExpecting <%+v>,\n Received <%+v>", "MANDATORY_IE_MISSING: [connIDs]", err) } } + +type testMockClients struct { + calls map[string]func(args interface{}, reply interface{}) error +} + +func (sT *testMockClients) Call(method string, arg interface{}, rply interface{}) error { + if call, has := sT.calls[method]; !has { + return rpcclient.ErrUnsupporteServiceMethod + } else { + return call(arg, rply) + } +} + +func TestERsProcessEvent11(t *testing.T) { + cfg := config.NewDefaultCGRConfig() + cfg.ERsCfg().Readers = []*config.EventReaderCfg{ + { + ID: "test", + Type: utils.MetaNone, + }, + } + cfg.ERsCfg().SessionSConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaSessionS)} + fltrS := &engine.FilterS{} + testMockClient := &testMockClients{ + calls: map[string]func(args interface{}, reply interface{}) error{ + utils.SessionSv1ProcessMessage: func(args interface{}, reply interface{}) error { + return errors.New("RALS_ERROR") + }, + }, + } + clientChan := make(chan rpcclient.ClientConnector, 1) + clientChan <- testMockClient + connMng := engine.NewConnManager(cfg, map[string]chan rpcclient.ClientConnector{ + utils.ConcatenatedKey(utils.MetaInternal, utils.MetaSessionS): clientChan, + }) + srv := NewERService(cfg, fltrS, connMng) + rdrCfg := &config.EventReaderCfg{ + Flags: map[string]utils.FlagParams{ + utils.MetaMessage: map[string][]string{}, + }, + } + cgrEvent := &utils.CGREvent{ + Tenant: "", + ID: "", + Time: nil, + Event: map[string]interface{}{ + utils.Usage: 0, + }, + APIOpts: map[string]interface{}{ + utils.OptsRoutesLimit: true, + }, + } + err := srv.processEvent(cgrEvent, rdrCfg) + if err == nil || err.Error() != "RALS_ERROR" { + t.Fatalf("\nExpecting <%+v>,\n Received <%+v>", "RALS_ERROR", err) + } +}