diff --git a/dispatchers/dispatchers_test.go b/dispatchers/dispatchers_test.go index e73363c39..938b44375 100644 --- a/dispatchers/dispatchers_test.go +++ b/dispatchers/dispatchers_test.go @@ -19,7 +19,9 @@ along with this program. If not, see package dispatchers import ( + "fmt" "testing" + "time" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/engine" @@ -274,3 +276,92 @@ func TestDispatcherServiceAuthorizeEventError3(t *testing.T) { } engine.Cache = cacheInit } + +type mockTypeCon3 struct{} + +func (*mockTypeCon3) Call(serviceMethod string, args, reply interface{}) error { + fmt.Println("yayCall") + eVreply := &engine.AttrSProcessEventReply{ + CGREvent: &utils.CGREvent{ + Tenant: "testTenant", + ID: "testID", + Time: nil, + Event: map[string]interface{}{ + utils.APIMethods: "yes", + }, + APIOpts: nil, + }, + } + *reply.(*engine.AttrSProcessEventReply) = *eVreply + return nil +} + +func TestDispatcherServiceAuthorizeError(t *testing.T) { + cacheInit := engine.Cache + cfg := config.NewDefaultCGRConfig() + cfg.DispatcherSCfg().AttributeSConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes)} + dm := engine.NewDataManager(nil, nil, nil) + chanRPC := make(chan rpcclient.ClientConnector, 1) + chanRPC <- new(mockTypeCon3) + rpcInt := map[string]chan rpcclient.ClientConnector{ + utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes): chanRPC, + } + connMgr := engine.NewConnManager(cfg, rpcInt) + + dsp := NewDispatcherService(dm, cfg, nil, connMgr) + value := &engine.DispatcherHost{ + Tenant: "testTenant", + RemoteHost: &config.RemoteHost{ + ID: "testID", + Address: rpcclient.InternalRPC, + Transport: utils.MetaInternal, + Synchronous: false, + TLS: false, + }, + } + newCache := engine.NewCacheS(cfg, dm, nil) + engine.Cache = newCache + engine.Cache.SetWithoutReplicate(utils.CacheRPCConnections, "testID", + value, nil, true, utils.NonTransactional) + err := dsp.authorize(utils.APIMethods, "testTenant", "apikey", &time.Time{}) + expected := "UNAUTHORIZED_API" + if err == nil || err.Error() != expected { + t.Errorf("\nExpected <%+v>, \nReceived <%+v>", nil, err) + } + engine.Cache = cacheInit +} + +func TestDispatcherServiceAuthorizeError2(t *testing.T) { + cacheInit := engine.Cache + cfg := config.NewDefaultCGRConfig() + cfg.DispatcherSCfg().AttributeSConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes)} + dm := engine.NewDataManager(nil, nil, nil) + chanRPC := make(chan rpcclient.ClientConnector, 1) + chanRPC <- new(mockTypeCon3) + rpcInt := map[string]chan rpcclient.ClientConnector{ + utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes): chanRPC, + } + connMgr := engine.NewConnManager(cfg, rpcInt) + + dsp := NewDispatcherService(dm, cfg, nil, connMgr) + value := &engine.DispatcherHost{ + Tenant: "testTenant", + RemoteHost: &config.RemoteHost{ + ID: "testID", + Address: rpcclient.InternalRPC, + Transport: utils.MetaInternal, + Synchronous: false, + TLS: false, + }, + } + newCache := engine.NewCacheS(cfg, dm, nil) + engine.Cache = newCache + engine.Cache.SetWithoutReplicate(utils.CacheRPCConnections, "testID", + value, nil, true, utils.NonTransactional) + err := dsp.authorize(utils.APIMethods, "testTenant", "apikey", &time.Time{}) + expected := "UNAUTHORIZED_API" + if err == nil || err.Error() != expected { + t.Errorf("\nExpected <%+v>, \nReceived <%+v>", nil, err) + } + engine.Cache = cacheInit +}