Fixups aliases old implementation emulation

This commit is contained in:
DanB
2015-09-14 15:48:04 +02:00
parent 89dc80e95f
commit e4f2441e0e
2 changed files with 35 additions and 51 deletions

View File

@@ -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

View File

@@ -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)
}
}