(t *testing.T)
| 887 | } |
| 888 | |
| 889 | func TestPatchTemplateMeta(t *testing.T) { |
| 890 | t.Parallel() |
| 891 | |
| 892 | t.Run("Modified", func(t *testing.T) { |
| 893 | t.Parallel() |
| 894 | |
| 895 | auditor := audit.NewMock() |
| 896 | client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true, Auditor: auditor}) |
| 897 | user := coderdtest.CreateFirstUser(t, client) |
| 898 | version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil) |
| 899 | template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID) |
| 900 | coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 901 | assert.Equal(t, (1 * time.Hour).Milliseconds(), template.ActivityBumpMillis) |
| 902 | |
| 903 | req := codersdk.UpdateTemplateMeta{ |
| 904 | Name: ptr.Ref("new-template-name"), |
| 905 | DisplayName: ptr.Ref("Displayed Name 456"), |
| 906 | Description: ptr.Ref("lorem ipsum dolor sit amet et cetera"), |
| 907 | Icon: ptr.Ref("/icon/new-icon.png"), |
| 908 | DefaultTTLMillis: ptr.Ref(12 * time.Hour.Milliseconds()), |
| 909 | ActivityBumpMillis: ptr.Ref(3 * time.Hour.Milliseconds()), |
| 910 | AllowUserCancelWorkspaceJobs: ptr.Ref(false), |
| 911 | } |
| 912 | // It is unfortunate we need to sleep, but the test can fail if the |
| 913 | // updatedAt is too close together. |
| 914 | time.Sleep(time.Millisecond * 5) |
| 915 | |
| 916 | ctx := testutil.Context(t, testutil.WaitLong) |
| 917 | |
| 918 | updated, err := client.UpdateTemplateMeta(ctx, template.ID, req) |
| 919 | require.NoError(t, err) |
| 920 | assert.Greater(t, updated.UpdatedAt, template.UpdatedAt) |
| 921 | assert.Equal(t, *req.Name, updated.Name) |
| 922 | assert.Equal(t, *req.DisplayName, updated.DisplayName) |
| 923 | assert.Equal(t, *req.Description, updated.Description) |
| 924 | assert.Equal(t, *req.Icon, updated.Icon) |
| 925 | assert.Equal(t, *req.DefaultTTLMillis, updated.DefaultTTLMillis) |
| 926 | assert.Equal(t, *req.ActivityBumpMillis, updated.ActivityBumpMillis) |
| 927 | assert.False(t, *req.AllowUserCancelWorkspaceJobs) |
| 928 | |
| 929 | // Extra paranoid: did it _really_ happen? |
| 930 | updated, err = client.Template(ctx, template.ID) |
| 931 | require.NoError(t, err) |
| 932 | assert.Greater(t, updated.UpdatedAt, template.UpdatedAt) |
| 933 | assert.Equal(t, *req.Name, updated.Name) |
| 934 | assert.Equal(t, *req.DisplayName, updated.DisplayName) |
| 935 | assert.Equal(t, *req.Description, updated.Description) |
| 936 | assert.Equal(t, *req.Icon, updated.Icon) |
| 937 | assert.Equal(t, *req.DefaultTTLMillis, updated.DefaultTTLMillis) |
| 938 | assert.Equal(t, *req.ActivityBumpMillis, updated.ActivityBumpMillis) |
| 939 | assert.False(t, *req.AllowUserCancelWorkspaceJobs) |
| 940 | |
| 941 | require.Len(t, auditor.AuditLogs(), 5) |
| 942 | assert.Equal(t, database.AuditActionWrite, auditor.AuditLogs()[4].Action) |
| 943 | }) |
| 944 | |
| 945 | t.Run("AlreadyExists", func(t *testing.T) { |
| 946 | t.Parallel() |
nothing calls this directly
no test coverage detected