99 profilev1 "github.com/kubeflow/kubeflow/components/profile-controller/api/v1"
1010 "github.com/stretchr/testify/assert"
1111 corev1 "k8s.io/api/core/v1"
12+ rbacv1 "k8s.io/api/rbac/v1"
1213 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1314 "k8s.io/apimachinery/pkg/runtime"
1415 ctrl "sigs.k8s.io/controller-runtime"
@@ -22,6 +23,25 @@ type namespaceLabelSuite struct {
2223
2324func TestEnforceNamespaceLabelsFromConfig (t * testing.T ) {
2425 name := "test-namespace"
26+
27+ // Create a minimal ProfileReconciler for testing
28+ reconciler := & ProfileReconciler {
29+ ServiceMeshMode : "istio-sidecar" , // Test sidecar mode
30+ }
31+
32+ // Create a minimal profile for testing
33+ profile := & profilev1.Profile {
34+ ObjectMeta : metav1.ObjectMeta {
35+ Name : name ,
36+ },
37+ Spec : profilev1.ProfileSpec {
38+ Owner : rbacv1.Subject {
39+ Kind : "User" ,
40+ Name : "test-user" ,
41+ },
42+ },
43+ }
44+
2545 tests := []namespaceLabelSuite {
2646 namespaceLabelSuite {
2747 corev1.Namespace {
@@ -42,6 +62,7 @@ func TestEnforceNamespaceLabelsFromConfig(t *testing.T) {
4262 "serving.kubeflow.org/inferenceservice" : "enabled" ,
4363 "pipelines.kubeflow.org/enabled" : "true" ,
4464 "app.kubernetes.io/part-of" : "kubeflow-profile" ,
65+ "istio-injection" : "enabled" , // Added by service mesh logic
4566 },
4667 Name : name ,
4768 },
@@ -68,9 +89,10 @@ func TestEnforceNamespaceLabelsFromConfig(t *testing.T) {
6889 Labels : map [string ]string {
6990 "user-name" : "Jim" ,
7091 "katib.kubeflow.org/metrics-collector-injection" : "enabled" ,
71- "serving.kubeflow.org/inferenceservice" : "disabled" ,
92+ "serving.kubeflow.org/inferenceservice" : "disabled" , // Existing label preserved
7293 "pipelines.kubeflow.org/enabled" : "true" ,
7394 "app.kubernetes.io/part-of" : "kubeflow-profile" ,
95+ "istio-injection" : "enabled" , // Added by service mesh logic
7496 },
7597 Name : name ,
7698 },
@@ -101,14 +123,16 @@ func TestEnforceNamespaceLabelsFromConfig(t *testing.T) {
101123 "serving.kubeflow.org/inferenceservice" : "enabled" ,
102124 "pipelines.kubeflow.org/enabled" : "true" ,
103125 "app.kubernetes.io/part-of" : "kubeflow-profile" ,
126+ "istio-injection" : "enabled" , // Added by service mesh logic
127+ // "removal-label" should be removed due to empty value
104128 },
105129 Name : name ,
106130 },
107131 },
108132 },
109133 }
110134 for _ , test := range tests {
111- setNamespaceLabels (& test .current , test .labels )
135+ reconciler . setNamespaceLabelsAndServiceMesh (& test .current , profile , test .labels )
112136 if ! reflect .DeepEqual (& test .expected , & test .current ) {
113137 t .Errorf ("Expect:\n %v; Output:\n %v" , & test .expected , & test .current )
114138 }
0 commit comments