package edgeutils import ( "testing" "github.com/stretchr/testify/assert" ) func TestIsValidTimestamp(t *testing.T) { testCases := []struct { name string time string expectedErr string }{ { name: "Test 1: Valid Time", time: "2024-04-25T15:34:12Z", expectedErr: "", }, { name: "Test 2: Invalid Time 1", time: "2024-06-T12:13:12Z", expectedErr: "is not a valid Timestamp", }, { name: "Test 3: Invalid Time 2", time: "24-04-25T15:34:1Z", expectedErr: "is not a valid Timestamp", }, } for _, test := range testCases { if test.expectedErr == "" { err := IsValidTimestamp(test.time) assert.NoError(t, err) } else { err := IsValidTimestamp(test.time) assert.ErrorContains(t, err, test.expectedErr) } } } func TestTimeSequenceCheck(t *testing.T) { testCases := []struct { name string startTime string endTime string expectedErr string }{ { name: "Test 1: Valid Start and End Time", startTime: "2024-04-25T12:34:12Z", endTime: "2024-06-27T15:13:12Z", expectedErr: "", }, { name: "Test 2: Valid Start and Invalid End Time", startTime: "2024-06-27T15:13:12Z", endTime: "2024-06-27T12:13:12Z", expectedErr: "comes before the start time", }, } for _, test := range testCases { if test.expectedErr == "" { t.Run(test.name, func(t *testing.T) { err := TimeSequenceCheck(test.startTime, test.endTime) assert.NoError(t, err) }) } else { t.Run(test.name, func(t *testing.T) { err := TimeSequenceCheck(test.startTime, test.endTime) assert.ErrorContains(t, err, test.expectedErr) }) } } } func TestConvertToRFC3339(t *testing.T) { testCases := []struct { name string timeVal string expectedOut string expectedErr string }{ { name: "Test 1: Valid Time No milliseconds", timeVal: "2024-05-25T08:04:12-04:00", expectedOut: "2024-05-25T12:04:12Z", expectedErr: "", }, { name: "Test 2: Valid Time with milliseconds", timeVal: "2024-05-25T08:04:12.300-04:00", expectedOut: "2024-05-25T12:04:12Z", expectedErr: "", }, { name: "Test 3: Invalid Time with milliseconds", timeVal: "2024-04-25 15:34:12:300", expectedErr: "Date Formatting Error", }, { name: "Test 4: Invalid Time no milliseconds", timeVal: "2024-05-25T08:04.12-04:00", expectedErr: "Date Formatting Error", }, { name: "Test 5: Invalid Year", timeVal: "204-05-25T08:04:12.300-04:00", expectedErr: "Date Formatting Error", }, { name: "Test 6: Invalid Month", timeVal: "2024-13-05-25T08:04:12.300-04:00", expectedErr: "Date Formatting Error", }, { name: "Test 7: Invalid day", timeVal: "2024-05-85T08:04:12.300-04:00", expectedErr: "Date Formatting Error", }, } for _, test := range testCases { if test.expectedErr == "" { t.Run(test.name, func(t *testing.T) { timestamp, err := ConvertToRFC3339(test.timeVal) assert.Equal(t, test.expectedOut, timestamp) assert.NoError(t, err) }) } else { t.Run(test.name, func(t *testing.T) { _, err := ConvertToRFC3339(test.timeVal) assert.ErrorContains(t, err, test.expectedErr) }) } } }