fix: return a better message when checking status of async script (#16611)

> Related issue: #16431

# 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] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
This commit is contained in:
Jahziel Villasana-Espinoza 2024-02-06 10:37:53 -05:00 committed by GitHub
parent e1dbbda706
commit cf9f83604f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 10 additions and 3 deletions

View file

@ -0,0 +1 @@
- Fixes issue where an inaccurate message was returned after running an async (queued) script.

View file

@ -546,6 +546,7 @@ const (
RunScriptScriptsDisabledGloballyErrMsg = "Running scripts is disabled in organization settings."
RunScriptDisabledErrMsg = "Scripts are disabled for this host. To run scripts, deploy the fleetd agent with scripts enabled."
RunScriptScriptTimeoutErrMsg = "Timeout. Fleet stopped the script after 5 minutes to protect host performance."
RunScriptAsyncScriptEnqueuedErrMsg = "Script is running or will run when the host comes online."
// End user authentication
EndUserAuthDEPWebURLConfiguredErrMsg = `End user authentication can't be configured when the configured automatic enrollment (DEP) profile specifies a configuration_web_url.` // #nosec G101

View file

@ -223,6 +223,11 @@ func (hsr HostScriptResult) UserMessage(hostTimeout bool) string {
if hsr.HostTimeout(scripts.MaxServerWaitTime) {
return RunScriptHostTimeoutErrMsg
}
if !hsr.SyncRequest {
return RunScriptAsyncScriptEnqueuedErrMsg
}
return RunScriptAlreadyRunningErrMsg
}

View file

@ -4466,7 +4466,7 @@ func (s *integrationEnterpriseTestSuite) TestRunHostScript() {
require.Equal(t, "echo", scriptResultResp.ScriptContents)
require.Nil(t, scriptResultResp.ExitCode)
require.False(t, scriptResultResp.HostTimeout)
require.Contains(t, scriptResultResp.Message, fleet.RunScriptAlreadyRunningErrMsg)
require.Contains(t, scriptResultResp.Message, fleet.RunScriptAsyncScriptEnqueuedErrMsg)
// an async script doesn't care about timeouts
now := time.Now()
@ -4483,7 +4483,7 @@ func (s *integrationEnterpriseTestSuite) TestRunHostScript() {
require.Equal(t, "echo", scriptResultResp.ScriptContents)
require.Nil(t, scriptResultResp.ExitCode)
require.False(t, scriptResultResp.HostTimeout)
require.Contains(t, scriptResultResp.Message, fleet.RunScriptAlreadyRunningErrMsg)
require.Contains(t, scriptResultResp.Message, fleet.RunScriptAsyncScriptEnqueuedErrMsg)
// Disable scripts and verify that there are no Orbit notifs
acr := appConfigResponse{}
@ -4749,7 +4749,7 @@ func (s *integrationEnterpriseTestSuite) TestRunHostSavedScript() {
require.Equal(t, "echo 'no team'", scriptResultResp.ScriptContents)
require.Nil(t, scriptResultResp.ExitCode)
require.False(t, scriptResultResp.HostTimeout)
require.Contains(t, scriptResultResp.Message, fleet.RunScriptAlreadyRunningErrMsg)
require.Contains(t, scriptResultResp.Message, fleet.RunScriptAsyncScriptEnqueuedErrMsg)
require.NotNil(t, scriptResultResp.ScriptID)
require.Equal(t, savedNoTmScript.ID, *scriptResultResp.ScriptID)