Skip to content
This repository was archived by the owner on Dec 10, 2024. It is now read-only.

Commit 1ccfef0

Browse files
authored
Merge pull request #1908 from PatrickRice-KSC/CusomRoleUpdates
Add new custom role permissions, allow GET to retrieve MemberRole
2 parents 3939b35 + f6963b8 commit 1ccfef0

File tree

3 files changed

+68
-2
lines changed

3 files changed

+68
-2
lines changed

group_members.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ type GroupMember struct {
5656
AccessLevel AccessLevelValue `json:"access_level"`
5757
Email string `json:"email,omitempty"`
5858
GroupSAMLIdentity *GroupMemberSAMLIdentity `json:"group_saml_identity"`
59+
MemberRole *MemberRole `json:"member_role"`
5960
}
6061

6162
// ListGroupMembersOptions represents the available ListGroupMembers() and

group_members_test.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,3 +287,62 @@ func TestListGroupMembersWithSAML(t *testing.T) {
287287
t.Errorf("Groups.ListBillableGroupMembers returned %+v, want %+v", members[0], want[0])
288288
}
289289
}
290+
291+
func TestGetGroupMemberCustomRole(t *testing.T) {
292+
mux, client := setup(t)
293+
294+
path := fmt.Sprintf("/%sgroups/1/members/2", apiVersionPath)
295+
mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) {
296+
testMethod(t, r, http.MethodGet)
297+
298+
// This is pulled straight from a `/group/<group_id>/members/<user_id>` call, then obfuscated.
299+
fmt.Fprint(w, `
300+
{
301+
"id":1,
302+
"username":"test",
303+
"name":"testName",
304+
"access_level":30,
305+
"member_role":{
306+
"id":1,
307+
"group_id":2,
308+
"name":"TestingCustomRole",
309+
"description":"",
310+
"base_access_level":30,
311+
"admin_cicd_variables":true,
312+
"admin_group_member":null,
313+
"admin_merge_request":null,
314+
"admin_push_rules":null,
315+
"admin_terraform_state":null,
316+
"admin_vulnerability":null,
317+
"archive_project":null,
318+
"manage_group_access_tokens":null,
319+
"manage_project_access_tokens":null,
320+
"read_code":null,
321+
"read_dependency":null,
322+
"read_vulnerability":null,
323+
"remove_group":null,
324+
"remove_project":null
325+
}
326+
}
327+
`)
328+
})
329+
330+
want := &GroupMember{
331+
ID: 1,
332+
Username: "test",
333+
Name: "testName",
334+
AccessLevel: AccessLevelValue(30),
335+
MemberRole: &MemberRole{
336+
ID: 1,
337+
GroupId: 2,
338+
Name: "TestingCustomRole",
339+
Description: "",
340+
BaseAccessLevel: AccessLevelValue(30),
341+
AdminCICDVariables: true,
342+
},
343+
}
344+
member, _, err := client.GroupMembers.GetGroupMember(1, 2)
345+
346+
assert.NoError(t, err)
347+
assert.Equal(t, want, member)
348+
}

member_roles.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,18 @@ type MemberRole struct {
2222
Description string `json:"description,omitempty"`
2323
GroupId int `json:"group_id"`
2424
BaseAccessLevel AccessLevelValue `json:"base_access_level"`
25-
AdminMergeRequests bool `json:"admin_merge_requests,omitempty"`
25+
AdminCICDVariables bool `json:"admin_cicd_variables,omitempty"`
26+
AdminMergeRequests bool `json:"admin_merge_request,omitempty"`
27+
AdminTerraformState bool `json:"admin_terraform_state,omitempty"`
2628
AdminVulnerability bool `json:"admin_vulnerability,omitempty"`
2729
ReadCode bool `json:"read_code,omitempty"`
2830
ReadDependency bool `json:"read_dependency,omitempty"`
2931
ReadVulnerability bool `json:"read_vulnerability,omitempty"`
30-
ManageProjectAccessToken bool `json:"manage_project_access_token,omitempty"`
32+
AdminGroupMembers bool `json:"admin_group_member,omitempty"`
33+
ManageProjectAccessToken bool `json:"manage_project_access_tokens,omitempty"`
34+
ArchiveProject bool `json:"archive_project,omitempty"`
35+
RemoveProject bool `json:"remove_project,omitempty"`
36+
ManageGroupAccesToken bool `json:"manage_group_access_tokens,omitempty"`
3137
}
3238

3339
// ListMemberRoles gets a list of member roles for a specified group.

0 commit comments

Comments
 (0)