diff --git a/apier/apier_local_test.go b/apier/apier_local_test.go index 937f49518..8bc4d6ad4 100644 --- a/apier/apier_local_test.go +++ b/apier/apier_local_test.go @@ -1315,6 +1315,30 @@ func TestGetCallCostLog(t *testing.T) { } } +func TestMaxDebitInexistentAcnt(t *testing.T) { + if !*testLocal { + return + } + cc := &engine.CallCost{} + cd := engine.CallDescriptor{ + Direction: "*out", + Tenant: "cgrates.org", + TOR: "call", + Subject: "INVALID", + Account: "INVALID", + Destination: "1002", + TimeStart: time.Date(2014, 3, 27, 10, 42, 26, 0, time.UTC), + TimeEnd: time.Date(2014, 3, 27, 10, 42, 26, 0, time.UTC).Add(time.Duration(10) * time.Second), + } + if err := rater.Call("Responder.MaxDebit", cd, cc); err == nil { + t.Error(err.Error()) + } + if err := rater.Call("Responder.Debit", cd, cc); err == nil { + t.Error(err.Error()) + } + +} + func TestCdrServer(t *testing.T) { if !*testLocal { return diff --git a/config/xmlconfig_test.go b/config/xmlconfig_test.go index fbfb73cf7..922747a6a 100644 --- a/config/xmlconfig_test.go +++ b/config/xmlconfig_test.go @@ -60,7 +60,7 @@ func TestParseXmlConfig(t *testing.T) { - + diff --git a/engine/responder.go b/engine/responder.go index 84096ab6a..b050fb298 100644 --- a/engine/responder.go +++ b/engine/responder.go @@ -46,7 +46,11 @@ func (rs *Responder) GetCost(arg CallDescriptor, reply *CallCost) (err error) { r, e := AccLock.GuardGetCost(arg.GetAccountKey(), func() (*CallCost, error) { return arg.GetCost() }) - *reply, err = *r, e + if e != nil { + return e + } else if r != nil { + *reply = *r + } } return } @@ -59,7 +63,11 @@ func (rs *Responder) Debit(arg CallDescriptor, reply *CallCost) (err error) { r, e := AccLock.GuardGetCost(arg.GetAccountKey(), func() (*CallCost, error) { return arg.Debit() }) - *reply, err = *r, e + if e != nil { + return e + } else if r != nil { + *reply = *r + } } return } @@ -72,7 +80,11 @@ func (rs *Responder) MaxDebit(arg CallDescriptor, reply *CallCost) (err error) { r, e := AccLock.GuardGetCost(arg.GetAccountKey(), func() (*CallCost, error) { return arg.MaxDebit() }) - *reply, err = *r, e + if e != nil { + return e + } else if r != nil { + *reply = *r + } } return } diff --git a/utils/rsrfield_test.go b/utils/rsrfield_test.go index ce602de8e..6818c1d8b 100644 --- a/utils/rsrfield_test.go +++ b/utils/rsrfield_test.go @@ -92,3 +92,12 @@ func TestNewRSRFieldDDz(t *testing.T) { t.Errorf("Unexpected RSRField received: %v", rsrField) } } + +func TestNewRSRFieldIvo(t *testing.T) { + expectRSRField := &RSRField{Id: "cost_details", RSRule: &ReSearchReplace{regexp.MustCompile(`MatchedDestId":".+_(\s\s\s\s\s)"`), "$1"}} + if rsrField, err := NewRSRField(`~cost_details:s/MatchedDestId":".+_(\s\s\s\s\s)"/$1/`); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(rsrField, expectRSRField) { + t.Errorf("Unexpected RSRField received: %v", rsrField) + } +}