11//
2- // Copyright (c) 2019-2024 Red Hat, Inc.
2+ // Copyright (c) 2019-2025 Red Hat, Inc.
33// This program and the accompanying materials are made
44// available under the terms of the Eclipse Public License 2.0
55// which is available at https://www.eclipse.org/legal/epl-2.0/
@@ -31,6 +31,63 @@ import (
3131 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3232)
3333
34+ func TestRecreateObjectIfAlreadyExists (t * testing.T ) {
35+ // Actual object in a user namespace
36+ srcObject := & corev1.ConfigMap {
37+ TypeMeta : metav1.TypeMeta {
38+ Kind : "ConfigMap" ,
39+ APIVersion : "v1" ,
40+ },
41+ ObjectMeta : metav1.ObjectMeta {
42+ Name : "test" ,
43+ Namespace : "user-che" ,
44+ },
45+ Data : map [string ]string {
46+ "key" : "value" ,
47+ },
48+ }
49+
50+ // Expected object in a user namespace
51+ dstObject := & corev1.ConfigMap {
52+ TypeMeta : metav1.TypeMeta {
53+ Kind : "ConfigMap" ,
54+ APIVersion : "v1" ,
55+ },
56+ ObjectMeta : metav1.ObjectMeta {
57+ Name : "test" ,
58+ Namespace : "user-che" ,
59+ },
60+ Data : map [string ]string {
61+ "new-key" : "new-value" ,
62+ },
63+ }
64+
65+ ctx := test .GetDeployContext (nil , []runtime.Object {srcObject })
66+
67+ workspaceConfigReconciler := NewWorkspacesConfigReconciler (
68+ ctx .ClusterAPI .Client ,
69+ ctx .ClusterAPI .Client ,
70+ ctx .ClusterAPI .Scheme ,
71+ NewNamespaceCache (ctx .ClusterAPI .NonCachingClient ))
72+
73+ syncContext := & syncContext {
74+ dstNamespace : "user-che" ,
75+ srcNamespace : "eclipse-che" ,
76+ object2Sync : & configMap2Sync {cm : srcObject },
77+ syncConfig : map [string ]string {},
78+ }
79+
80+ err := workspaceConfigReconciler .doCreateObject (syncContext , dstObject )
81+ assert .NoError (t , err )
82+
83+ cm := & corev1.ConfigMap {}
84+ exists , err := deploy .Get (ctx , types.NamespacedName {Namespace : "user-che" , Name : "test" }, cm )
85+ assert .NoError (t , err )
86+ assert .True (t , exists )
87+ assert .Equal (t , 1 , len (cm .Data ))
88+ assert .Equal (t , "new-value" , cm .Data ["new-key" ])
89+ }
90+
3491func TestDeleteIfObjectIsObsolete (t * testing.T ) {
3592 ctx := test .GetDeployContext (nil , []runtime.Object {
3693 & corev1.ConfigMap {
@@ -46,6 +103,7 @@ func TestDeleteIfObjectIsObsolete(t *testing.T) {
46103 })
47104
48105 workspaceConfigReconciler := NewWorkspacesConfigReconciler (
106+ ctx .ClusterAPI .Client ,
49107 ctx .ClusterAPI .Client ,
50108 ctx .ClusterAPI .Scheme ,
51109 NewNamespaceCache (ctx .ClusterAPI .NonCachingClient ))
@@ -103,6 +161,7 @@ func TestGetEmptySyncConfig(t *testing.T) {
103161 ctx := test .GetDeployContext (nil , []runtime.Object {})
104162
105163 workspaceConfigReconciler := NewWorkspacesConfigReconciler (
164+ ctx .ClusterAPI .Client ,
106165 ctx .ClusterAPI .Client ,
107166 ctx .ClusterAPI .Scheme ,
108167 NewNamespaceCache (ctx .ClusterAPI .NonCachingClient ))
0 commit comments