diff --git a/server/settings/settings.go b/server/settings/settings.go index c2776949d7..30f6857527 100644 --- a/server/settings/settings.go +++ b/server/settings/settings.go @@ -89,6 +89,11 @@ func (s *Server) Get(ctx context.Context, _ *settingspkg.SettingsQuery) (*settin return nil, err } + installationID, err := s.mgr.GetInstallationID() + if err != nil { + return nil, err + } + set := settingspkg.Settings{ URL: argoCDSettings.URL, AdditionalURLs: argoCDSettings.AdditionalURLs, @@ -112,6 +117,7 @@ func (s *Server) Get(ctx context.Context, _ *settingspkg.SettingsQuery) (*settin KustomizeVersions: kustomizeVersions, UiCssURL: argoCDSettings.UiCssURL, TrackingMethod: trackingMethod, + InstallationID: installationID, ExecEnabled: argoCDSettings.ExecEnabled, AppsInAnyNamespaceEnabled: s.appsInAnyNamespaceEnabled, ImpersonationEnabled: argoCDSettings.ImpersonationEnabled, diff --git a/server/settings/settings_test.go b/server/settings/settings_test.go new file mode 100644 index 0000000000..d2cebfb680 --- /dev/null +++ b/server/settings/settings_test.go @@ -0,0 +1,82 @@ +package settings + +import ( + "context" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes/fake" + + "github.com/argoproj/argo-cd/v3/common" + "github.com/argoproj/argo-cd/v3/util/settings" +) + +const testNamespace = "default" + +func fixtures(data map[string]string) (*fake.Clientset, *settings.SettingsManager) { + kubeClient := fake.NewClientset(&corev1.ConfigMap{ + ObjectMeta: metav1.ObjectMeta{ + Name: common.ArgoCDConfigMapName, + Namespace: testNamespace, + Labels: map[string]string{ + "app.kubernetes.io/part-of": "argocd", + }, + }, + Data: data, + }, &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: "argocd-secret", + Namespace: testNamespace, + }, + Data: map[string][]byte{ + "admin.password": []byte("test"), + "server.secretkey": []byte("test"), + }, + }) + settingsManager := settings.NewSettingsManager(context.Background(), kubeClient, testNamespace) + return kubeClient, settingsManager +} + +func TestSettingsServer(t *testing.T) { + newServer := func(data map[string]string) *Server { + _, settingsMgr := fixtures(data) + return NewServer(settingsMgr, nil, nil, false, false, false) + } + + t.Run("TestGetInstallationID", func(t *testing.T) { + settingsServer := newServer(map[string]string{ + "installationID": "1234567890", + }) + resp, err := settingsServer.Get(t.Context(), nil) + require.NoError(t, err) + assert.Equal(t, "1234567890", resp.InstallationID) + }) + + t.Run("TestGetInstallationIDNotSet", func(t *testing.T) { + settingsServer := newServer(map[string]string{}) + resp, err := settingsServer.Get(t.Context(), nil) + require.NoError(t, err) + assert.Empty(t, resp.InstallationID) + }) + + t.Run("TestGetTrackingMethod", func(t *testing.T) { + settingsServer := newServer(map[string]string{ + "application.resourceTrackingMethod": "annotation+label", + }) + resp, err := settingsServer.Get(t.Context(), nil) + require.NoError(t, err) + assert.Equal(t, "annotation+label", resp.TrackingMethod) + }) + + t.Run("TestGetAppLabelKey", func(t *testing.T) { + settingsServer := newServer(map[string]string{ + "application.instanceLabelKey": "instance", + }) + resp, err := settingsServer.Get(t.Context(), nil) + require.NoError(t, err) + assert.Equal(t, "instance", resp.AppLabelKey) + }) +}