diff --git a/changes/38096-alternative-browser-host-gitops b/changes/38096-alternative-browser-host-gitops new file mode 100644 index 0000000000..d63819f8e7 --- /dev/null +++ b/changes/38096-alternative-browser-host-gitops @@ -0,0 +1 @@ +* Updated gitops related tests to validate that users can get/set the alternative browser hosts fleet desktop setting. \ No newline at end of file diff --git a/cmd/fleetctl/fleetctl/testdata/generateGitops/appConfig.json b/cmd/fleetctl/fleetctl/testdata/generateGitops/appConfig.json index 10385b25b9..e22e154969 100644 --- a/cmd/fleetctl/fleetctl/testdata/generateGitops/appConfig.json +++ b/cmd/fleetctl/fleetctl/testdata/generateGitops/appConfig.json @@ -147,7 +147,8 @@ "sso_server_url": "https://sso.fleetdm.com" }, "fleet_desktop": { - "transparency_url": "https://fleetdm.com/transparency" + "transparency_url": "https://fleetdm.com/transparency", + "alternative_browser_host": "musica.alternativa" }, "vulnerability_settings": { "databases_path": "" diff --git a/cmd/fleetctl/fleetctl/testdata/generateGitops/expectedOrgSettings-insecure.yaml b/cmd/fleetctl/fleetctl/testdata/generateGitops/expectedOrgSettings-insecure.yaml index f73ae96a8c..c74f93aae5 100644 --- a/cmd/fleetctl/fleetctl/testdata/generateGitops/expectedOrgSettings-insecure.yaml +++ b/cmd/fleetctl/fleetctl/testdata/generateGitops/expectedOrgSettings-insecure.yaml @@ -44,7 +44,7 @@ features: users: mdm: "SELECT enrolled, server_url, installed_from_dep, payload_identifier FROM mdm;" fleet_desktop: - alternative_browser_host: "" + alternative_browser_host: musica.alternativa transparency_url: https://fleetdm.com/transparency host_expiry_settings: host_expiry_enabled: false diff --git a/cmd/fleetctl/fleetctl/testdata/generateGitops/expectedOrgSettings.yaml b/cmd/fleetctl/fleetctl/testdata/generateGitops/expectedOrgSettings.yaml index c187a01e9c..b82206a708 100644 --- a/cmd/fleetctl/fleetctl/testdata/generateGitops/expectedOrgSettings.yaml +++ b/cmd/fleetctl/fleetctl/testdata/generateGitops/expectedOrgSettings.yaml @@ -44,7 +44,7 @@ features: users: mdm: "SELECT enrolled, server_url, installed_from_dep, payload_identifier FROM mdm;" fleet_desktop: - alternative_browser_host: "" + alternative_browser_host: musica.alternativa transparency_url: https://fleetdm.com/transparency host_expiry_settings: host_expiry_enabled: false diff --git a/cmd/fleetctl/fleetctl/testdata/generateGitops/test_dir_free/default.yml b/cmd/fleetctl/fleetctl/testdata/generateGitops/test_dir_free/default.yml index a699a399fe..0867816265 100644 --- a/cmd/fleetctl/fleetctl/testdata/generateGitops/test_dir_free/default.yml +++ b/cmd/fleetctl/fleetctl/testdata/generateGitops/test_dir_free/default.yml @@ -96,7 +96,7 @@ org_settings: enable_host_users: true enable_software_inventory: true fleet_desktop: - alternative_browser_host: + alternative_browser_host: musica.alternativa transparency_url: https://fleetdm.com/transparency host_expiry_settings: host_expiry_enabled: false diff --git a/cmd/fleetctl/fleetctl/testdata/generateGitops/test_dir_premium/default.yml b/cmd/fleetctl/fleetctl/testdata/generateGitops/test_dir_premium/default.yml index f033c7a784..424ede95fc 100644 --- a/cmd/fleetctl/fleetctl/testdata/generateGitops/test_dir_premium/default.yml +++ b/cmd/fleetctl/fleetctl/testdata/generateGitops/test_dir_premium/default.yml @@ -78,7 +78,7 @@ org_settings: enable_host_users: true enable_software_inventory: true fleet_desktop: - alternative_browser_host: + alternative_browser_host: musica.alternativa transparency_url: https://fleetdm.com/transparency host_expiry_settings: host_expiry_enabled: false diff --git a/cmd/fleetctl/integrationtest/gitops/gitops_enterprise_integration_test.go b/cmd/fleetctl/integrationtest/gitops/gitops_enterprise_integration_test.go index e107c83859..d9334022ac 100644 --- a/cmd/fleetctl/integrationtest/gitops/gitops_enterprise_integration_test.go +++ b/cmd/fleetctl/integrationtest/gitops/gitops_enterprise_integration_test.go @@ -3126,3 +3126,82 @@ team_settings: } } } + +// TestFleetDesktopSettingsBrowserAlternativeHost tests that user can mutate the fleet_desktop.alternative_browser_host +// setting via GitOps. +func (s *enterpriseIntegrationGitopsTestSuite) TestFleetDesktopSettingsBrowserAlternativeHost() { + t := s.T() + ctx := context.Background() + + user := s.createGitOpsUser(t) + fleetCfg := s.createFleetctlConfig(t, user) + + type tmplParams struct { + AlternativeBrowserHost string + } + globalCfgTpl, err := template.New("t1").Parse(` +agent_options: +controls: +queries: +policies: +org_settings: + secrets: + - secret: test_secret + fleet_desktop: + {{ .AlternativeBrowserHost }} +`) + require.NoError(t, err) + + // Set the required environment variables + t.Setenv("FLEET_URL", s.Server.URL) + t.Setenv("FLEET_GLOBAL_ENROLL_SECRET", "global_enroll_secret") + t.Setenv("FLEET_WORKSTATIONS_ENROLL_SECRET", "workstations_enroll_secret") + t.Setenv("FLEET_WORKSTATIONS_CANARY_ENROLL_SECRET", "workstations_canary_enroll_secret") + + testCases := []struct { + Name string + AlternativeBrowserHost string + Expected string + ShouldError bool + }{ + { + Name: "custom", + AlternativeBrowserHost: `alternative_browser_host: "example1.com"`, + Expected: "example1.com", + }, + { + Name: "empty value", + AlternativeBrowserHost: `alternative_browser_host: ""`, + Expected: "", + }, + { + Name: "invalid value", + AlternativeBrowserHost: `alternative_browser_host: "http://example2.com"`, + ShouldError: true, + }, + } + + for _, testCase := range testCases { + t.Run(testCase.Name, func(t *testing.T) { + + globalCfgFile, err := os.CreateTemp(t.TempDir(), "*.yml") + require.NoError(t, err) + + require.NoError(t, globalCfgTpl.Execute(globalCfgFile, tmplParams{ + AlternativeBrowserHost: testCase.AlternativeBrowserHost, + })) + + if testCase.ShouldError { + fleetctl.RunAppCheckErr(t, []string{"gitops", "--config", fleetCfg.Name(), "-f", globalCfgFile.Name()}, "applying fleet config: PATCH /api/latest/fleet/config received status 422 Validation Failed: must be a valid hostname or IP address") + } else { + s.assertDryRunOutput(t, fleetctl.RunAppForTest(t, []string{"gitops", "--config", fleetCfg.Name(), "-f", globalCfgFile.Name(), "--dry-run"})) + s.assertRealRunOutput(t, fleetctl.RunAppForTest(t, []string{"gitops", "--config", fleetCfg.Name(), "-f", globalCfgFile.Name()})) + } + + storedCfg, err := s.DS.AppConfig(ctx) + require.NoError(t, err) + require.NotNil(t, storedCfg) + require.Equal(t, testCase.Expected, storedCfg.FleetDesktop.AlternativeBrowserHost) + }) + } +} diff --git a/frontend/pages/admin/OrgSettingsPage/cards/FleetDesktop/FleetDesktop.tsx b/frontend/pages/admin/OrgSettingsPage/cards/FleetDesktop/FleetDesktop.tsx index 81bdb66d39..c9dc363ba8 100644 --- a/frontend/pages/admin/OrgSettingsPage/cards/FleetDesktop/FleetDesktop.tsx +++ b/frontend/pages/admin/OrgSettingsPage/cards/FleetDesktop/FleetDesktop.tsx @@ -109,7 +109,10 @@ const FleetDesktop = ({ Override default URLs to customize the Fleet Desktop experience. + <> + Override the default transparency URL or browser host to customize + Fleet Desktop experience. + } />