Skip to content

Commit bf5971d

Browse files
authored
Merge pull request #599 from hashicorp/hs26gill/add-team-project-permissions
Added Team Project Access API
2 parents d1bd9cb + b888f03 commit bf5971d

9 files changed

+698
-0
lines changed

CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# Unreleased
2+
3+
## Bug Fixes
4+
5+
## Enhancements
6+
* Add Beta endpoint `TeamProjectAccesses` to manage Project Access for Teams by @hs26gill [#599](https://github.com/hashicorp/go-tfe/pull/599)
7+
18
# v1.16.0
29

310
## Bug Fixes

errors.go

+10
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,10 @@ var (
152152

153153
ErrInvalidAccessTeamID = errors.New("invalid value for team access ID")
154154

155+
ErrInvalidTeamProjectAccessID = errors.New("invalid value for team project access ID")
156+
157+
ErrInvalidTeamProjectAccessType = errors.New("invalid type for team project access")
158+
155159
ErrInvalidTeamID = errors.New("invalid value for team ID")
156160

157161
ErrInvalidUsernames = errors.New("invalid value for usernames")
@@ -247,8 +251,12 @@ var (
247251

248252
ErrRequiredWorkspace = errors.New("workspace is required")
249253

254+
ErrRequiredProject = errors.New("project is required")
255+
250256
ErrRequiredWorkspaceID = errors.New("workspace ID is required")
251257

258+
ErrRequiredProjectID = errors.New("project ID is required")
259+
252260
ErrWorkspacesRequired = errors.New("workspaces is required")
253261

254262
ErrWorkspaceMinLimit = errors.New("must provide at least one workspace")
@@ -279,6 +287,8 @@ var (
279287

280288
ErrRequiredTeamAccessListOps = errors.New("TeamAccessListOptions is required")
281289

290+
ErrRequiredTeamProjectAccessListOps = errors.New("TeamProjectAccessListOptions is required")
291+
282292
ErrRequiredRunTriggerListOps = errors.New("RunTriggerListOptions is required")
283293

284294
ErrRequiredTFVerCreateOps = errors.New("version, URL and sha is required for AdminTerraformVersionCreateOptions")

generate_mocks.sh

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ mockgen -source=task_stages.go -destination=mocks/task_stages_mocks.go -package=
5252
mockgen -source=team.go -destination=mocks/team_mocks.go -package=mocks
5353
mockgen -source=team_access.go -destination=mocks/team_access_mocks.go -package=mocks
5454
mockgen -source=team_member.go -destination=mocks/team_member_mocks.go -package=mocks
55+
mockgen -source=team_project_access.go -destination=mocks/team_project_access_mocks.go -package=mocks
5556
mockgen -source=team_token.go -destination=mocks/team_token_mocks.go -package=mocks
5657
mockgen -source=user.go -destination=mocks/user_mocks.go -package=mocks
5758
mockgen -source=user_token.go -destination=mocks/user_token_mocks.go -package=mocks

helper_test.go

+46
Original file line numberDiff line numberDiff line change
@@ -1653,6 +1653,52 @@ func createTeamAccess(t *testing.T, client *Client, tm *Team, w *Workspace, org
16531653
}
16541654
}
16551655

1656+
func createTeamProjectAccess(t *testing.T, client *Client, tm *Team, p *Project, org *Organization) (*TeamProjectAccess, func()) {
1657+
var orgCleanup, tmCleanup, pCleanup func()
1658+
1659+
if org == nil {
1660+
org, orgCleanup = createOrganization(t, client)
1661+
}
1662+
1663+
if tm == nil {
1664+
tm, tmCleanup = createTeam(t, client, org)
1665+
}
1666+
1667+
if p == nil {
1668+
p, pCleanup = createProject(t, client, org)
1669+
}
1670+
1671+
ctx := context.Background()
1672+
tpa, err := client.TeamProjectAccess.Add(ctx, TeamProjectAccessAddOptions{
1673+
Access: *ProjectAccess(TeamProjectAccessAdmin),
1674+
Team: tm,
1675+
Project: p,
1676+
})
1677+
if err != nil {
1678+
t.Fatal(err)
1679+
}
1680+
1681+
return tpa, func() {
1682+
if err := client.TeamProjectAccess.Remove(ctx, tpa.ID); err != nil {
1683+
t.Errorf("Error removing team access! WARNING: Dangling resources\n"+
1684+
"may exist! The full error is shown below.\n\n"+
1685+
"TeamAccess: %s\nError: %s", tpa.ID, err)
1686+
}
1687+
1688+
if tmCleanup != nil {
1689+
tmCleanup()
1690+
}
1691+
1692+
if orgCleanup != nil {
1693+
orgCleanup()
1694+
}
1695+
1696+
if pCleanup != nil {
1697+
pCleanup()
1698+
}
1699+
}
1700+
}
1701+
16561702
func createTeamToken(t *testing.T, client *Client, tm *Team) (*TeamToken, func()) {
16571703
var tmCleanup func()
16581704

mocks/team_project_access_mocks.go

+110
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)