|
41 | 41 | "argocd-server"} |
42 | 42 | ) |
43 | 43 |
|
| 44 | +type MockTrueFipsChecker struct{} |
| 45 | + |
| 46 | +func (a *MockTrueFipsChecker) IsFipsEnabled() (bool, error) { |
| 47 | + return true, nil |
| 48 | +} |
| 49 | + |
| 50 | +type MockFalseFipsChecker struct{} |
| 51 | + |
| 52 | +func (a *MockFalseFipsChecker) IsFipsEnabled() (bool, error) { |
| 53 | + return false, nil |
| 54 | +} |
| 55 | + |
44 | 56 | func TestReconcileArgoCD_reconcileRepoDeployment_replicas(t *testing.T) { |
45 | 57 | logf.SetLogger(ZapLogger(true)) |
46 | 58 |
|
@@ -2875,3 +2887,72 @@ func TestSetReplicasAndEnvVar_WhenServerReplicasIsDefined(t *testing.T) { |
2875 | 2887 | }) |
2876 | 2888 |
|
2877 | 2889 | } |
| 2890 | + |
| 2891 | +func TestReconcileArgoCD_reconcileRepoServerWithFipsEnabled(t *testing.T) { |
| 2892 | + cr := makeTestArgoCD() |
| 2893 | + |
| 2894 | + resObjs := []client.Object{cr} |
| 2895 | + subresObjs := []client.Object{cr} |
| 2896 | + runtimeObjs := []runtime.Object{} |
| 2897 | + sch := makeTestReconcilerScheme(argoproj.AddToScheme) |
| 2898 | + cl := makeTestReconcilerClient(sch, resObjs, subresObjs, runtimeObjs) |
| 2899 | + r := makeTestReconciler(cl, sch) |
| 2900 | + r.FipsConfigChecker = &MockTrueFipsChecker{} |
| 2901 | + repoServerRemote := "https://remote.repo-server.instance" |
| 2902 | + |
| 2903 | + cr.Spec.Repo.Remote = &repoServerRemote |
| 2904 | + assert.NoError(t, r.reconcileRepoDeployment(cr, false)) |
| 2905 | + |
| 2906 | + d := &appsv1.Deployment{} |
| 2907 | + |
| 2908 | + assert.ErrorContains(t, r.Client.Get(context.TODO(), types.NamespacedName{Name: cr.Name + "-repo-server", Namespace: cr.Namespace}, d), |
| 2909 | + "deployments.apps \""+cr.Name+"-repo-server\" not found") |
| 2910 | + |
| 2911 | + // once remote is set to nil, reconciliation should trigger deployment resource creation |
| 2912 | + cr.Spec.Repo.Remote = nil |
| 2913 | + |
| 2914 | + assert.NoError(t, r.reconcileRepoDeployment(cr, false)) |
| 2915 | + assert.NoError(t, r.Client.Get(context.TODO(), types.NamespacedName{Name: cr.Name + "-repo-server", Namespace: cr.Namespace}, d)) |
| 2916 | + foundEnv := false |
| 2917 | + for _, env := range d.Spec.Template.Spec.Containers[0].Env { |
| 2918 | + if env.Name == "GODEBUG" { |
| 2919 | + foundEnv = true |
| 2920 | + assert.Equal(t, env.Value, "fips140=on", "GODEBUG environment must be set to fips140=on when fips is enabled") |
| 2921 | + } |
| 2922 | + } |
| 2923 | + assert.True(t, foundEnv, "environment GODEBUG must be set when FIPS is enabled") |
| 2924 | +} |
| 2925 | + |
| 2926 | +func TestReconcileArgoCD_reconcileRepoServerWithFipsDisabled(t *testing.T) { |
| 2927 | + cr := makeTestArgoCD() |
| 2928 | + |
| 2929 | + resObjs := []client.Object{cr} |
| 2930 | + subresObjs := []client.Object{cr} |
| 2931 | + runtimeObjs := []runtime.Object{} |
| 2932 | + sch := makeTestReconcilerScheme(argoproj.AddToScheme) |
| 2933 | + cl := makeTestReconcilerClient(sch, resObjs, subresObjs, runtimeObjs) |
| 2934 | + r := makeTestReconciler(cl, sch) |
| 2935 | + r.FipsConfigChecker = &MockFalseFipsChecker{} |
| 2936 | + repoServerRemote := "https://remote.repo-server.instance" |
| 2937 | + |
| 2938 | + cr.Spec.Repo.Remote = &repoServerRemote |
| 2939 | + assert.NoError(t, r.reconcileRepoDeployment(cr, false)) |
| 2940 | + |
| 2941 | + d := &appsv1.Deployment{} |
| 2942 | + |
| 2943 | + assert.ErrorContains(t, r.Client.Get(context.TODO(), types.NamespacedName{Name: cr.Name + "-repo-server", Namespace: cr.Namespace}, d), |
| 2944 | + "deployments.apps \""+cr.Name+"-repo-server\" not found") |
| 2945 | + |
| 2946 | + // once remote is set to nil, reconciliation should trigger deployment resource creation |
| 2947 | + cr.Spec.Repo.Remote = nil |
| 2948 | + |
| 2949 | + assert.NoError(t, r.reconcileRepoDeployment(cr, false)) |
| 2950 | + assert.NoError(t, r.Client.Get(context.TODO(), types.NamespacedName{Name: cr.Name + "-repo-server", Namespace: cr.Namespace}, d)) |
| 2951 | + foundEnv := false |
| 2952 | + for _, env := range d.Spec.Template.Spec.Containers[0].Env { |
| 2953 | + if env.Name == "GODEBUG" { |
| 2954 | + foundEnv = true |
| 2955 | + } |
| 2956 | + } |
| 2957 | + assert.False(t, foundEnv, "environment GODEBUG must NOT be set when FIPS is disabled") |
| 2958 | +} |
0 commit comments