(t *testing.T)
| 1837 | } |
| 1838 | |
| 1839 | func TestDeleteTemplate(t *testing.T) { |
| 1840 | t.Parallel() |
| 1841 | |
| 1842 | t.Run("NoWorkspaces", func(t *testing.T) { |
| 1843 | t.Parallel() |
| 1844 | auditor := audit.NewMock() |
| 1845 | client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true, Auditor: auditor}) |
| 1846 | user := coderdtest.CreateFirstUser(t, client) |
| 1847 | version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil) |
| 1848 | template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID) |
| 1849 | coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 1850 | |
| 1851 | ctx := testutil.Context(t, testutil.WaitLong) |
| 1852 | |
| 1853 | err := client.DeleteTemplate(ctx, template.ID) |
| 1854 | require.NoError(t, err) |
| 1855 | |
| 1856 | require.Len(t, auditor.AuditLogs(), 5) |
| 1857 | assert.Equal(t, database.AuditActionDelete, auditor.AuditLogs()[4].Action) |
| 1858 | }) |
| 1859 | |
| 1860 | t.Run("Workspaces", func(t *testing.T) { |
| 1861 | t.Parallel() |
| 1862 | client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true}) |
| 1863 | user := coderdtest.CreateFirstUser(t, client) |
| 1864 | version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil) |
| 1865 | template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID) |
| 1866 | coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 1867 | coderdtest.CreateWorkspace(t, client, template.ID) |
| 1868 | |
| 1869 | ctx := testutil.Context(t, testutil.WaitLong) |
| 1870 | |
| 1871 | err := client.DeleteTemplate(ctx, template.ID) |
| 1872 | var apiErr *codersdk.Error |
| 1873 | require.ErrorAs(t, err, &apiErr) |
| 1874 | require.Equal(t, http.StatusBadRequest, apiErr.StatusCode()) |
| 1875 | }) |
| 1876 | |
| 1877 | t.Run("NoPermission", func(t *testing.T) { |
| 1878 | t.Parallel() |
| 1879 | client, db := coderdtest.NewWithDatabase(t, &coderdtest.Options{IncludeProvisionerDaemon: true}) |
| 1880 | owner := coderdtest.CreateFirstUser(t, client) |
| 1881 | memberClient, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID) |
| 1882 | tpl := dbfake.TemplateVersion(t, db).Seed(database.TemplateVersion{CreatedBy: owner.UserID, OrganizationID: owner.OrganizationID}).Do() |
| 1883 | |
| 1884 | ctx := testutil.Context(t, testutil.WaitShort) |
| 1885 | err := memberClient.DeleteTemplate(ctx, tpl.Template.ID) |
| 1886 | var apiErr *codersdk.Error |
| 1887 | require.ErrorAs(t, err, &apiErr) |
| 1888 | require.Equal(t, http.StatusForbidden, apiErr.StatusCode()) |
| 1889 | }) |
| 1890 | |
| 1891 | t.Run("OnlyPrebuilds", func(t *testing.T) { |
| 1892 | t.Parallel() |
| 1893 | client, db := coderdtest.NewWithDatabase(t, nil) |
| 1894 | owner := coderdtest.CreateFirstUser(t, client) |
| 1895 | tpl := dbfake.TemplateVersion(t, db). |
| 1896 | Seed(database.TemplateVersion{ |
nothing calls this directly
no test coverage detected