diff --git a/apier/v1/aliases.go b/apier/v1/aliases.go index 1afbc6b90..a0e9d6c79 100644 --- a/apier/v1/aliases.go +++ b/apier/v1/aliases.go @@ -20,7 +20,6 @@ package v1 import ( "errors" - "fmt" "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/utils" @@ -69,17 +68,19 @@ func (self *ApierV1) RemRatingSubjectAliases(tenantRatingSubject engine.TenantRa if aliases == nil { return errors.New("ALIASES_NOT_ENABLED") } - var reverseAliases map[string]*engine.Alias + var reverseAliases map[string][]*engine.Alias if err := aliases.GetReverseAlias(engine.AttrReverseAlias{Alias: tenantRatingSubject.Subject, Group: utils.ALIAS_GROUP_RP}, &reverseAliases); err != nil { return utils.NewErrServerError(err) } var ignr string - for _, alias := range reverseAliases { - if alias.Tenant != tenantRatingSubject.Tenant { - continue // From another tenant - } - if err := aliases.RemoveAlias(*alias, &ignr); err != nil { - return utils.NewErrServerError(err) + for _, aliass := range reverseAliases { + for _, alias := range aliass { + if alias.Tenant != tenantRatingSubject.Tenant { + continue // From another tenant + } + if err := aliases.RemoveAlias(*alias, &ignr); err != nil { + return utils.NewErrServerError(err) + } } } *reply = utils.OK @@ -118,17 +119,19 @@ func (self *ApierV1) RemAccountAliases(tenantAccount engine.TenantAccount, reply if aliases == nil { return errors.New("ALIASES_NOT_ENABLED") } - var reverseAliases map[string]*engine.Alias + var reverseAliases map[string][]*engine.Alias if err := aliases.GetReverseAlias(engine.AttrReverseAlias{Alias: tenantAccount.Account, Group: utils.ALIAS_GROUP_ACC}, &reverseAliases); err != nil { return utils.NewErrServerError(err) } var ignr string - for _, alias := range reverseAliases { - if alias.Tenant != tenantAccount.Tenant { - continue // From another tenant - } - if err := aliases.RemoveAlias(*alias, &ignr); err != nil { - return utils.NewErrServerError(err) + for _, aliass := range reverseAliases { + for _, alias := range aliass { + if alias.Tenant != tenantAccount.Tenant { + continue // From another tenant + } + if err := aliases.RemoveAlias(*alias, &ignr); err != nil { + return utils.NewErrServerError(err) + } } } *reply = utils.OK diff --git a/apier/v1/apier_local_test.go b/apier/v1/apier_local_test.go index 8d5650912..c804fa768 100644 --- a/apier/v1/apier_local_test.go +++ b/apier/v1/apier_local_test.go @@ -30,7 +30,6 @@ import ( "os/exec" "path" "reflect" - "sort" "strings" "testing" "time" @@ -110,7 +109,6 @@ func TestApierInitStorDb(t *testing.T) { } } -/* // Finds cgr-engine executable and starts it with default configuration func TestApierStartEngine(t *testing.T) { if !*testLocal { @@ -128,7 +126,6 @@ func TestApierStartEngine(t *testing.T) { } time.Sleep(time.Duration(*waitRater) * time.Millisecond) // Give time to rater to fire up } -*/ // Connect rpc client to rater func TestApierRpcConn(t *testing.T) { @@ -1545,7 +1542,7 @@ func TestApierLocalSetDestination(t *testing.T) { } } -func TestApierLocalGetRatingSubjectAliases(t *testing.T) { +func TestApierLocalGetAliases(t *testing.T) { if !*testLocal { return } @@ -1556,6 +1553,11 @@ func TestApierLocalGetRatingSubjectAliases(t *testing.T) { } else if err.Error() != utils.ErrNotFound.Error() { t.Error("Unexpected error", err.Error()) } + if err := rater.Call("AliasesV1.GetAlias", engine.Alias{Group: utils.ALIAS_GROUP_ACC, Direction: "*out", Tenant: "cgrates.org", Category: "call", Account: "2001", Subject: "2001"}, &alias); err == nil { + t.Error("Unexpected nil error received") + } else if err.Error() != utils.ErrNotFound.Error() { + t.Error("Unexpected error", err.Error()) + } } func TestApierLocalAddRatingSubjectAliases(t *testing.T) { @@ -1564,13 +1566,11 @@ func TestApierLocalAddRatingSubjectAliases(t *testing.T) { } addRtSubjAliases := &AttrAddRatingSubjectAliases{Tenant: "cgrates.org", Category: "call", Subject: "1001", Aliases: []string{"2001", "2002", "2003"}} var rply string - fmt.Println("Before AddRatingSubjectAliases") if err := rater.Call("ApierV1.AddRatingSubjectAliases", addRtSubjAliases, &rply); err != nil { t.Error("Unexpected error", err.Error()) } else if rply != utils.OK { t.Error("Unexpected reply: ", rply) } - fmt.Println("After AddRatingSubjectAliases") var alias engine.Alias for _, als := range addRtSubjAliases.Aliases { if err := rater.Call("AliasesV1.GetAlias", engine.Alias{Group: utils.ALIAS_GROUP_RP, Direction: "*out", Tenant: addRtSubjAliases.Tenant, Category: addRtSubjAliases.Category, @@ -1593,45 +1593,27 @@ func TestApierLocalRemRatingSubjectAliases(t *testing.T) { } var alias engine.Alias //al.Direction, al.Tenant, al.Category, al.Account, al.Subject, al.Group - if err := rater.Call("AliasesV1.GetAlias", engine.Alias{Group: utils.ALIAS_GROUP_RP, Direction: "*out", Tenant: "cgrates.org", Category: "call", Account: "2001", Subject: "2001"}, &alias); err == nil || err != utils.ErrNotFound { + if err := rater.Call("AliasesV1.GetAlias", engine.Alias{Group: utils.ALIAS_GROUP_RP, Direction: "*out", Tenant: "cgrates.org", Category: "call", Account: "2001", Subject: "2001"}, &alias); err == nil || err.Error() != utils.ErrNotFound.Error() { t.Errorf("Unexpected error %v, alias: %+v", err, alias) } } -func TestApierLocalGetAccountAliases(t *testing.T) { - if !*testLocal { - return - } - tenantAcnt := engine.TenantAccount{Tenant: "cgrates.org", Account: "1001"} - var acntAliases []string - if err := rater.Call("ApierV1.GetAccountAliases", tenantAcnt, &acntAliases); err == nil { - t.Error("Unexpected nil error received") - } else if err.Error() != utils.ErrNotFound.Error() { - t.Error("Unexpected error", err.Error()) - } -} - func TestApierLocalAddAccountAliases(t *testing.T) { if !*testLocal { return } - addAcntAliases := &AttrAddAccountAliases{Tenant: "cgrates.org", Account: "1001", Aliases: []string{"2001", "2002", "2003"}} + addAcntAliases := &AttrAddAccountAliases{Tenant: "cgrates.org", Category: "call", Account: "1001", Aliases: []string{"2001", "2002", "2003"}} var rply string if err := rater.Call("ApierV1.AddAccountAliases", addAcntAliases, &rply); err != nil { t.Error("Unexpected error", err.Error()) } else if rply != utils.OK { t.Error("Unexpected reply: ", rply) } - var acntAliases []string - expectAcntAliases := sort.StringSlice(addAcntAliases.Aliases) - expectAcntAliases.Sort() - if err := rater.Call("ApierV1.GetAccountAliases", engine.TenantAccount{Tenant: "cgrates.org", Account: "1001"}, &acntAliases); err != nil { - t.Error("Unexpected error", err.Error()) - } else { - acntAliases := sort.StringSlice(acntAliases) - acntAliases.Sort() - if !reflect.DeepEqual(expectAcntAliases, acntAliases) { - t.Errorf("Expecting: %v, received: %v", expectAcntAliases, acntAliases) + var alias engine.Alias + for _, als := range addAcntAliases.Aliases { + if err := rater.Call("AliasesV1.GetAlias", engine.Alias{Group: utils.ALIAS_GROUP_ACC, Direction: "*out", Tenant: addAcntAliases.Tenant, Category: addAcntAliases.Category, + Account: als, Subject: als}, &alias); err != nil { + t.Error("Unexpected error", err.Error()) } } } @@ -1647,11 +1629,10 @@ func TestApierLocalRemAccountAliases(t *testing.T) { } else if rply != utils.OK { t.Error("Unexpected reply: ", rply) } - var acntAliases []string - if err := rater.Call("ApierV1.GetAccountAliases", engine.TenantAccount{Tenant: "cgrates.org", Account: "1001"}, &acntAliases); err == nil { - t.Error("Unexpected nil error received") - } else if err.Error() != utils.ErrNotFound.Error() { - t.Error("Unexpected error", err.Error()) + var alias engine.Alias + //al.Direction, al.Tenant, al.Category, al.Account, al.Subject, al.Group + if err := rater.Call("AliasesV1.GetAlias", engine.Alias{Group: utils.ALIAS_GROUP_ACC, Direction: "*out", Tenant: "cgrates.org", Category: "call", Account: "2001", Subject: "2001"}, &alias); err == nil || err.Error() != utils.ErrNotFound.Error() { + t.Errorf("Unexpected error %v, alias: %+v", err, alias) } }