For the following issue: - https://github.com/fleetdm/fleet/issues/41419 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Updated tooling and documentation wording across scripts, utilities, and infrastructure files to reflect the product terminology change from “teams” to “fleets” (references now note “fleets” and indicate the former “teams” naming). <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Rachael Shaw <r@rachael.wtf>
94 lines
3.2 KiB
Go
94 lines
3.2 KiB
Go
package fleetdm_client
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/stretchr/testify/require"
|
|
"math/rand"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
var letters = []rune("abcdefghijklmnopqrstuvwxyz")
|
|
var defaultDescription = "Awesome description"
|
|
var defaultAgentOptions = `{"config":{"decorators":{"load":["SELECT uuid AS host_uuid FROM system_info;","SELECT hostname AS hostname FROM system_info;"]},"options":{"disable_distributed":false,"distributed_interval":10,"distributed_plugin":"tls","distributed_tls_max_attempts":3,"logger_tls_endpoint":"/api/osquery/log","logger_tls_period":10,"pack_delimiter":"/"}},"overrides":{}}`
|
|
|
|
func randTeam() string {
|
|
b := make([]rune, 6)
|
|
for i := range b {
|
|
b[i] = letters[rand.Intn(len(letters))]
|
|
}
|
|
return "aaa-" + string(b)
|
|
}
|
|
|
|
func TestBasic(t *testing.T) {
|
|
apiKey := os.Getenv("FLEETDM_APIKEY")
|
|
if apiKey == "" {
|
|
t.Skip("FLEETDM_APIKEY not set")
|
|
}
|
|
apiURL := os.Getenv("FLEETDM_URL")
|
|
if apiURL == "" {
|
|
t.Skip("FLEETDM_URL not set")
|
|
}
|
|
client := NewFleetDMClient(apiURL, apiKey)
|
|
require.NotNil(t, client)
|
|
|
|
// Create a nice default fleet (formerly "team")
|
|
teamName := randTeam()
|
|
team, err := client.CreateTeam(teamName, defaultDescription)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, team)
|
|
require.Equal(t, teamName, team.Team.Name)
|
|
require.Equal(t, defaultDescription, team.Team.Description)
|
|
aoBytes, err := json.Marshal(team.Team.AgentOptions)
|
|
require.NoError(t, err)
|
|
require.Equal(t, defaultAgentOptions, string(aoBytes))
|
|
|
|
// And verify we can get that team back
|
|
teamGotten, err := client.GetTeam(team.Team.ID)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, teamGotten)
|
|
require.Equal(t, team.Team.ID, teamGotten.Team.ID)
|
|
require.Equal(t, team.Team.Name, teamGotten.Team.Name)
|
|
require.Equal(t, teamName, teamGotten.Team.Name)
|
|
require.Equal(t, defaultDescription, teamGotten.Team.Description)
|
|
aoBytes, err = json.Marshal(teamGotten.Team.AgentOptions)
|
|
require.NoError(t, err)
|
|
require.Equal(t, defaultAgentOptions, string(aoBytes))
|
|
|
|
// Set different agent options
|
|
newAO := `{"command_line_flags":{"disable_events":true},"config":{"options":{"logger_tls_endpoint":"/test"}},"overrides":{}}`
|
|
teamAO, err := client.UpdateAgentOptions(team.Team.ID, newAO)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, teamAO)
|
|
require.Equal(t, team.Team.ID, teamAO.Team.ID)
|
|
aoBytes, err = json.Marshal(teamAO.Team.AgentOptions)
|
|
require.NoError(t, err)
|
|
require.Equal(t, newAO, string(aoBytes))
|
|
|
|
// Set a different description and different name
|
|
newName := randTeam()
|
|
newDescription := "New description"
|
|
teamUp, err := client.UpdateTeam(team.Team.ID, &newName, &newDescription)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, teamUp)
|
|
require.Equal(t, team.Team.ID, teamUp.Team.ID)
|
|
require.Equal(t, newName, teamUp.Team.Name)
|
|
require.Equal(t, newDescription, teamUp.Team.Description)
|
|
|
|
// Lookup the team based on the new name
|
|
teamId, err := client.TeamNameToID(newName)
|
|
require.NoError(t, err)
|
|
require.NotEqual(t, 0, teamId)
|
|
require.Equal(t, teamUp.Team.ID, teamId)
|
|
require.Equal(t, newName, teamUp.Team.Name)
|
|
|
|
// And finally, delete the team
|
|
err = client.DeleteTeam(team.Team.ID)
|
|
require.NoError(t, err)
|
|
|
|
// And verify it's gone
|
|
teamDNE, err := client.GetTeam(team.Team.ID)
|
|
require.Error(t, err)
|
|
require.Nil(t, teamDNE)
|
|
}
|