Skip to content

Commit 46b4f85

Browse files
committed
Use timezone during evaluation
1 parent 5dcb19d commit 46b4f85

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

lib/accessmonitoring/schedule.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,14 @@ func inSchedule(schedule *accessmonitoringrulesv1.Schedule, timestamp time.Time)
4747
return false, nil
4848
}
4949

50+
loc, err := time.LoadLocation(schedule.GetTime().GetTimezone())
51+
if err != nil {
52+
return false, trace.Wrap(err)
53+
}
54+
55+
timestamp = timestamp.In(loc)
5056
weekday := timestamp.Weekday().String()
57+
5158
for _, shift := range schedule.GetTime().GetShifts() {
5259
if weekday != shift.Weekday {
5360
continue

lib/accessmonitoring/schedule_test.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,46 @@ func TestInSchedule(t *testing.T) {
122122
assertErr: require.NoError,
123123
assertInSchedule: require.False,
124124
},
125+
{
126+
description: "invalid timezone",
127+
schedules: map[string]*accessmonitoringrulesv1.Schedule{
128+
"default": {
129+
Time: &accessmonitoringrulesv1.TimeSchedule{
130+
Timezone: "invalid",
131+
Shifts: []*accessmonitoringrulesv1.TimeSchedule_Shift{
132+
{
133+
Weekday: time.Monday.String(),
134+
Start: "14:00",
135+
End: "15:00",
136+
},
137+
},
138+
},
139+
},
140+
},
141+
assertErr: func(t require.TestingT, err error, _ ...any) {
142+
require.ErrorContains(t, err, "unknown time zone")
143+
},
144+
assertInSchedule: require.False,
145+
},
146+
{
147+
description: "different timezone",
148+
schedules: map[string]*accessmonitoringrulesv1.Schedule{
149+
"default": {
150+
Time: &accessmonitoringrulesv1.TimeSchedule{
151+
Timezone: "America/Los_Angeles",
152+
Shifts: []*accessmonitoringrulesv1.TimeSchedule_Shift{
153+
{
154+
Weekday: time.Monday.String(),
155+
Start: "14:00",
156+
End: "15:00",
157+
},
158+
},
159+
},
160+
},
161+
},
162+
assertErr: require.NoError,
163+
assertInSchedule: require.False,
164+
},
125165
{
126166
description: "different weekday",
127167
schedules: map[string]*accessmonitoringrulesv1.Schedule{

0 commit comments

Comments
 (0)