mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 10:06:24 +05:00
prevent account actions to be executed when account is nil
This commit is contained in:
committed by
Dan Christian Bogos
parent
fe4d8b5924
commit
3603d12c3e
@@ -156,6 +156,30 @@ type actionTypeFunc func(*Account, *Action, Actions, *FilterS, any, SharedAction
|
||||
|
||||
var actionFuncMap = make(map[string]actionTypeFunc)
|
||||
|
||||
var accountActions = map[string]bool{
|
||||
utils.MetaTopUp: true,
|
||||
utils.MetaDebit: true,
|
||||
utils.MetaResetTriggers: true,
|
||||
utils.MetaSetRecurrent: true,
|
||||
utils.MetaUnsetRecurrent: true,
|
||||
utils.MetaAllowNegative: true,
|
||||
utils.MetaDenyNegative: true,
|
||||
utils.MetaResetAccount: true,
|
||||
utils.MetaTopUpReset: true,
|
||||
utils.MetaDebitReset: true,
|
||||
utils.MetaTransferBalance: true,
|
||||
utils.MetaResetCounters: true,
|
||||
utils.MetaEnableAccount: true,
|
||||
utils.MetaDisableAccount: true,
|
||||
utils.MetaTransferMonetaryDefault: true,
|
||||
utils.MetaPublishAccount: true,
|
||||
utils.MetaCDRAccount: true,
|
||||
utils.SetExpiry: true,
|
||||
utils.TopUpZeroNegative: true,
|
||||
utils.MetaSetBalance: true,
|
||||
utils.MetaRemoveBalance: true,
|
||||
}
|
||||
|
||||
func init() {
|
||||
actionFuncMap[utils.MetaLog] = logAction
|
||||
actionFuncMap[utils.MetaResetTriggers] = resetTriggersAction
|
||||
|
||||
@@ -308,6 +308,9 @@ func (at *ActionTiming) Execute(fltrS *FilterS, originService string) (err error
|
||||
err = nil
|
||||
if len(at.accountIDs) == 0 { // action timing executing without accounts
|
||||
for _, act := range acts {
|
||||
if accountActions[act.ActionType] {
|
||||
continue
|
||||
}
|
||||
if expDate, parseErr := utils.ParseTimeDetectLayout(act.ExpirationString,
|
||||
config.CgrConfig().GeneralCfg().DefaultTimezone); (act.Balance == nil || act.Balance.EmptyExpirationDate()) &&
|
||||
parseErr == nil && !expDate.IsZero() {
|
||||
|
||||
@@ -301,10 +301,6 @@ func TestActionTimingExErr(t *testing.T) {
|
||||
if err := at.Execute(nil, ""); err == nil || err != utils.ErrPartiallyExecuted {
|
||||
t.Error(err)
|
||||
}
|
||||
at.actions[0].ActionType = utils.MetaDebitReset
|
||||
if err := at.Execute(nil, ""); err == nil || err != utils.ErrPartiallyExecuted {
|
||||
t.Error(err)
|
||||
}
|
||||
at.accountIDs = utils.StringMap{"cgrates.org:zeroNegative": true}
|
||||
at.actions[0].ActionType = utils.MetaResetStatQueue
|
||||
if err := at.Execute(nil, ""); err == nil || err != utils.ErrPartiallyExecuted {
|
||||
|
||||
@@ -7653,3 +7653,22 @@ func TestUnsetRecurrentAction(t *testing.T) {
|
||||
t.Errorf("expected trigger2.Recurrent to remain true")
|
||||
}
|
||||
}
|
||||
|
||||
func TestAccountActions(t *testing.T) {
|
||||
for actType := range accountActions {
|
||||
a := &Action{
|
||||
ActionType: actType,
|
||||
Balance: &BalanceFilter{
|
||||
Type: utils.StringPointer("test"),
|
||||
Value: &utils.ValueFormula{Static: 1.1},
|
||||
},
|
||||
}
|
||||
at := &ActionTiming{
|
||||
actions: []*Action{a},
|
||||
}
|
||||
err := at.Execute(nil, "")
|
||||
if err != nil {
|
||||
t.Errorf("Got error for action account type %s, error %v ", actType, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user