Skip to content

Commit

Permalink
Merge pull request #1908 from PatrickRice-KSC/CusomRoleUpdates
Browse files Browse the repository at this point in the history
Add new custom role permissions, allow GET to retrieve MemberRole
  • Loading branch information
svanharmelen committed Apr 5, 2024
2 parents 3939b35 + f6963b8 commit 1ccfef0
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 2 deletions.
1 change: 1 addition & 0 deletions group_members.go
Expand Up @@ -56,6 +56,7 @@ type GroupMember struct {
AccessLevel AccessLevelValue `json:"access_level"`
Email string `json:"email,omitempty"`
GroupSAMLIdentity *GroupMemberSAMLIdentity `json:"group_saml_identity"`
MemberRole *MemberRole `json:"member_role"`
}

// ListGroupMembersOptions represents the available ListGroupMembers() and
Expand Down
59 changes: 59 additions & 0 deletions group_members_test.go
Expand Up @@ -287,3 +287,62 @@ func TestListGroupMembersWithSAML(t *testing.T) {
t.Errorf("Groups.ListBillableGroupMembers returned %+v, want %+v", members[0], want[0])
}
}

func TestGetGroupMemberCustomRole(t *testing.T) {
mux, client := setup(t)

path := fmt.Sprintf("/%sgroups/1/members/2", apiVersionPath)
mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) {
testMethod(t, r, http.MethodGet)

// This is pulled straight from a `/group/<group_id>/members/<user_id>` call, then obfuscated.
fmt.Fprint(w, `
{
"id":1,
"username":"test",
"name":"testName",
"access_level":30,
"member_role":{
"id":1,
"group_id":2,
"name":"TestingCustomRole",
"description":"",
"base_access_level":30,
"admin_cicd_variables":true,
"admin_group_member":null,
"admin_merge_request":null,
"admin_push_rules":null,
"admin_terraform_state":null,
"admin_vulnerability":null,
"archive_project":null,
"manage_group_access_tokens":null,
"manage_project_access_tokens":null,
"read_code":null,
"read_dependency":null,
"read_vulnerability":null,
"remove_group":null,
"remove_project":null
}
}
`)
})

want := &GroupMember{
ID: 1,
Username: "test",
Name: "testName",
AccessLevel: AccessLevelValue(30),
MemberRole: &MemberRole{
ID: 1,
GroupId: 2,
Name: "TestingCustomRole",
Description: "",
BaseAccessLevel: AccessLevelValue(30),
AdminCICDVariables: true,
},
}
member, _, err := client.GroupMembers.GetGroupMember(1, 2)

assert.NoError(t, err)
assert.Equal(t, want, member)
}
10 changes: 8 additions & 2 deletions member_roles.go
Expand Up @@ -22,12 +22,18 @@ type MemberRole struct {
Description string `json:"description,omitempty"`
GroupId int `json:"group_id"`
BaseAccessLevel AccessLevelValue `json:"base_access_level"`
AdminMergeRequests bool `json:"admin_merge_requests,omitempty"`
AdminCICDVariables bool `json:"admin_cicd_variables,omitempty"`
AdminMergeRequests bool `json:"admin_merge_request,omitempty"`
AdminTerraformState bool `json:"admin_terraform_state,omitempty"`
AdminVulnerability bool `json:"admin_vulnerability,omitempty"`
ReadCode bool `json:"read_code,omitempty"`
ReadDependency bool `json:"read_dependency,omitempty"`
ReadVulnerability bool `json:"read_vulnerability,omitempty"`
ManageProjectAccessToken bool `json:"manage_project_access_token,omitempty"`
AdminGroupMembers bool `json:"admin_group_member,omitempty"`
ManageProjectAccessToken bool `json:"manage_project_access_tokens,omitempty"`
ArchiveProject bool `json:"archive_project,omitempty"`
RemoveProject bool `json:"remove_project,omitempty"`
ManageGroupAccesToken bool `json:"manage_group_access_tokens,omitempty"`
}

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

0 comments on commit 1ccfef0

Please sign in to comment.