MCPcopy Create free account
hub / github.com/coder/coder / TestTemplateInsightsWithRole

Function TestTemplateInsightsWithRole

enterprise/coderd/insights_test.go:72–126  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

70}
71
72func TestTemplateInsightsWithRole(t *testing.T) {
73 t.Parallel()
74
75 y, m, d := time.Now().UTC().Date()
76 today := time.Date(y, m, d, 0, 0, 0, 0, time.UTC)
77
78 type test struct {
79 interval codersdk.InsightsReportInterval
80 role rbac.RoleIdentifier
81 allowed bool
82 }
83
84 tests := []test{
85 {codersdk.InsightsReportIntervalDay, rbac.RoleTemplateAdmin(), true},
86 {"", rbac.RoleTemplateAdmin(), true},
87 {codersdk.InsightsReportIntervalDay, rbac.RoleAuditor(), true},
88 {"", rbac.RoleAuditor(), true},
89 {codersdk.InsightsReportIntervalDay, rbac.RoleUserAdmin(), false},
90 {"", rbac.RoleUserAdmin(), false},
91 {codersdk.InsightsReportIntervalDay, rbac.RoleMember(), false},
92 {"", rbac.RoleMember(), false},
93 }
94
95 for _, tt := range tests {
96 t.Run(fmt.Sprintf("with interval=%q role=%q", tt.interval, tt.role), func(t *testing.T) {
97 t.Parallel()
98
99 client, admin := coderdenttest.New(t, &coderdenttest.Options{LicenseOptions: &coderdenttest.LicenseOptions{
100 Features: license.Features{
101 codersdk.FeatureTemplateRBAC: 1,
102 },
103 }})
104 version := coderdtest.CreateTemplateVersion(t, client, admin.OrganizationID, nil)
105 template := coderdtest.CreateTemplate(t, client, admin.OrganizationID, version.ID)
106
107 aud, _ := coderdtest.CreateAnotherUser(t, client, admin.OrganizationID, tt.role)
108
109 ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
110 defer cancel()
111
112 _, err := aud.TemplateInsights(ctx, codersdk.TemplateInsightsRequest{
113 StartTime: today.AddDate(0, 0, -1),
114 EndTime: today,
115 TemplateIDs: []uuid.UUID{template.ID},
116 })
117 if tt.allowed {
118 require.NoError(t, err)
119 } else {
120 var sdkErr *codersdk.Error
121 require.ErrorAs(t, err, &sdkErr)
122 require.Equal(t, sdkErr.StatusCode(), http.StatusNotFound)
123 }
124 })
125 }
126}

Callers

nothing calls this directly

Calls 12

StatusCodeMethod · 0.95
RoleTemplateAdminFunction · 0.92
RoleAuditorFunction · 0.92
RoleUserAdminFunction · 0.92
RoleMemberFunction · 0.92
NewFunction · 0.92
CreateTemplateVersionFunction · 0.92
CreateTemplateFunction · 0.92
CreateAnotherUserFunction · 0.92
TemplateInsightsMethod · 0.80
RunMethod · 0.65
EqualMethod · 0.45

Tested by

no test coverage detected