diff --git a/engine/loader_csv.go b/engine/loader_csv.go index 6bb20a589..e57ec2e8a 100644 --- a/engine/loader_csv.go +++ b/engine/loader_csv.go @@ -514,7 +514,7 @@ func (csvr *CSVReader) LoadSharedGroups() (err error) { func (csvr *CSVReader) LoadActions() (err error) { csvReader, fp, err := csvr.readerFunc(csvr.actionsFn, csvr.sep, utils.ACTIONS_NRCOLS) if err != nil { - log.Print("Could not load action triggers file: ", err) + log.Print("Could not load action file: ", err) // allow writing of the other values return nil } diff --git a/engine/loader_helpers.go b/engine/loader_helpers.go index 02a04fc60..5bc2faff2 100644 --- a/engine/loader_helpers.go +++ b/engine/loader_helpers.go @@ -203,7 +203,7 @@ var FileValidators = map[string]*FileLineRegexValidator{ regexp.MustCompile(``), ""}, utils.ACTIONS_CSV: &FileLineRegexValidator{utils.ACTIONS_NRCOLS, - regexp.MustCompile(`(?:\w+\s*),(?:\*\w+\s*),(?:\*\w+\s*)?,(?:\*out\s*)?,(?:\d+\s*)?,(?:\*\w+\s*|\+\d+[smh]\s*|\d+\s*)?,(?:\*any|\w+\s*)?,(?:\*?\w+\s*)?,(?:\d+\.?\d*\s*)?,(?:\S+\s*)?,(?:\d+\.?\d*\s*)$`), + regexp.MustCompile(`^(?:\w+\s*),(?:\*\w+\s*),(?:\*\w+\s*)?,(?:\*out\s*)?,(?:\d+\s*)?,(?:\*\w+\s*|\+\d+[smh]\s*|\d+\s*)?,(?:\*any|\w+\s*)?,(?:\*?\w+\s*)?,(?:\w+\s*)?,(?:\d+\.?\d*\s*)?,(?:\S+\s*)?,(?:\d+\.?\d*\s*)$`), "Tag([0-9A-Za-z_]),Action([0-9A-Za-z_]),BalanceType([*a-z_]),Direction(*out),Units([0-9]),ExpiryTime(*[a-z_]|+[0-9][smh]|[0-9])DestinationTag([0-9A-Za-z_]|*all),RatingSubject([0-9A-Za-z_]),BalanceWeight([0-9.]),ExtraParameters([0-9A-Za-z_:;]),Weight([0-9.])"}, utils.ACTION_PLANS_CSV: &FileLineRegexValidator{utils.ACTION_PLANS_NRCOLS, regexp.MustCompile(`(?:\w+\s*,\s*){3}(?:\d+\.?\d*){1}`), diff --git a/engine/loader_helpers_test.go b/engine/loader_helpers_test.go index cd8bb6239..82a014296 100644 --- a/engine/loader_helpers_test.go +++ b/engine/loader_helpers_test.go @@ -57,11 +57,12 @@ cgrates.org,call,*out,*any,2012-01-01T00:00:00Z,RP_RETAIL, DUMMY,INVALID;DATA ` -var actionsSample = `#ActionsTag,Action,BalanceType,Direction,Units,ExpiryTime,DestinationTag,RatingSubject,BalanceWeight,ExtraParameters,Weight +var actionsSample = `#ActionsTag,Action,BalanceType,Direction,Units,ExpiryTime,DestinationTag,RatingSubject,BalanceWeight,SharedGroup,ExtraParameters,Weight PREPAID_10,*topup_reset,*monetary,*out,5,*unlimited,*any,,,10,,10 -WARN_HTTP,*call_url,,,,,,,,http://localhost:8000,10 -LOG_BALANCE,*log,,,,,,,,,10 +WARN_HTTP,*call_url,,,,,,,,,http://localhost:8000,10 +LOG_BALANCE,*log,,,,,,,,,,10 DUMMY,INVALID;DATA +PREPAID_10,*topup_reset,*monetary,*out,5,*unlimited,*any,,10,,10 ` var actionTimingsSample = `#Tag,ActionsTag,TimingTag,Weight @@ -237,7 +238,7 @@ func TestActionsValidator(t *testing.T) { } valid := lnValidator.Rule.Match(ln) switch lineNr { - case 1, 5: + case 1, 5, 6: if valid { t.Error("Validation passed for invalid line", string(ln)) }