(t *testing.T)
| 70 | } |
| 71 | |
| 72 | func 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 | } |
nothing calls this directly
no test coverage detected