diff --git a/apier/v1/cdrs_it_test.go b/apier/v1/cdrs_it_test.go index 36fe6f407..ae6718270 100644 --- a/apier/v1/cdrs_it_test.go +++ b/apier/v1/cdrs_it_test.go @@ -47,6 +47,15 @@ var ( testV1CDRsRefundOutOfSessionCost, testV1CDRsRefundCDR, testV1CDRsKillEngine, + + testV1CDRsInitConfig, + testV1CDRsInitDataDb, + testV1CDRsInitCdrDb, + testV1CDRsStartEngine, + testV1CDRsRpcConn, + testV1CDRsLoadTariffPlanFromFolderSMS, + testV1CDRsAddBalanceForSMS, + testV1CDRsKillEngine, } ) @@ -517,6 +526,98 @@ func testV1CDRsRefundCDR(t *testing.T) { } } +func testV1CDRsLoadTariffPlanFromFolderSMS(t *testing.T) { + var loadInst string + if err := cdrsRpc.Call(utils.APIerSv1LoadTariffPlanFromFolder, + &utils.AttrLoadTpFromFolder{FolderPath: path.Join( + *dataDir, "tariffplans", "tutorial")}, &loadInst); err != nil { + t.Error(err) + } + time.Sleep(time.Duration(*waitRater) * time.Millisecond) // Give time for scheduler to execute topups +} + +func testV1CDRsAddBalanceForSMS(t *testing.T) { + var reply string + attrs := &AttrAddBalance{ + Tenant: "cgrates.org", + Account: "testV1CDRsAddBalanceForSMS", + BalanceType: utils.SMS, + Value: 1000, + } + if err := cdrsRpc.Call(utils.APIerSv1AddBalance, attrs, &reply); err != nil { + t.Error("Got error on APIerSv1.AddBalance: ", err.Error()) + } else if reply != utils.OK { + t.Errorf("Calling APIerSv1.AddBalance received: %s", reply) + } + + attrs = &AttrAddBalance{ + Tenant: "cgrates.org", + Account: "testV1CDRsAddBalanceForSMS", + BalanceType: utils.MONETARY, + Value: 10, + } + if err := cdrsRpc.Call(utils.APIerSv1AddBalance, attrs, &reply); err != nil { + t.Error("Got error on APIerSv1.AddBalance: ", err.Error()) + } else if reply != utils.OK { + t.Errorf("Calling APIerSv1.AddBalance received: %s", reply) + } + + var acnt *engine.Account + attrAcc := &utils.AttrGetAccount{ + Tenant: "cgrates.org", + Account: "testV1CDRsAddBalanceForSMS", + } + + if err := cdrsRpc.Call(utils.APIerSv2GetAccount, attrAcc, &acnt); err != nil { + t.Error(err) + } else if len(acnt.BalanceMap[utils.SMS]) != 1 { + t.Errorf("Expecting: %v, received: %v", 1, len(acnt.BalanceMap[utils.SMS])) + } else if acnt.BalanceMap[utils.SMS].GetTotalValue() != 1000 { + t.Errorf("Expecting: %v, received: %v", 1000, acnt.BalanceMap[utils.SMS].GetTotalValue()) + } else if len(acnt.BalanceMap[utils.MONETARY]) != 1 { + t.Errorf("Expecting: %v, received: %v", 1, len(acnt.BalanceMap[utils.MONETARY])) + } else if acnt.BalanceMap[utils.MONETARY].GetTotalValue() != 10 { + t.Errorf("Expecting: %v, received: %v", 10, acnt.BalanceMap[utils.MONETARY].GetTotalValue()) + } + + argsEv := &engine.ArgV1ProcessEvent{ + Flags: []string{utils.MetaRALs}, + CGREvent: utils.CGREvent{ + Tenant: "cgrates.org", + Event: map[string]interface{}{ + utils.CGRID: "asdfas", + utils.ToR: utils.SMS, + utils.Category: "sms", + utils.RunID: utils.MetaDefault, + utils.OriginID: "testV1CDRsAddBalanceForSMS", + utils.RequestType: utils.META_PREPAID, + utils.Account: "testV1CDRsAddBalanceForSMS", + utils.Destination: "+4986517174963", + utils.AnswerTime: time.Date(2019, 11, 27, 12, 21, 26, 0, time.UTC), + utils.Usage: time.Duration(1), + }, + }, + } + if err := cdrsRpc.Call(utils.CDRsV1ProcessEvent, argsEv, &reply); err != nil { + t.Error(err) + } else if reply != utils.OK { + t.Error("Unexpected reply received: ", reply) + } + + if err := cdrsRpc.Call(utils.APIerSv2GetAccount, attrAcc, &acnt); err != nil { + t.Error(err) + } else if len(acnt.BalanceMap[utils.SMS]) != 1 { + t.Errorf("Expecting: %v, received: %v", 1, len(acnt.BalanceMap[utils.SMS])) + } else if acnt.BalanceMap[utils.SMS].GetTotalValue() != 999 { + t.Errorf("Expecting: %v, received: %v", 999, acnt.BalanceMap[utils.SMS].GetTotalValue()) + } else if len(acnt.BalanceMap[utils.MONETARY]) != 1 { + t.Errorf("Expecting: %v, received: %v", 1, len(acnt.BalanceMap[utils.MONETARY])) + } else if acnt.BalanceMap[utils.MONETARY].GetTotalValue() != 10 { + t.Errorf("Expecting: %v, received: %v", 10, acnt.BalanceMap[utils.MONETARY].GetTotalValue()) + } + +} + func testV1CDRsKillEngine(t *testing.T) { if err := engine.KillEngine(*waitRater); err != nil { t.Error(err) diff --git a/data/conf/samples/cdrsv1internal/cgrates.json b/data/conf/samples/cdrsv1internal/cgrates.json index f6d2e9ae8..6072ef4f1 100644 --- a/data/conf/samples/cdrsv1internal/cgrates.json +++ b/data/conf/samples/cdrsv1internal/cgrates.json @@ -15,7 +15,10 @@ "rals": { - "enabled": true + "enabled": true, + "balance_rating_subject":{ + "*data":"*zero1s" + }, }, @@ -27,6 +30,7 @@ "cdrs": { "enabled": true, "rals_conns": ["*localhost"], + "session_cost_retries": 1, }, diff --git a/data/conf/samples/cdrsv1mongo/cgrates.json b/data/conf/samples/cdrsv1mongo/cgrates.json index 00c90859d..9b7a4981d 100644 --- a/data/conf/samples/cdrsv1mongo/cgrates.json +++ b/data/conf/samples/cdrsv1mongo/cgrates.json @@ -18,7 +18,10 @@ }, "rals": { - "enabled": true + "enabled": true, + "balance_rating_subject":{ + "*data":"*zero1s" + }, }, @@ -30,6 +33,7 @@ "cdrs": { "enabled": true, "rals_conns": ["*localhost"], + "session_cost_retries": 1 }, diff --git a/data/conf/samples/cdrsv1mysql/cgrates.json b/data/conf/samples/cdrsv1mysql/cgrates.json index f3f8a2db4..5ee985234 100644 --- a/data/conf/samples/cdrsv1mysql/cgrates.json +++ b/data/conf/samples/cdrsv1mysql/cgrates.json @@ -15,7 +15,10 @@ }, "rals": { - "enabled": true + "enabled": true, + "balance_rating_subject":{ + "*data":"*zero1s" + } }, @@ -27,6 +30,7 @@ "cdrs": { "enabled": true, "rals_conns": ["*localhost"], + "session_cost_retries": 1 },