Skip to content

Commit d4f8a64

Browse files
stirbyangrycub
andauthoredAug 1, 2024
fix: change time format string from 15:40 to 15:04 (coder#14033) (coder#14072)
* Change string format to constant value (cherry picked from commit eacdfb9) Co-authored-by: Charlie Voiselle <464492+angrycub@users.noreply.github.com>
1 parent 48c4859 commit d4f8a64

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed
 

Diff for: ‎enterprise/coderd/users.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import (
1414
"github.com/coder/coder/v2/codersdk"
1515
)
1616

17+
const TimeFormatHHMM = "15:04"
18+
1719
func (api *API) autostopRequirementEnabledMW(next http.Handler) http.Handler {
1820
return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
1921
// Entitlement must be enabled.
@@ -66,7 +68,7 @@ func (api *API) userQuietHoursSchedule(rw http.ResponseWriter, r *http.Request)
6668
RawSchedule: opts.Schedule.String(),
6769
UserSet: opts.UserSet,
6870
UserCanSet: opts.UserCanSet,
69-
Time: opts.Schedule.TimeParsed().Format("15:40"),
71+
Time: opts.Schedule.TimeParsed().Format(TimeFormatHHMM),
7072
Timezone: opts.Schedule.Location().String(),
7173
Next: opts.Schedule.Next(time.Now().In(opts.Schedule.Location())),
7274
})
@@ -118,7 +120,7 @@ func (api *API) putUserQuietHoursSchedule(rw http.ResponseWriter, r *http.Reques
118120
RawSchedule: opts.Schedule.String(),
119121
UserSet: opts.UserSet,
120122
UserCanSet: opts.UserCanSet,
121-
Time: opts.Schedule.TimeParsed().Format("15:40"),
123+
Time: opts.Schedule.TimeParsed().Format(TimeFormatHHMM),
122124
Timezone: opts.Schedule.Location().String(),
123125
Next: opts.Schedule.Next(time.Now().In(opts.Schedule.Location())),
124126
})

Diff for: ‎enterprise/coderd/users_test.go

+11-6
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,14 @@ import (
1212
"github.com/coder/coder/v2/coderd/rbac"
1313
"github.com/coder/coder/v2/coderd/schedule/cron"
1414
"github.com/coder/coder/v2/codersdk"
15+
"github.com/coder/coder/v2/enterprise/coderd"
1516
"github.com/coder/coder/v2/enterprise/coderd/coderdenttest"
1617
"github.com/coder/coder/v2/enterprise/coderd/license"
1718
"github.com/coder/coder/v2/testutil"
1819
)
1920

21+
const TimeFormatHHMM = coderd.TimeFormatHHMM
22+
2023
func TestUserQuietHours(t *testing.T) {
2124
t.Parallel()
2225

@@ -42,15 +45,17 @@ func TestUserQuietHours(t *testing.T) {
4245

4346
t.Run("OK", func(t *testing.T) {
4447
t.Parallel()
45-
46-
defaultQuietHoursSchedule := "CRON_TZ=America/Chicago 0 1 * * *"
48+
// Using 10 for minutes lets us test a format bug in which values greater
49+
// than 5 were causing the API to explode because the time was returned
50+
// incorrectly
51+
defaultQuietHoursSchedule := "CRON_TZ=America/Chicago 10 1 * * *"
4752
defaultScheduleParsed, err := cron.Daily(defaultQuietHoursSchedule)
4853
require.NoError(t, err)
4954
nextTime := defaultScheduleParsed.Next(time.Now().In(defaultScheduleParsed.Location()))
5055
if time.Until(nextTime) < time.Hour {
5156
// Use a different default schedule instead, because we want to avoid
5257
// the schedule "ticking over" during this test run.
53-
defaultQuietHoursSchedule = "CRON_TZ=America/Chicago 0 13 * * *"
58+
defaultQuietHoursSchedule = "CRON_TZ=America/Chicago 10 13 * * *"
5459
defaultScheduleParsed, err = cron.Daily(defaultQuietHoursSchedule)
5560
require.NoError(t, err)
5661
}
@@ -79,7 +84,7 @@ func TestUserQuietHours(t *testing.T) {
7984
require.NoError(t, err)
8085
require.Equal(t, defaultScheduleParsed.String(), sched1.RawSchedule)
8186
require.False(t, sched1.UserSet)
82-
require.Equal(t, defaultScheduleParsed.TimeParsed().Format("15:40"), sched1.Time)
87+
require.Equal(t, defaultScheduleParsed.TimeParsed().Format(TimeFormatHHMM), sched1.Time)
8388
require.Equal(t, defaultScheduleParsed.Location().String(), sched1.Timezone)
8489
require.WithinDuration(t, defaultScheduleParsed.Next(time.Now()), sched1.Next, 15*time.Second)
8590

@@ -102,7 +107,7 @@ func TestUserQuietHours(t *testing.T) {
102107
require.NoError(t, err)
103108
require.Equal(t, customScheduleParsed.String(), sched2.RawSchedule)
104109
require.True(t, sched2.UserSet)
105-
require.Equal(t, customScheduleParsed.TimeParsed().Format("15:40"), sched2.Time)
110+
require.Equal(t, customScheduleParsed.TimeParsed().Format(TimeFormatHHMM), sched2.Time)
106111
require.Equal(t, customScheduleParsed.Location().String(), sched2.Timezone)
107112
require.WithinDuration(t, customScheduleParsed.Next(time.Now()), sched2.Next, 15*time.Second)
108113

@@ -111,7 +116,7 @@ func TestUserQuietHours(t *testing.T) {
111116
require.NoError(t, err)
112117
require.Equal(t, customScheduleParsed.String(), sched3.RawSchedule)
113118
require.True(t, sched3.UserSet)
114-
require.Equal(t, customScheduleParsed.TimeParsed().Format("15:40"), sched3.Time)
119+
require.Equal(t, customScheduleParsed.TimeParsed().Format(TimeFormatHHMM), sched3.Time)
115120
require.Equal(t, customScheduleParsed.Location().String(), sched3.Timezone)
116121
require.WithinDuration(t, customScheduleParsed.Next(time.Now()), sched3.Next, 15*time.Second)
117122

0 commit comments

Comments
 (0)
Please sign in to comment.