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