Skip to content

Commit f9aac34

Browse files
committed
chore: convert team service and tests
1 parent e5978db commit f9aac34

File tree

2 files changed

+200
-0
lines changed

2 files changed

+200
-0
lines changed

pkg/teams/team_service.go

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"github.com/OctopusDeploy/go-octopusdeploy/v2/internal"
55
"github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/constants"
66
"github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/core"
7+
"github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/newclient"
78
"github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/resources"
89
"github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/services"
910
"github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/services/api"
@@ -25,6 +26,8 @@ func NewTeamService(sling *sling.Sling, uriTemplate string) *TeamService {
2526
}
2627

2728
// Add creates a new team.
29+
//
30+
// Deprecated: use teams.Add()
2831
func (s *TeamService) Add(team *Team) (*Team, error) {
2932
if IsNil(team) {
3033
return nil, internal.CreateInvalidParameterError(constants.OperationAdd, constants.ParameterTeam)
@@ -46,6 +49,8 @@ func (s *TeamService) Add(team *Team) (*Team, error) {
4649
// Delete will delete a team if it is not a built-in team (i.e. the field,
4750
// CanBeDeleted is true). If the team cannot be deleted or an error occurs, it
4851
// returns an error.
52+
//
53+
// Deprecated: use teams.Delete()
4954
func (s *TeamService) Delete(team *Team) error {
5055
if team == nil {
5156
return internal.CreateInvalidParameterError(constants.OperationDelete, constants.ParameterTeam)
@@ -62,6 +67,8 @@ func (s *TeamService) Delete(team *Team) error {
6267
// Get returns a collection of teams based on the criteria defined by its input
6368
// query parameter. If an error occurs, an empty collection is returned along
6469
// with the associated error.
70+
//
71+
// Deprecated: use teams.Get()
6572
func (s *TeamService) Get(teamsQuery TeamsQuery) (*resources.Resources[*Team], error) {
6673
path, err := s.GetURITemplate().Expand(teamsQuery)
6774
if err != nil {
@@ -78,6 +85,8 @@ func (s *TeamService) Get(teamsQuery TeamsQuery) (*resources.Resources[*Team], e
7885

7986
// GetAll returns all teams. If none can be found or an error occurs, it
8087
// returns an empty collection.
88+
//
89+
// Deprecated: use teams.GetAll()
8190
func (s *TeamService) GetAll() ([]*Team, error) {
8291
items := []*Team{}
8392
path, err := services.GetAllPath(s)
@@ -91,6 +100,8 @@ func (s *TeamService) GetAll() ([]*Team, error) {
91100

92101
// GetByID returns the team that matches the input ID. If one cannot be found,
93102
// it returns nil and an error.
103+
//
104+
// Deprecated: use teams.GetById()
94105
func (s *TeamService) GetByID(id string) (*Team, error) {
95106
if internal.IsEmpty(id) {
96107
return nil, internal.CreateInvalidParameterError(constants.OperationGetByID, constants.ParameterID)
@@ -125,6 +136,8 @@ func (s *TeamService) GetByPartialName(partialName string) ([]*Team, error) {
125136
}
126137

127138
// Update modifies a team based on the one provided as input.
139+
//
140+
// Deprecated: use teams.Update()
128141
func (s *TeamService) Update(team *Team) (*Team, error) {
129142
path, err := services.GetUpdatePath(s, team)
130143
if err != nil {
@@ -150,3 +163,69 @@ func (s *TeamService) GetScopedUserRoles(team Team, query core.SkipTakeQuery) (*
150163

151164
return resp.(*resources.Resources[*userroles.ScopedUserRole]), nil
152165
}
166+
167+
// --- new ---
168+
169+
const template = "/api/{spaceId}/teams{/id}{?skip,take,ids,partialName}"
170+
const scopedUserRolesTemplate = "/api/teams{/id}/scopeduserroles"
171+
172+
// Add creates a new team.
173+
func Add(client newclient.Client, team *Team) (*Team, error) {
174+
return newclient.Add[Team](client, template, team.SpaceID, team)
175+
}
176+
177+
// Get returns a collection of teams based on the criteria defined by its
178+
// input query parameter.
179+
func Get(client newclient.Client, spaceID string, teamsQuery TeamsQuery) (*resources.Resources[*Team], error) {
180+
return newclient.GetByQuery[Team](client, template, spaceID, teamsQuery)
181+
}
182+
183+
// GetByID returns the team that matches the input ID.
184+
func GetByID(client newclient.Client, spaceID string, ID string) (*Team, error) {
185+
return newclient.GetByID[Team](client, template, spaceID, ID)
186+
}
187+
188+
// Update modifies a team based on the one provided as input.
189+
func Update(client newclient.Client, team *Team) (*Team, error) {
190+
return newclient.Update[Team](client, template, team.SpaceID, team.ID, team)
191+
}
192+
193+
// GetAll returns all teams. If an error occurs, it returns nil.
194+
func GetAll(client newclient.Client, spaceID string) ([]*Team, error) {
195+
return newclient.GetAll[Team](client, template, spaceID)
196+
}
197+
198+
// Delete will delete a team if it is not a built-in team (i.e. the field,
199+
// CanBeDeleted is true). If the team cannot be deleted or an error occurs, it
200+
// returns an error.
201+
func Delete(client newclient.Client, team *Team) error {
202+
if team == nil {
203+
return internal.CreateInvalidParameterError(constants.OperationDelete, constants.ParameterTeam)
204+
}
205+
206+
if !team.CanBeDeleted {
207+
return internal.CreateBuiltInTeamsCannotDeleteError()
208+
}
209+
210+
return newclient.DeleteByID(client, template, team.SpaceID, team.ID)
211+
}
212+
213+
// func GetScopedUserRoles(client newclient.Client, team *Team, query core.SkipTakeQuery) (*[]*userroles.ScopedUserRole, error) {
214+
// values, _ := uritemplates.Struct2map(query)
215+
// if values == nil {
216+
// values = map[string]any{}
217+
// }
218+
219+
// values["id"] = team.ID
220+
// path, err := client.URITemplateCache().Expand(scopedUserRolesTemplate, values)
221+
// if err != nil {
222+
// return nil, err
223+
// }
224+
225+
// res, err := newclient.Get[[]*userroles.ScopedUserRole](client.HttpSession(), path)
226+
// if err != nil {
227+
// return nil, err
228+
// }
229+
230+
// return res, nil
231+
// }

test/e2e/team_service_test.go

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,3 +168,124 @@ func TestTeamServiceUpdate(t *testing.T) {
168168
IsEqualTeams(t, createdTeam, updatedTeam)
169169
defer DeleteTestTeam(t, client, updatedTeam)
170170
}
171+
172+
// --- new ---
173+
func TestTeamSetAddGetDelete_NewClient(t *testing.T) {
174+
client := getOctopusClient()
175+
require.NotNil(t, client)
176+
177+
team := CreateTestTeam_NewClient(t, client)
178+
require.NotNil(t, team)
179+
defer DeleteTestTeam_NewClient(t, client, team)
180+
181+
teamToCompare, err := teams.GetByID(client, team.SpaceID, team.GetID())
182+
require.NoError(t, err)
183+
require.NotNil(t, teamToCompare)
184+
IsEqualTeams(t, team, teamToCompare)
185+
}
186+
187+
func TestTeamServiceGetAll_NewClient(t *testing.T) {
188+
client := getOctopusClient()
189+
require.NotNil(t, client)
190+
191+
// create 10 test teams (to be deleted)
192+
for i := 0; i < 10; i++ {
193+
team := CreateTestTeam_NewClient(t, client)
194+
require.NotNil(t, team)
195+
defer DeleteTestTeam_NewClient(t, client, team)
196+
}
197+
198+
allTeams, err := teams.GetAll(client, client.GetSpaceID())
199+
require.NoError(t, err)
200+
require.NotNil(t, allTeams)
201+
require.True(t, len(allTeams) >= 10)
202+
}
203+
204+
func TestTeamServiceGetByID_NewClient(t *testing.T) {
205+
client := getOctopusClient()
206+
require.NotNil(t, client)
207+
208+
id := internal.GetRandomName()
209+
team, err := teams.GetByID(client, client.GetSpaceID(), id)
210+
require.Error(t, err)
211+
require.Nil(t, team)
212+
213+
// create 2 test teams (to be deleted)
214+
for i := 0; i < 2; i++ {
215+
team := CreateTestTeam_NewClient(t, client)
216+
require.NotNil(t, team)
217+
defer DeleteTestTeam_NewClient(t, client, team)
218+
}
219+
220+
allTeams, err := teams.GetAll(client, client.GetSpaceID())
221+
require.NoError(t, err)
222+
require.NotNil(t, allTeams)
223+
224+
for _, team := range allTeams {
225+
teamToCompare, err := teams.GetByID(client, team.SpaceID, team.GetID())
226+
require.NoError(t, err)
227+
IsEqualTeams(t, team, teamToCompare)
228+
}
229+
}
230+
231+
func TestTeamServiceUpdate_NewClient(t *testing.T) {
232+
client := getOctopusClient()
233+
require.NotNil(t, client)
234+
235+
createdTeam := CreateTestTeam_NewClient(t, client)
236+
updatedTeam := UpdateTeam_NewClient(t, client, createdTeam)
237+
IsEqualTeams(t, createdTeam, updatedTeam)
238+
defer DeleteTestTeam_NewClient(t, client, updatedTeam)
239+
}
240+
241+
func CreateTestTeam_NewClient(t *testing.T, client *client.Client) *teams.Team {
242+
if client == nil {
243+
client = getOctopusClient()
244+
}
245+
require.NotNil(t, client)
246+
247+
name := internal.GetRandomName()
248+
249+
team := teams.NewTeam(name)
250+
require.NoError(t, team.Validate())
251+
252+
createdTeam, err := teams.Add(client, team)
253+
require.NoError(t, err)
254+
require.NotNil(t, createdTeam)
255+
require.NotEmpty(t, createdTeam.GetID())
256+
require.Equal(t, name, createdTeam.Name)
257+
258+
return createdTeam
259+
}
260+
261+
func DeleteTestTeam_NewClient(t *testing.T, client *client.Client, team *teams.Team) {
262+
require.NotNil(t, team)
263+
264+
if client == nil {
265+
client = getOctopusClient()
266+
}
267+
require.NotNil(t, client)
268+
269+
err := teams.Delete(client, team)
270+
assert.NoError(t, err)
271+
272+
// verify the delete operation was successful
273+
teams, err := teams.GetByID(client, team.SpaceID, team.GetID())
274+
assert.Error(t, err)
275+
assert.Nil(t, teams)
276+
}
277+
278+
func UpdateTeam_NewClient(t *testing.T, client *client.Client, team *teams.Team) *teams.Team {
279+
require.NotNil(t, team)
280+
281+
if client == nil {
282+
client = getOctopusClient()
283+
}
284+
require.NotNil(t, client)
285+
286+
updatedTeam, err := teams.Update(client, team)
287+
require.NoError(t, err)
288+
require.NotNil(t, updatedTeam)
289+
290+
return updatedTeam
291+
}

0 commit comments

Comments
 (0)