Skip to content

Commit 3c44caa

Browse files
committed
Add codersdk roles
1 parent 7c12696 commit 3c44caa

File tree

6 files changed

+49
-38
lines changed

6 files changed

+49
-38
lines changed

cli/server_createadminuser_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/coder/coder/v2/coderd/database/dbtime"
1818
"github.com/coder/coder/v2/coderd/rbac"
1919
"github.com/coder/coder/v2/coderd/userpassword"
20+
"github.com/coder/coder/v2/codersdk"
2021
"github.com/coder/coder/v2/pty/ptytest"
2122
"github.com/coder/coder/v2/testutil"
2223
)
@@ -56,7 +57,7 @@ func TestServerCreateAdminUser(t *testing.T) {
5657
require.NoError(t, err)
5758
require.True(t, ok, "password does not match")
5859

59-
require.EqualValues(t, []string{rbac.RoleOwner().String()}, user.RBACRoles, "user does not have owner role")
60+
require.EqualValues(t, []string{codersdk.RoleOwner}, user.RBACRoles, "user does not have owner role")
6061

6162
// Check that user is admin in every org.
6263
orgs, err := db.GetOrganizations(ctx)

coderd/httpmw/authorize_test.go

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,27 +27,26 @@ func TestExtractUserRoles(t *testing.T) {
2727
t.Parallel()
2828
testCases := []struct {
2929
Name string
30-
AddUser func(db database.Store) (database.User, []string, string)
30+
AddUser func(db database.Store) (database.User, []rbac.RoleName, string)
3131
}{
3232
{
3333
Name: "Member",
34-
AddUser: func(db database.Store) (database.User, []string, string) {
35-
roles := []string{}
36-
user, token := addUser(t, db, roles...)
37-
return user, append(roles, rbac.RoleMember()), token
34+
AddUser: func(db database.Store) (database.User, []rbac.RoleName, string) {
35+
user, token := addUser(t, db)
36+
return user, []rbac.RoleName{rbac.RoleMember()}, token
3837
},
3938
},
4039
{
41-
Name: "Admin",
42-
AddUser: func(db database.Store) (database.User, []string, string) {
43-
roles := []string{rbac.RoleOwner()}
40+
Name: "Owner",
41+
AddUser: func(db database.Store) (database.User, []rbac.RoleName, string) {
42+
roles := []string{codersdk.RoleOwner}
4443
user, token := addUser(t, db, roles...)
45-
return user, append(roles, rbac.RoleMember()), token
44+
return user, []rbac.RoleName{rbac.RoleOwner(), rbac.RoleMember()}, token
4645
},
4746
},
4847
{
4948
Name: "OrgMember",
50-
AddUser: func(db database.Store) (database.User, []string, string) {
49+
AddUser: func(db database.Store) (database.User, []rbac.RoleName, string) {
5150
roles := []string{}
5251
user, token := addUser(t, db, roles...)
5352
org, err := db.InsertOrganization(context.Background(), database.InsertOrganizationParams{
@@ -68,15 +67,15 @@ func TestExtractUserRoles(t *testing.T) {
6867
Roles: orgRoles,
6968
})
7069
require.NoError(t, err)
71-
return user, append(roles, append(orgRoles, rbac.RoleMember(), rbac.ScopedRoleOrgMember(org.ID))...), token
70+
return user, []rbac.RoleName{rbac.RoleMember(), rbac.ScopedRoleOrgMember(org.ID)}, token
7271
},
7372
},
7473
{
7574
Name: "MultipleOrgMember",
76-
AddUser: func(db database.Store) (database.User, []string, string) {
77-
roles := []string{}
78-
user, token := addUser(t, db, roles...)
79-
roles = append(roles, rbac.RoleMember())
75+
AddUser: func(db database.Store) (database.User, []rbac.RoleName, string) {
76+
expected := []rbac.RoleName{}
77+
user, token := addUser(t, db)
78+
expected = append(expected, rbac.RoleMember())
8079
for i := 0; i < 3; i++ {
8180
organization, err := db.InsertOrganization(context.Background(), database.InsertOrganizationParams{
8281
ID: uuid.New(),
@@ -89,8 +88,8 @@ func TestExtractUserRoles(t *testing.T) {
8988

9089
orgRoles := []string{}
9190
if i%2 == 0 {
92-
orgRoles = append(orgRoles, rbac.RoleOrgAdmin())
93-
roles = append(roles, rbac.ScopedRoleOrgAdmin(organization.ID))
91+
orgRoles = append(orgRoles, codersdk.RoleOrganizationAdmin)
92+
expected = append(expected, rbac.ScopedRoleOrgAdmin(organization.ID))
9493
}
9594
_, err = db.InsertOrganizationMember(context.Background(), database.InsertOrganizationMemberParams{
9695
OrganizationID: organization.ID,
@@ -100,9 +99,9 @@ func TestExtractUserRoles(t *testing.T) {
10099
Roles: orgRoles,
101100
})
102101
require.NoError(t, err)
103-
roles = append(roles, rbac.ScopedRoleOrgMember(organization.ID))
102+
expected = append(expected, rbac.ScopedRoleOrgMember(organization.ID))
104103
}
105-
return user, roles, token
104+
return user, expected, token
106105
},
107106
},
108107
}

coderd/httpmw/organizationparam_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import (
1616
"github.com/coder/coder/v2/coderd/database/dbmem"
1717
"github.com/coder/coder/v2/coderd/database/dbtime"
1818
"github.com/coder/coder/v2/coderd/httpmw"
19-
"github.com/coder/coder/v2/coderd/rbac"
2019
"github.com/coder/coder/v2/codersdk"
2120
"github.com/coder/coder/v2/testutil"
2221
)
@@ -152,11 +151,11 @@ func TestOrganizationParam(t *testing.T) {
152151
_ = dbgen.OrganizationMember(t, db, database.OrganizationMember{
153152
OrganizationID: organization.ID,
154153
UserID: user.ID,
155-
Roles: []string{rbac.ScopedRoleOrgMember(organization.ID)},
154+
Roles: []string{codersdk.RoleOrganizationMember},
156155
})
157156
_, err := db.UpdateUserRoles(ctx, database.UpdateUserRolesParams{
158157
ID: user.ID,
159-
GrantedRoles: []string{rbac.RoleTemplateAdmin()},
158+
GrantedRoles: []string{codersdk.RoleTemplateAdmin},
160159
})
161160
require.NoError(t, err)
162161

coderd/httpmw/ratelimit_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import (
1616
"github.com/coder/coder/v2/coderd/database/dbgen"
1717
"github.com/coder/coder/v2/coderd/database/dbmem"
1818
"github.com/coder/coder/v2/coderd/httpmw"
19-
"github.com/coder/coder/v2/coderd/rbac"
2019
"github.com/coder/coder/v2/codersdk"
2120
)
2221

@@ -117,7 +116,7 @@ func TestRateLimit(t *testing.T) {
117116
db := dbmem.New()
118117

119118
u := dbgen.User(t, db, database.User{
120-
RBACRoles: []string{rbac.RoleOwner()},
119+
RBACRoles: []string{codersdk.RoleOwner},
121120
})
122121
_, key := dbgen.APIKey(t, db, database.APIKey{UserID: u.ID})
123122

coderd/users_test.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -994,7 +994,7 @@ func TestGrantSiteRoles(t *testing.T) {
994994
Name: "UserNotExists",
995995
Client: admin,
996996
AssignToUser: uuid.NewString(),
997-
Roles: []string{rbac.RoleOwner()},
997+
Roles: []string{codersdk.RoleOwner},
998998
Error: true,
999999
StatusCode: http.StatusBadRequest,
10001000
},
@@ -1020,7 +1020,7 @@ func TestGrantSiteRoles(t *testing.T) {
10201020
Client: admin,
10211021
OrgID: first.OrganizationID,
10221022
AssignToUser: codersdk.Me,
1023-
Roles: []string{rbac.RoleOwner()},
1023+
Roles: []string{codersdk.RoleOwner},
10241024
Error: true,
10251025
StatusCode: http.StatusBadRequest,
10261026
},
@@ -1057,9 +1057,9 @@ func TestGrantSiteRoles(t *testing.T) {
10571057
Name: "UserAdminMakeMember",
10581058
Client: userAdmin,
10591059
AssignToUser: newUser,
1060-
Roles: []string{rbac.RoleMember()},
1060+
Roles: []string{codersdk.RoleMember},
10611061
ExpectedRoles: []string{
1062-
rbac.RoleMember(),
1062+
codersdk.RoleMember,
10631063
},
10641064
Error: false,
10651065
},
@@ -1124,7 +1124,7 @@ func TestInitialRoles(t *testing.T) {
11241124
roles, err := client.UserRoles(ctx, codersdk.Me)
11251125
require.NoError(t, err)
11261126
require.ElementsMatch(t, roles.Roles, []string{
1127-
rbac.RoleOwner(),
1127+
codersdk.RoleOwner,
11281128
}, "should be a member and admin")
11291129

11301130
require.ElementsMatch(t, roles.OrganizationRoles[first.OrganizationID], []string{}, "should be a member")
@@ -1289,12 +1289,12 @@ func TestUsersFilter(t *testing.T) {
12891289
users := make([]codersdk.User, 0)
12901290
users = append(users, firstUser)
12911291
for i := 0; i < 15; i++ {
1292-
roles := []string{}
1292+
roles := []rbac.RoleName{}
12931293
if i%2 == 0 {
12941294
roles = append(roles, rbac.RoleTemplateAdmin(), rbac.RoleUserAdmin())
12951295
}
12961296
if i%3 == 0 {
1297-
roles = append(roles, "auditor")
1297+
roles = append(roles, rbac.RoleAuditor())
12981298
}
12991299
userClient, userData := coderdtest.CreateAnotherUser(t, client, first.OrganizationID, roles...)
13001300
// Set the last seen for each user to a unique day
@@ -1379,12 +1379,12 @@ func TestUsersFilter(t *testing.T) {
13791379
{
13801380
Name: "Admins",
13811381
Filter: codersdk.UsersRequest{
1382-
Role: rbac.RoleOwner(),
1382+
Role: codersdk.RoleOwner,
13831383
Status: codersdk.UserStatusSuspended + "," + codersdk.UserStatusActive,
13841384
},
13851385
FilterF: func(_ codersdk.UsersRequest, u codersdk.User) bool {
13861386
for _, r := range u.Roles {
1387-
if r.Name == rbac.RoleOwner() {
1387+
if r.Name == codersdk.RoleOwner {
13881388
return true
13891389
}
13901390
}
@@ -1399,7 +1399,7 @@ func TestUsersFilter(t *testing.T) {
13991399
},
14001400
FilterF: func(_ codersdk.UsersRequest, u codersdk.User) bool {
14011401
for _, r := range u.Roles {
1402-
if r.Name == rbac.RoleOwner() {
1402+
if r.Name == codersdk.RoleOwner {
14031403
return true
14041404
}
14051405
}
@@ -1409,7 +1409,7 @@ func TestUsersFilter(t *testing.T) {
14091409
{
14101410
Name: "Members",
14111411
Filter: codersdk.UsersRequest{
1412-
Role: rbac.RoleMember(),
1412+
Role: codersdk.RoleMember,
14131413
Status: codersdk.UserStatusSuspended + "," + codersdk.UserStatusActive,
14141414
},
14151415
FilterF: func(_ codersdk.UsersRequest, u codersdk.User) bool {
@@ -1423,7 +1423,7 @@ func TestUsersFilter(t *testing.T) {
14231423
},
14241424
FilterF: func(_ codersdk.UsersRequest, u codersdk.User) bool {
14251425
for _, r := range u.Roles {
1426-
if r.Name == rbac.RoleOwner() {
1426+
if r.Name == codersdk.RoleOwner {
14271427
return (strings.ContainsAny(u.Username, "iI") || strings.ContainsAny(u.Email, "iI")) &&
14281428
u.Status == codersdk.UserStatusActive
14291429
}
@@ -1438,7 +1438,7 @@ func TestUsersFilter(t *testing.T) {
14381438
},
14391439
FilterF: func(_ codersdk.UsersRequest, u codersdk.User) bool {
14401440
for _, r := range u.Roles {
1441-
if r.Name == rbac.RoleOwner() {
1441+
if r.Name == codersdk.RoleOwner {
14421442
return (strings.ContainsAny(u.Username, "iI") || strings.ContainsAny(u.Email, "iI")) &&
14431443
u.Status == codersdk.UserStatusActive
14441444
}

codersdk/rbacroles.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package codersdk
2+
3+
// Ideally this roles would be generated from the rbac/roles.go package.
4+
const (
5+
RoleOwner string = "owner"
6+
RoleMember string = "member"
7+
RoleTemplateAdmin string = "template-admin"
8+
RoleUserAdmin string = "user-admin"
9+
RoleAuditor string = "auditor"
10+
11+
RoleOrganizationAdmin string = "organization-admin"
12+
RoleOrganizationMember string = "organization-member"
13+
)

0 commit comments

Comments
 (0)