mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Improve TPTiming time format error handling
This commit is contained in:
committed by
Dan Christian Bogos
parent
3acc76474d
commit
7664ffccb4
@@ -1829,6 +1829,13 @@ func (dm *DataManager) SetTiming(t *utils.TPTiming) (err error) {
|
||||
if dm == nil {
|
||||
return utils.ErrNoDatabaseConn
|
||||
}
|
||||
// Check if time strings can be split in a time format before storing in db
|
||||
if t.StartTime != utils.EmptyString && t.StartTime != utils.MetaASAP && !utils.IsTimeFormated(t.StartTime) {
|
||||
return utils.ErrInvalidTime(t.StartTime)
|
||||
}
|
||||
if t.EndTime != utils.EmptyString && t.EndTime != utils.MetaASAP && !utils.IsTimeFormated(t.EndTime) {
|
||||
return utils.ErrInvalidTime(t.EndTime)
|
||||
}
|
||||
if err = dm.DataDB().SetTimingDrv(t); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -293,3 +293,15 @@ func TestDMSetReverseDestination(t *testing.T) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestDMSetTimingInvalidTime(t *testing.T) {
|
||||
dm := NewDataManager(nil, nil, nil)
|
||||
expErr := "INVALID_TIME:*any"
|
||||
if err := dm.SetTiming(&utils.TPTiming{StartTime: "*any"}); err == nil || err.Error() != expErr {
|
||||
t.Errorf("Expected error <%v>, received <%v>", expErr, err)
|
||||
}
|
||||
|
||||
if err := dm.SetTiming(&utils.TPTiming{EndTime: "*any"}); err == nil || err.Error() != expErr {
|
||||
t.Errorf("Expected error <%v>, received <%v>", expErr, err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -221,6 +221,11 @@ func (t *TPTiming) IsActiveAt(tm time.Time) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// Returns true if string can be split in 3 sperated by ":" signs. "00:00:00"
|
||||
func IsTimeFormated(t string) bool {
|
||||
return len(strings.Split(t, ":")) == 3
|
||||
}
|
||||
|
||||
// Returns a time object that represents the end of the interval realtive to the received time
|
||||
func (t *TPTiming) getRightMargin(tm time.Time) (rigthtTime time.Time) {
|
||||
year, month, day := tm.Year(), tm.Month(), tm.Day()
|
||||
|
||||
@@ -1180,3 +1180,17 @@ func TestGetRightMargin(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestIsTimeFormatedTrue(t *testing.T) {
|
||||
timeString := "12:12:12"
|
||||
if !IsTimeFormated(timeString) {
|
||||
t.Error("expected time to be formated, but returned false")
|
||||
}
|
||||
}
|
||||
|
||||
func TestIsTimeFormatedFalse(t *testing.T) {
|
||||
timeString := "*any"
|
||||
if IsTimeFormated(timeString) {
|
||||
t.Error("expected invalid time format, but returned true")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,6 +273,10 @@ func ErrNotConvertibleTF(from, to string) error {
|
||||
return fmt.Errorf("%s : from: %s to:%s", ErrNotConvertibleNoCaps.Error(), from, to)
|
||||
}
|
||||
|
||||
func ErrInvalidTime(s string) error {
|
||||
return fmt.Errorf("INVALID_TIME:%s", s)
|
||||
}
|
||||
|
||||
// NewSTIRError returns a error with a *stir_authorize prefix
|
||||
func NewSTIRError(reason string) error {
|
||||
return fmt.Errorf("%s: %s", MetaSTIRAuthenticate, reason)
|
||||
|
||||
Reference in New Issue
Block a user