Skip to content

Commit cf95586

Browse files
committed
update unit test to check for negative durations
1 parent 54984b4 commit cf95586

File tree

1 file changed

+42
-3
lines changed

1 file changed

+42
-3
lines changed

coderd/templates_test.go

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,14 @@ func TestPatchTemplateMeta(t *testing.T) {
172172
assert.Equal(t, req.Description, updated.Description)
173173
assert.Equal(t, req.MaxTTLMillis, updated.MaxTTLMillis)
174174
assert.Equal(t, req.MinAutostartIntervalMillis, updated.MinAutostartIntervalMillis)
175+
176+
// Extra paranoid: did it _really_ happen?
177+
updated, err = client.Template(ctx, template.ID)
178+
require.NoError(t, err)
179+
assert.Greater(t, updated.UpdatedAt, template.UpdatedAt)
180+
assert.Equal(t, req.Description, updated.Description)
181+
assert.Equal(t, req.MaxTTLMillis, updated.MaxTTLMillis)
182+
assert.Equal(t, req.MinAutostartIntervalMillis, updated.MinAutostartIntervalMillis)
175183
})
176184

177185
t.Run("NotModified", func(t *testing.T) {
@@ -195,9 +203,40 @@ func TestPatchTemplateMeta(t *testing.T) {
195203
updated, err := client.Template(ctx, template.ID)
196204
require.NoError(t, err)
197205
assert.Equal(t, updated.UpdatedAt, template.UpdatedAt)
198-
assert.Equal(t, req.Description, updated.Description)
199-
assert.Equal(t, req.MaxTTLMillis, updated.MaxTTLMillis)
200-
assert.Equal(t, req.MinAutostartIntervalMillis, updated.MinAutostartIntervalMillis)
206+
assert.Equal(t, template.Description, updated.Description)
207+
assert.Equal(t, template.MaxTTLMillis, updated.MaxTTLMillis)
208+
assert.Equal(t, template.MinAutostartIntervalMillis, updated.MinAutostartIntervalMillis)
209+
})
210+
211+
t.Run("Invalid", func(t *testing.T) {
212+
t.Parallel()
213+
ctx := context.Background()
214+
client := coderdtest.New(t, nil)
215+
user := coderdtest.CreateFirstUser(t, client)
216+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
217+
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID, func(ctr *codersdk.CreateTemplateRequest) {
218+
ctr.Description = "original description"
219+
ctr.MaxTTLMillis = ptr.Ref(24 * time.Hour.Milliseconds())
220+
ctr.MinAutostartIntervalMillis = ptr.Ref(time.Hour.Milliseconds())
221+
})
222+
req := codersdk.UpdateTemplateMeta{
223+
MaxTTLMillis: -int64(time.Hour),
224+
MinAutostartIntervalMillis: -int64(time.Hour),
225+
}
226+
_, err := client.UpdateTemplateMeta(ctx, template.ID, req)
227+
var apiErr *codersdk.Error
228+
require.ErrorAs(t, err, &apiErr)
229+
require.Contains(t, apiErr.Message, "Invalid request")
230+
require.Len(t, apiErr.Validations, 2)
231+
assert.Equal(t, apiErr.Validations[0].Field, "max_ttl_ms")
232+
assert.Equal(t, apiErr.Validations[1].Field, "min_autostart_interval_ms")
233+
234+
updated, err := client.Template(ctx, template.ID)
235+
require.NoError(t, err)
236+
assert.WithinDuration(t, template.UpdatedAt, updated.UpdatedAt, time.Minute)
237+
assert.Equal(t, template.Description, updated.Description)
238+
assert.Equal(t, template.MaxTTLMillis, updated.MaxTTLMillis)
239+
assert.Equal(t, template.MinAutostartIntervalMillis, updated.MinAutostartIntervalMillis)
201240
})
202241
}
203242

0 commit comments

Comments
 (0)