From ab69c22ddc5426b1a91856de5ceff068815c74e3 Mon Sep 17 00:00:00 2001 From: G r e y Date: Thu, 2 Jun 2022 10:14:42 -0400 Subject: [PATCH] fix: missing FE ttl constraint validation (#1952) Resolves: #1908 --- .../WorkspaceScheduleForm.test.ts | 18 ++++++++++++++++++ .../WorkspaceScheduleForm.tsx | 15 +++++++++------ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/site/src/components/WorkspaceScheduleForm/WorkspaceScheduleForm.test.ts b/site/src/components/WorkspaceScheduleForm/WorkspaceScheduleForm.test.ts index b1ffe7795b..31cc6a4eac 100644 --- a/site/src/components/WorkspaceScheduleForm/WorkspaceScheduleForm.test.ts +++ b/site/src/components/WorkspaceScheduleForm/WorkspaceScheduleForm.test.ts @@ -110,4 +110,22 @@ describe("validationSchema", () => { const validate = () => validationSchema.validateSync(values) expect(validate).toThrowError(Language.errorTimezone) }) + + it("allows a ttl of 7 days", () => { + const values: WorkspaceScheduleFormValues = { + ...valid, + ttl: 24 * 7, + } + const validate = () => validationSchema.validateSync(values) + expect(validate).not.toThrowError() + }) + + it("disallows a ttl of 7 days + 1 hour", () => { + const values: WorkspaceScheduleFormValues = { + ...valid, + ttl: 24 * 7 + 1, + } + const validate = () => validationSchema.validateSync(values) + expect(validate).toThrowError("ttl must be less than or equal to 168") + }) }) diff --git a/site/src/components/WorkspaceScheduleForm/WorkspaceScheduleForm.tsx b/site/src/components/WorkspaceScheduleForm/WorkspaceScheduleForm.tsx index b883c4ed07..b1cfcc2991 100644 --- a/site/src/components/WorkspaceScheduleForm/WorkspaceScheduleForm.tsx +++ b/site/src/components/WorkspaceScheduleForm/WorkspaceScheduleForm.tsx @@ -124,7 +124,10 @@ export const validationSchema = Yup.object({ } } }), - ttl: Yup.number().min(0).integer(), + ttl: Yup.number() + .integer() + .min(0) + .max(24 * 7 /* 7 days */), }) export const WorkspaceScheduleForm: FC = ({ @@ -171,7 +174,7 @@ export const WorkspaceScheduleForm: FC = ({ = ({ , )} - disabled={form.isSubmitting || isLoading || !form.values.startTime} + disabled={isLoading || !form.values.startTime} InputLabelProps={{ shrink: true, }} @@ -207,7 +210,7 @@ export const WorkspaceScheduleForm: FC = ({ control={ = ({ - +