Skip to content

Commit d4f8a64

Browse files
stirbyangrycub
andauthored
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

enterprise/coderd/users.go

Lines changed: 4 additions & 2 deletions
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
})

enterprise/coderd/users_test.go

Lines changed: 11 additions & 6 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy