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

Function TestReconcileSystemRole

coderd/rbac/rolestore/rolestore_test.go:45–123  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

43}
44
45func TestReconcileSystemRole(t *testing.T) {
46 t.Parallel()
47
48 tests := []struct {
49 name string
50 roleName string
51 permsFunc func(rbac.OrgSettings) rbac.OrgRolePermissions
52 }{
53 {"OrgMember", rbac.RoleOrgMember(), rbac.OrgMemberPermissions},
54 {"ServiceAccount", rbac.RoleOrgServiceAccount(), rbac.OrgServiceAccountPermissions},
55 }
56
57 for _, tt := range tests {
58 t.Run(tt.name, func(t *testing.T) {
59 t.Parallel()
60
61 db, _ := dbtestutil.NewDB(t)
62 org := dbgen.Organization(t, db, database.Organization{})
63 ctx := testutil.Context(t, testutil.WaitShort)
64
65 existing, err := database.ExpectOne(db.CustomRoles(ctx, database.CustomRolesParams{
66 LookupRoles: []database.NameOrganizationPair{
67 {
68 Name: tt.roleName,
69 OrganizationID: org.ID,
70 },
71 },
72 IncludeSystemRoles: true,
73 }))
74 require.NoError(t, err)
75
76 // Zero out permissions to simulate stale state.
77 _, err = db.UpdateCustomRole(ctx, database.UpdateCustomRoleParams{
78 Name: existing.Name,
79 OrganizationID: uuid.NullUUID{
80 UUID: org.ID,
81 Valid: true,
82 },
83 DisplayName: "",
84 SitePermissions: database.CustomRolePermissions{},
85 UserPermissions: database.CustomRolePermissions{},
86 OrgPermissions: database.CustomRolePermissions{},
87 MemberPermissions: database.CustomRolePermissions{},
88 })
89 require.NoError(t, err)
90
91 stale := existing
92 stale.OrgPermissions = database.CustomRolePermissions{}
93 stale.MemberPermissions = database.CustomRolePermissions{}
94
95 reconciled, didUpdate, err := rolestore.ReconcileSystemRole(ctx, db, stale, org)
96 require.NoError(t, err)
97 require.True(t, didUpdate, "expected reconciliation to update stale permissions")
98
99 dbstored, err := database.ExpectOne(db.CustomRoles(ctx, database.CustomRolesParams{
100 LookupRoles: []database.NameOrganizationPair{
101 {
102 Name: tt.roleName,

Callers

nothing calls this directly

Calls 13

RoleOrgMemberFunction · 0.92
RoleOrgServiceAccountFunction · 0.92
NewDBFunction · 0.92
OrganizationFunction · 0.92
ContextFunction · 0.92
ExpectOneFunction · 0.92
ReconcileSystemRoleFunction · 0.92
ShareableWorkspaceOwnersTypeAlias · 0.92
PermissionsEqualFunction · 0.92
ConvertDBPermissionsFunction · 0.92
RunMethod · 0.65
CustomRolesMethod · 0.65

Tested by

no test coverage detected