mirror of
https://github.com/fleetdm/fleet
synced 2026-05-23 08:58:41 +00:00
feat: list host software integration tests (#20632)
> Related issue: #20229 # Checklist for submitter If some of the following don't apply, delete the relevant line. <!-- Note that API documentation changes are now addressed by the product design team. --> - [x] Added/updated tests - [x] Manual QA for all new/changed functionality
This commit is contained in:
parent
bbe7b0225b
commit
746c442d01
1 changed files with 75 additions and 4 deletions
|
|
@ -9776,12 +9776,20 @@ func (s *integrationMDMTestSuite) TestVPPApps() {
|
|||
addedApp = appResp.AppStoreApps[0]
|
||||
addAppResp = addAppStoreAppResponse{}
|
||||
s.DoJSON("POST", "/api/latest/fleet/software/app_store_apps", &addAppStoreAppRequest{TeamID: &team.ID, AppStoreID: addedApp.AdamID}, http.StatusOK, &addAppResp)
|
||||
s.lastActivityMatches(fleet.ActivityAddedAppStoreApp{}.ActivityName(), fmt.Sprintf(`{"team_name": "%s", "software_title": "%s", "app_store_id": "%s", "team_id": %d}`, team.Name, addedApp.Name, addedApp.AdamID, team.ID), 0)
|
||||
s.lastActivityMatches(
|
||||
fleet.ActivityAddedAppStoreApp{}.ActivityName(),
|
||||
fmt.Sprintf(`{"team_name": "%s", "software_title": "%s", "app_store_id": "%s", "team_id": %d}`, team.Name, addedApp.Name, addedApp.AdamID, team.ID),
|
||||
0,
|
||||
)
|
||||
|
||||
errApp := appResp.AppStoreApps[1]
|
||||
addAppResp = addAppStoreAppResponse{}
|
||||
s.DoJSON("POST", "/api/latest/fleet/software/app_store_apps", &addAppStoreAppRequest{TeamID: &team.ID, AppStoreID: errApp.AdamID}, http.StatusOK, &addAppResp)
|
||||
s.lastActivityMatches(fleet.ActivityAddedAppStoreApp{}.ActivityName(), fmt.Sprintf(`{"team_name": "%s", "software_title": "%s", "app_store_id": "%s", "team_id": %d}`, team.Name, errApp.Name, errApp.AdamID, team.ID), 0)
|
||||
s.lastActivityMatches(
|
||||
fleet.ActivityAddedAppStoreApp{}.ActivityName(),
|
||||
fmt.Sprintf(`{"team_name": "%s", "software_title": "%s", "app_store_id": "%s", "team_id": %d}`, team.Name, errApp.Name, errApp.AdamID, team.ID),
|
||||
0,
|
||||
)
|
||||
|
||||
listSw = listSoftwareTitlesResponse{}
|
||||
s.DoJSON("GET", "/api/latest/fleet/software/titles", nil, http.StatusOK, &listSw, "team_id", fmt.Sprint(team.ID), "available_for_install", "true")
|
||||
|
|
@ -9813,7 +9821,19 @@ func (s *integrationMDMTestSuite) TestVPPApps() {
|
|||
}
|
||||
}
|
||||
|
||||
s.lastActivityMatches(fleet.ActivityInstalledAppStoreApp{}.ActivityName(), fmt.Sprintf(`{"host_id": %d, "host_display_name": "%s", "software_title": "%s", "app_store_id": "%s", "command_uuid": "%s", "status": "%s"}`, mdmHost.ID, mdmHost.DisplayName(), errApp.Name, errApp.AdamID, cmdUUID, fleet.SoftwareInstallerFailed), 0)
|
||||
s.lastActivityMatches(
|
||||
fleet.ActivityInstalledAppStoreApp{}.ActivityName(),
|
||||
fmt.Sprintf(
|
||||
`{"host_id": %d, "host_display_name": "%s", "software_title": "%s", "app_store_id": "%s", "command_uuid": "%s", "status": "%s"}`,
|
||||
mdmHost.ID,
|
||||
mdmHost.DisplayName(),
|
||||
errApp.Name,
|
||||
errApp.AdamID,
|
||||
cmdUUID,
|
||||
fleet.SoftwareInstallerFailed,
|
||||
),
|
||||
0,
|
||||
)
|
||||
|
||||
// Trigger install to the host
|
||||
installResp = installSoftwareResponse{}
|
||||
|
|
@ -9833,7 +9853,58 @@ func (s *integrationMDMTestSuite) TestVPPApps() {
|
|||
}
|
||||
}
|
||||
|
||||
s.lastActivityMatches(fleet.ActivityInstalledAppStoreApp{}.ActivityName(), fmt.Sprintf(`{"host_id": %d, "host_display_name": "%s", "software_title": "%s", "app_store_id": "%s", "command_uuid": "%s", "status": "%s"}`, mdmHost.ID, mdmHost.DisplayName(), addedApp.Name, addedApp.AdamID, cmdUUID, fleet.SoftwareInstallerInstalled), 0)
|
||||
s.lastActivityMatches(
|
||||
fleet.ActivityInstalledAppStoreApp{}.ActivityName(),
|
||||
fmt.Sprintf(
|
||||
`{"host_id": %d, "host_display_name": "%s", "software_title": "%s", "app_store_id": "%s", "command_uuid": "%s", "status": "%s"}`,
|
||||
mdmHost.ID,
|
||||
mdmHost.DisplayName(),
|
||||
addedApp.Name,
|
||||
addedApp.AdamID,
|
||||
cmdUUID,
|
||||
fleet.SoftwareInstallerInstalled,
|
||||
),
|
||||
0,
|
||||
)
|
||||
|
||||
// Check list host software
|
||||
|
||||
getHostSw := getHostSoftwareResponse{}
|
||||
s.DoJSON("GET", fmt.Sprintf("/api/latest/fleet/hosts/%d/software", mdmHost.ID), nil, http.StatusOK, &getHostSw)
|
||||
gotSW := getHostSw.Software
|
||||
require.Len(t, gotSW, 2) // App 1 and App 2
|
||||
got1, got2 := gotSW[0], gotSW[1]
|
||||
require.Equal(t, got1.Name, "App 1")
|
||||
require.NotNil(t, got1.AppStoreApp)
|
||||
require.Equal(t, got1.AppStoreApp.AppStoreID, addedApp.AdamID)
|
||||
require.Equal(t, got1.AppStoreApp.IconURL, ptr.String(addedApp.IconURL))
|
||||
require.Empty(t, got1.AppStoreApp.Name) // Name is only present for installer packages
|
||||
require.Equal(t, got1.AppStoreApp.Version, addedApp.LatestVersion)
|
||||
require.NotNil(t, *got1.Status)
|
||||
require.Equal(t, *got1.Status, fleet.SoftwareInstallerInstalled)
|
||||
require.Equal(t, got2.Name, "App 2")
|
||||
require.NotNil(t, *got2.Status)
|
||||
require.Equal(t, *got2.Status, fleet.SoftwareInstallerFailed)
|
||||
require.NotNil(t, got2.AppStoreApp)
|
||||
require.Equal(t, got2.AppStoreApp.AppStoreID, errApp.AdamID)
|
||||
require.Equal(t, got2.AppStoreApp.IconURL, ptr.String(errApp.IconURL))
|
||||
require.Empty(t, got2.AppStoreApp.Name)
|
||||
require.Equal(t, got2.AppStoreApp.Version, errApp.LatestVersion)
|
||||
|
||||
// Check with a query
|
||||
getHostSw = getHostSoftwareResponse{}
|
||||
s.DoJSON("GET", fmt.Sprintf("/api/latest/fleet/hosts/%d/software", mdmHost.ID), nil, http.StatusOK, &getHostSw, "query", "App 1")
|
||||
require.Len(t, getHostSw.Software, 1) // App 1 only
|
||||
got1 = getHostSw.Software[0]
|
||||
require.Equal(t, got1.Name, "App 1")
|
||||
require.NotNil(t, got1.AppStoreApp)
|
||||
require.NotNil(t, got1.AppStoreApp)
|
||||
require.Equal(t, got1.AppStoreApp.AppStoreID, addedApp.AdamID)
|
||||
require.Equal(t, got1.AppStoreApp.IconURL, ptr.String(addedApp.IconURL))
|
||||
require.Empty(t, got1.AppStoreApp.Name)
|
||||
require.Equal(t, got1.AppStoreApp.Version, addedApp.LatestVersion)
|
||||
require.NotNil(t, *got1.Status)
|
||||
require.Equal(t, *got1.Status, fleet.SoftwareInstallerInstalled)
|
||||
|
||||
// Delete VPP token and check that it's not appearing anymore
|
||||
s.Do("DELETE", "/api/latest/fleet/mdm/apple/vpp_token", &deleteMDMAppleVPPTokenRequest{}, http.StatusNoContent)
|
||||
|
|
|
|||
Loading…
Reference in a new issue