Skip to content

Commit d5f2651

Browse files
authored
Merge pull request #2397 from dexidp/backport-2390
Backport #2390: Replace /teams API w/ /workspaces endpoints
2 parents 6e30b36 + 244be09 commit d5f2651

File tree

2 files changed

+25
-25
lines changed

2 files changed

+25
-25
lines changed

connector/bitbucketcloud/bitbucketcloud.go

+12-12
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ func (b *bitbucketConnector) userEmail(ctx context.Context, client *http.Client)
351351

352352
// getGroups retrieves Bitbucket teams a user is in, if any.
353353
func (b *bitbucketConnector) getGroups(ctx context.Context, client *http.Client, groupScope bool, userLogin string) ([]string, error) {
354-
bitbucketTeams, err := b.userTeams(ctx, client)
354+
bitbucketTeams, err := b.userWorkspaces(ctx, client)
355355
if err != nil {
356356
return nil, err
357357
}
@@ -369,33 +369,33 @@ func (b *bitbucketConnector) getGroups(ctx context.Context, client *http.Client,
369369
return nil, nil
370370
}
371371

372-
type teamName struct {
373-
Name string `json:"username"` // The "username" from Bitbucket Cloud is actually the team name here
372+
type workspaceSlug struct {
373+
Slug string `json:"slug"`
374374
}
375375

376-
type team struct {
377-
Team teamName `json:"team"`
376+
type workspace struct {
377+
Workspace workspaceSlug `json:"workspace"`
378378
}
379379

380-
type userTeamsResponse struct {
380+
type userWorkspacesResponse struct {
381381
pagedResponse
382-
Values []team
382+
Values []workspace `json:"values"`
383383
}
384384

385-
func (b *bitbucketConnector) userTeams(ctx context.Context, client *http.Client) ([]string, error) {
385+
func (b *bitbucketConnector) userWorkspaces(ctx context.Context, client *http.Client) ([]string, error) {
386386
var teams []string
387-
apiURL := b.apiURL + "/user/permissions/teams"
387+
apiURL := b.apiURL + "/user/permissions/workspaces"
388388

389389
for {
390-
// https://developer.atlassian.com/bitbucket/api/2/reference/resource/user/permissions/teams
391-
var response userTeamsResponse
390+
// https://developer.atlassian.com/cloud/bitbucket/rest/api-group-workspaces/#api-workspaces-get
391+
var response userWorkspacesResponse
392392

393393
if err := get(ctx, client, apiURL, &response); err != nil {
394394
return nil, fmt.Errorf("bitbucket: get user teams: %v", err)
395395
}
396396

397397
for _, value := range response.Values {
398-
teams = append(teams, value.Team.Name)
398+
teams = append(teams, value.Workspace.Slug)
399399
}
400400

401401
if response.Next == nil {

connector/bitbucketcloud/bitbucketcloud_test.go

+13-13
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,28 @@ import (
1414
)
1515

1616
func TestUserGroups(t *testing.T) {
17-
teamsResponse := userTeamsResponse{
17+
teamsResponse := userWorkspacesResponse{
1818
pagedResponse: pagedResponse{
1919
Size: 3,
2020
Page: 1,
2121
PageLen: 10,
2222
},
23-
Values: []team{
24-
{Team: teamName{Name: "team-1"}},
25-
{Team: teamName{Name: "team-2"}},
26-
{Team: teamName{Name: "team-3"}},
23+
Values: []workspace{
24+
{Workspace: workspaceSlug{Slug: "team-1"}},
25+
{Workspace: workspaceSlug{Slug: "team-2"}},
26+
{Workspace: workspaceSlug{Slug: "team-3"}},
2727
},
2828
}
2929

3030
s := newTestServer(map[string]interface{}{
31-
"/user/permissions/teams": teamsResponse,
32-
"/groups/team-1": []group{{Slug: "administrators"}, {Slug: "members"}},
33-
"/groups/team-2": []group{{Slug: "everyone"}},
34-
"/groups/team-3": []group{},
31+
"/user/permissions/workspaces": teamsResponse,
32+
"/groups/team-1": []group{{Slug: "administrators"}, {Slug: "members"}},
33+
"/groups/team-2": []group{{Slug: "everyone"}},
34+
"/groups/team-3": []group{},
3535
})
3636

3737
connector := bitbucketConnector{apiURL: s.URL, legacyAPIURL: s.URL}
38-
groups, err := connector.userTeams(context.Background(), newClient())
38+
groups, err := connector.userWorkspaces(context.Background(), newClient())
3939

4040
expectNil(t, err)
4141
expectEquals(t, groups, []string{
@@ -45,7 +45,7 @@ func TestUserGroups(t *testing.T) {
4545
})
4646

4747
connector.includeTeamGroups = true
48-
groups, err = connector.userTeams(context.Background(), newClient())
48+
groups, err = connector.userWorkspaces(context.Background(), newClient())
4949

5050
expectNil(t, err)
5151
expectEquals(t, groups, []string{
@@ -62,11 +62,11 @@ func TestUserGroups(t *testing.T) {
6262

6363
func TestUserWithoutTeams(t *testing.T) {
6464
s := newTestServer(map[string]interface{}{
65-
"/user/permissions/teams": userTeamsResponse{},
65+
"/user/permissions/workspaces": userWorkspacesResponse{},
6666
})
6767

6868
connector := bitbucketConnector{apiURL: s.URL}
69-
groups, err := connector.userTeams(context.Background(), newClient())
69+
groups, err := connector.userWorkspaces(context.Background(), newClient())
7070

7171
expectNil(t, err)
7272
expectEquals(t, len(groups), 0)

0 commit comments

Comments
 (0)