From d14051c464d9ec4e1408cb6297324d9fd3a9418f Mon Sep 17 00:00:00 2001 From: G r e y Date: Tue, 31 May 2022 20:06:56 +0000 Subject: [PATCH 1/3] fix: missing FE ttl constraint validation Resolves: #1908 --- .../WorkspaceScheduleForm.test.ts | 18 ++++++++++++++++++ .../WorkspaceScheduleForm.tsx | 5 ++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/site/src/components/WorkspaceScheduleForm/WorkspaceScheduleForm.test.ts b/site/src/components/WorkspaceScheduleForm/WorkspaceScheduleForm.test.ts index b1ffe7795b800..31cc6a4eac553 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 b883c4ed07b91..54efa056cfbed 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 = ({ From 97c63f18abb5cacb869b254b81ed33d41bd4231a Mon Sep 17 00:00:00 2001 From: G r e y Date: Wed, 1 Jun 2022 17:58:00 +0000 Subject: [PATCH 2/3] fixup! Merge origin/main --- site/src/pages/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/site/src/pages/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx b/site/src/pages/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx index 21ec0e71cdfb2..963b01c32a61d 100644 --- a/site/src/pages/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx +++ b/site/src/pages/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx @@ -172,6 +172,7 @@ export const WorkspaceSchedulePage: React.FC = () => { autoStart: formValuesToAutoStartRequest(values), ttl: formValuesToTTLRequest(values), }) + return Promise.resolve() }} /> ) From a2a0133cf618435b1ad068278670baa06235e7ea Mon Sep 17 00:00:00 2001 From: G r e y Date: Thu, 2 Jun 2022 02:31:40 +0000 Subject: [PATCH 3/3] fixup! Merge origin/main --- .../WorkspaceScheduleForm/WorkspaceScheduleForm.tsx | 10 +++++----- .../WorkspaceSchedulePage/WorkspaceSchedulePage.tsx | 1 - 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/site/src/components/WorkspaceScheduleForm/WorkspaceScheduleForm.tsx b/site/src/components/WorkspaceScheduleForm/WorkspaceScheduleForm.tsx index 54efa056cfbed..b1cfcc29910ca 100644 --- a/site/src/components/WorkspaceScheduleForm/WorkspaceScheduleForm.tsx +++ b/site/src/components/WorkspaceScheduleForm/WorkspaceScheduleForm.tsx @@ -174,7 +174,7 @@ export const WorkspaceScheduleForm: FC = ({ = ({ , )} - disabled={form.isSubmitting || isLoading || !form.values.startTime} + disabled={isLoading || !form.values.startTime} InputLabelProps={{ shrink: true, }} @@ -210,7 +210,7 @@ export const WorkspaceScheduleForm: FC = ({ control={ = ({ - + diff --git a/site/src/pages/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx b/site/src/pages/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx index 963b01c32a61d..21ec0e71cdfb2 100644 --- a/site/src/pages/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx +++ b/site/src/pages/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx @@ -172,7 +172,6 @@ export const WorkspaceSchedulePage: React.FC = () => { autoStart: formValuesToAutoStartRequest(values), ttl: formValuesToTTLRequest(values), }) - return Promise.resolve() }} /> )