diff --git a/api/git/update/validate.go b/api/git/update/validate.go index 66805895d..801283676 100644 --- a/api/git/update/validate.go +++ b/api/git/update/validate.go @@ -21,10 +21,14 @@ func ValidateAutoUpdateSettings(autoUpdate *portainer.AutoUpdateSettings) error return httperrors.NewInvalidPayloadError("invalid Webhook format") } - if autoUpdate.Interval != "" { - if _, err := time.ParseDuration(autoUpdate.Interval); err != nil { - return httperrors.NewInvalidPayloadError("invalid Interval format") - } + if autoUpdate.Interval == "" { + return nil + } + + if d, err := time.ParseDuration(autoUpdate.Interval); err != nil { + return httperrors.NewInvalidPayloadError("invalid Interval format") + } else if d < time.Minute { + return httperrors.NewInvalidPayloadError("interval must be at least 1 minute") } return nil diff --git a/api/git/update/validate_test.go b/api/git/update/validate_test.go index 457cbc9fe..ec1654d2d 100644 --- a/api/git/update/validate_test.go +++ b/api/git/update/validate_test.go @@ -23,6 +23,16 @@ func Test_ValidateAutoUpdate(t *testing.T) { value: &portainer.AutoUpdateSettings{Interval: "1dd2hh3mm"}, wantErr: true, }, + { + name: "short interval value", + value: &portainer.AutoUpdateSettings{Interval: "1s"}, + wantErr: true, + }, + { + name: "valid webhook without interval", + value: &portainer.AutoUpdateSettings{Webhook: "8dce8c2f-9ca1-482b-ad20-271e86536ada"}, + wantErr: false, + }, { name: "valid auto update", value: &portainer.AutoUpdateSettings{