Skip to content

Commit aa6435a

Browse files
committed
(psa) add unit test cases for registry pod config
This PR adds unit tests to test the pod+container securityContext configs introduced in #2854
1 parent edffd9c commit aa6435a

File tree

1 file changed

+78
-17
lines changed

1 file changed

+78
-17
lines changed

pkg/controller/registry/reconciler/reconciler_test.go

+78-17
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"github.com/stretchr/testify/require"
77
corev1 "k8s.io/api/core/v1"
88
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
9+
"k8s.io/utils/pointer"
910

1011
"github.com/operator-framework/api/pkg/operators/v1alpha1"
1112
)
@@ -80,26 +81,86 @@ func TestPullPolicy(t *testing.T) {
8081
}
8182

8283
func TestPodContainerSecurityContext(t *testing.T) {
83-
expectedReadOnlyRootFilesystem := false
84-
allowPrivilegeEscalation := false
85-
expectedContainerSecCtx := &corev1.SecurityContext{
86-
ReadOnlyRootFilesystem: &expectedReadOnlyRootFilesystem,
87-
AllowPrivilegeEscalation: &allowPrivilegeEscalation,
88-
Capabilities: &corev1.Capabilities{
89-
Drop: []corev1.Capability{"ALL"},
90-
},
91-
}
9284

93-
catsrc := &v1alpha1.CatalogSource{
94-
ObjectMeta: metav1.ObjectMeta{
95-
Name: "test",
96-
Namespace: "testns",
85+
testcases := []struct {
86+
title string
87+
inputCatsrc *v1alpha1.CatalogSource
88+
expectedSecurityContext *corev1.PodSecurityContext
89+
expectedContainerSecurityContext *corev1.SecurityContext
90+
}{
91+
{
92+
title: "NoSpecDefined/PodContainsSecurityConfigForPSARestricted",
93+
inputCatsrc: &v1alpha1.CatalogSource{
94+
ObjectMeta: metav1.ObjectMeta{
95+
Name: "test",
96+
Namespace: "testns",
97+
},
98+
},
99+
expectedContainerSecurityContext: &corev1.SecurityContext{
100+
ReadOnlyRootFilesystem: pointer.Bool(false),
101+
AllowPrivilegeEscalation: pointer.Bool(false),
102+
Capabilities: &corev1.Capabilities{
103+
Drop: []corev1.Capability{"ALL"},
104+
},
105+
},
106+
expectedSecurityContext: &corev1.PodSecurityContext{
107+
SeccompProfile: &corev1.SeccompProfile{Type: corev1.SeccompProfileTypeRuntimeDefault},
108+
RunAsUser: pointer.Int64(workloadUserID),
109+
RunAsNonRoot: pointer.Bool(true),
110+
},
111+
},
112+
{
113+
title: "SpecDefined/SecurityContextConfig:Restricted/PodContainsSecurityConfigForPSARestricted",
114+
inputCatsrc: &v1alpha1.CatalogSource{
115+
ObjectMeta: metav1.ObjectMeta{
116+
Name: "test",
117+
Namespace: "testns",
118+
},
119+
Spec: v1alpha1.CatalogSourceSpec{
120+
GrpcPodConfig: &v1alpha1.GrpcPodConfig{
121+
SecurityContextConfig: v1alpha1.Restricted,
122+
},
123+
},
124+
},
125+
expectedContainerSecurityContext: &corev1.SecurityContext{
126+
ReadOnlyRootFilesystem: pointer.Bool(false),
127+
AllowPrivilegeEscalation: pointer.Bool(false),
128+
Capabilities: &corev1.Capabilities{
129+
Drop: []corev1.Capability{"ALL"},
130+
},
131+
},
132+
expectedSecurityContext: &corev1.PodSecurityContext{
133+
SeccompProfile: &corev1.SeccompProfile{Type: corev1.SeccompProfileTypeRuntimeDefault},
134+
RunAsUser: pointer.Int64(workloadUserID),
135+
RunAsNonRoot: pointer.Bool(true),
136+
},
137+
},
138+
{
139+
title: "SpecDefined/SecurityContextConfig:Legacy/PodDoesNotContainsSecurityConfig",
140+
inputCatsrc: &v1alpha1.CatalogSource{
141+
ObjectMeta: metav1.ObjectMeta{
142+
Name: "test",
143+
Namespace: "testns",
144+
},
145+
Spec: v1alpha1.CatalogSourceSpec{
146+
GrpcPodConfig: &v1alpha1.GrpcPodConfig{
147+
SecurityContextConfig: v1alpha1.Legacy,
148+
},
149+
},
150+
},
151+
expectedContainerSecurityContext: nil,
152+
expectedSecurityContext: nil,
97153
},
98154
}
99-
100-
gotPod := Pod(catsrc, "hello", "busybox", "", map[string]string{}, map[string]string{}, int32(0), int32(0), int64(workloadUserID))
101-
gotContainerSecCtx := gotPod.Spec.Containers[0].SecurityContext
102-
require.Equal(t, expectedContainerSecCtx, gotContainerSecCtx)
155+
for _, testcase := range testcases {
156+
outputPod := Pod(testcase.inputCatsrc, "hello", "busybox", "", map[string]string{}, map[string]string{}, int32(0), int32(0), int64(workloadUserID))
157+
if testcase.expectedSecurityContext != nil {
158+
require.Equal(t, testcase.expectedSecurityContext, outputPod.Spec.SecurityContext)
159+
}
160+
if testcase.expectedContainerSecurityContext != nil {
161+
require.Equal(t, testcase.expectedContainerSecurityContext, outputPod.Spec.Containers[0].SecurityContext)
162+
}
163+
}
103164
}
104165

105166
// TestPodAvoidsConcurrentWrite is a regression test for

0 commit comments

Comments
 (0)