MCPcopy Index your code
hub / github.com/coder/coder / TestPostTemplateByOrganization

Function TestPostTemplateByOrganization

coderd/templates_test.go:52–446  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

50}
51
52func TestPostTemplateByOrganization(t *testing.T) {
53 t.Parallel()
54 t.Run("Create", func(t *testing.T) {
55 t.Parallel()
56 auditor := audit.NewMock()
57 ownerClient := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true, Auditor: auditor})
58 owner := coderdtest.CreateFirstUser(t, ownerClient)
59
60 // Use org scoped template admin
61 client, _ := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID, rbac.ScopedRoleOrgTemplateAdmin(owner.OrganizationID))
62 // By default, everyone in the org can read the template.
63 user, _ := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID)
64 auditor.ResetLogs()
65
66 version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, nil)
67
68 expected := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID, func(ctr *codersdk.CreateTemplateRequest) {
69 ctr.ActivityBumpMillis = ptr.Ref((3 * time.Hour).Milliseconds())
70 })
71 assert.Equal(t, (3 * time.Hour).Milliseconds(), expected.ActivityBumpMillis)
72
73 ctx := testutil.Context(t, testutil.WaitLong)
74
75 got, err := user.Template(ctx, expected.ID)
76 require.NoError(t, err)
77
78 assert.Equal(t, expected.Name, got.Name)
79 assert.Equal(t, expected.Description, got.Description)
80 assert.Equal(t, expected.ActivityBumpMillis, got.ActivityBumpMillis)
81 assert.Equal(t, expected.UseClassicParameterFlow, false) // Current default is false
82
83 require.Len(t, auditor.AuditLogs(), 3)
84 assert.Equal(t, database.AuditActionCreate, auditor.AuditLogs()[0].Action)
85 assert.Equal(t, database.AuditActionWrite, auditor.AuditLogs()[1].Action)
86 assert.Equal(t, database.AuditActionCreate, auditor.AuditLogs()[2].Action)
87 })
88
89 t.Run("AlreadyExists", func(t *testing.T) {
90 t.Parallel()
91 ownerClient := coderdtest.New(t, nil)
92 owner := coderdtest.CreateFirstUser(t, ownerClient)
93 client, _ := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID, rbac.ScopedRoleOrgTemplateAdmin(owner.OrganizationID))
94
95 version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, nil)
96 template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID)
97
98 ctx := testutil.Context(t, testutil.WaitLong)
99
100 _, err := client.CreateTemplate(ctx, owner.OrganizationID, codersdk.CreateTemplateRequest{
101 Name: template.Name,
102 VersionID: version.ID,
103 })
104 var apiErr *codersdk.Error
105 require.ErrorAs(t, err, &apiErr)
106 require.Equal(t, http.StatusConflict, apiErr.StatusCode())
107 })
108
109 t.Run("ReservedName", func(t *testing.T) {

Callers

nothing calls this directly

Calls 15

StatusCodeMethod · 0.95
NewMockFunction · 0.92
NewFunction · 0.92
CreateFirstUserFunction · 0.92
CreateAnotherUserFunction · 0.92
CreateTemplateVersionFunction · 0.92
CreateTemplateFunction · 0.92
RefFunction · 0.92
ContextFunction · 0.92
NowFunction · 0.92
ResetLogsMethod · 0.80

Tested by

no test coverage detected