From 7521ee2c9c2148e7f0e48216852cc3f067c847b2 Mon Sep 17 00:00:00 2001 From: mo khan Date: Fri, 18 Mar 2022 15:47:33 -0600 Subject: [PATCH] feat: add SSOTeamID to Team structs --- team.go | 7 +++++++ team_integration_test.go | 31 ++++++++++++++++++++++++++++--- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/team.go b/team.go index 4ba72801f..92d92a160 100644 --- a/team.go +++ b/team.go @@ -49,6 +49,7 @@ type Team struct { Visibility string `jsonapi:"attr,visibility"` Permissions *TeamPermissions `jsonapi:"attr,permissions"` UserCount int `jsonapi:"attr,users-count"` + SSOTeamID *string `jsonapi:"attr,sso-team-id"` // Relations Users []*User `jsonapi:"relation,users"` @@ -99,6 +100,9 @@ type TeamCreateOptions struct { // Name of the team. Name *string `jsonapi:"attr,name"` + // Optional: Unique Identifier to control team membership via SAML + SSOTeamID *string `jsonapi:"attr,sso-team-id,omitempty"` + // The team's organization access OrganizationAccess *OrganizationAccessOptions `jsonapi:"attr,organization-access,omitempty"` @@ -117,6 +121,9 @@ type TeamUpdateOptions struct { // Optional: New name for the team Name *string `jsonapi:"attr,name,omitempty"` + // Optional: Unique Identifier to control team membership via SAML + SSOTeamID *string `jsonapi:"attr,sso-team-id,omitempty"` + // Optional: The team's organization access OrganizationAccess *OrganizationAccessOptions `jsonapi:"attr,organization-access,omitempty"` diff --git a/team_integration_test.go b/team_integration_test.go index ce92130d6..0d8423029 100644 --- a/team_integration_test.go +++ b/team_integration_test.go @@ -93,6 +93,22 @@ func TestTeamsCreate(t *testing.T) { } }) + t.Run("with sso-team-id", func(t *testing.T) { + skipIfBeta(t) + + options := TeamCreateOptions{ + Name: String("rockettes"), + SSOTeamID: String("7dddb675-73e0-4858-a8ad-0e597064301b"), + } + team, err := client.Teams.Create(ctx, orgTest.Name, options) + + assert.Nil(t, err) + assert.Equal(t, *options.Name, team.Name) + + assert.NotNil(t, options.SSOTeamID, team.SSOTeamID) + assert.Equal(t, *options.SSOTeamID, *team.SSOTeamID) + }) + t.Run("when options is missing name", func(t *testing.T) { tm, err := client.Teams.Create(ctx, "foo", TeamCreateOptions{}) assert.Nil(t, tm) @@ -121,15 +137,16 @@ func TestTeamsRead(t *testing.T) { defer tmTestCleanup() opts := TeamCreateOptions{ - Name: String(randomString(t)), + Name: String(randomString(t)), + SSOTeamID: String(randomString(t)), OrganizationAccess: &OrganizationAccessOptions{ ManagePolicies: Bool(true), }, } - tm, err := client.Teams.Create(ctx, orgTest.Name, opts) + ssoTeam, err := client.Teams.Create(ctx, orgTest.Name, opts) require.NoError(t, err) defer func() { - err := client.Teams.Delete(ctx, tm.ID) + err := client.Teams.Delete(ctx, ssoTeam.ID) require.NoError(t, err) }() @@ -149,6 +166,13 @@ func TestTeamsRead(t *testing.T) { t.Run("organization access is properly decoded", func(t *testing.T) { assert.Equal(t, tm.OrganizationAccess.ManagePolicies, *opts.OrganizationAccess.ManagePolicies) }) + + t.Run("SSO team id is returned", func(t *testing.T) { + skipIfBeta(t) + + assert.NotNil(t, ssoTeam.SSOTeamID) + assert.Equal(t, *opts.SSOTeamID, *ssoTeam.SSOTeamID) + }) }) t.Run("when the team does not exist", func(t *testing.T) { @@ -298,6 +322,7 @@ func TestTeam_Unmarshal(t *testing.T) { require.NoError(t, err) assert.Equal(t, team.ID, "1") assert.Equal(t, team.Name, "team hashi") + assert.Nil(t, team.SSOTeamID) assert.Equal(t, team.OrganizationAccess.ManageWorkspaces, true) assert.Equal(t, team.OrganizationAccess.ManageVCSSettings, true) assert.Equal(t, team.OrganizationAccess.ManagePolicies, true)