Improve TPTiming time format error handling

This commit is contained in:
arberkatellari
2025-01-13 18:08:50 +02:00
committed by Dan Christian Bogos
parent 3acc76474d
commit 7664ffccb4
5 changed files with 42 additions and 0 deletions

View File

@@ -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
}

View File

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

View File

@@ -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()

View File

@@ -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")
}
}

View File

@@ -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)