44 "bytes"
55 "context"
66 "errors"
7+ "strings"
78 "testing"
89
910 "github.com/kyma-project/cli.v3/internal/diagnostics"
@@ -79,25 +80,35 @@ func TestWriteVerboseError(t *testing.T) {
7980func TestEnrichMetadataWithShootInfo (t * testing.T ) {
8081 // Test cases
8182 testCases := []struct {
82- name string
83- shootInfoExists bool
84- provider string
85- kubernetesVersion string
86- verbose bool
83+ name string
84+ shootInfoExists bool
85+ shootInfoConfigMap * corev1.ConfigMap
86+ verbose bool
8787 }{
8888 {
89- name : "Should enrich metadata when shoot-info ConfigMap exists" ,
90- shootInfoExists : true ,
91- provider : "azure" ,
92- kubernetesVersion : "1.26.0" ,
93- verbose : false ,
89+ name : "Should enrich metadata when shoot-info ConfigMap exists" ,
90+ shootInfoExists : true ,
91+ shootInfoConfigMap : & corev1.ConfigMap {
92+ ObjectMeta : metav1.ObjectMeta {
93+ Name : "shoot-info" ,
94+ Namespace : "kube-system" ,
95+ },
96+ Data : map [string ]string {
97+ "provider" : "azure" ,
98+ "kubernetesVersion" : "1.26.0" ,
99+ "domain" : "c-513b462.sample-domain.com" ,
100+ "region" : "westeurope" ,
101+ "shootName" : "c-513b462" ,
102+ "extensions" : "extension-1,extension-2,extension-3" ,
103+ },
104+ },
105+ verbose : false ,
94106 },
95107 {
96- name : "Should not enrich metadata when shoot-info ConfigMap does not exist" ,
97- shootInfoExists : false ,
98- provider : "" ,
99- kubernetesVersion : "" ,
100- verbose : true ,
108+ name : "Should not enrich metadata when shoot-info ConfigMap does not exist" ,
109+ shootInfoExists : false ,
110+ shootInfoConfigMap : & corev1.ConfigMap {},
111+ verbose : true ,
101112 },
102113 }
103114
@@ -112,17 +123,10 @@ func TestEnrichMetadataWithShootInfo(t *testing.T) {
112123
113124 // Create the ConfigMap if needed for the test case
114125 if tc .shootInfoExists {
115- shootInfoCM := & corev1.ConfigMap {
116- ObjectMeta : metav1.ObjectMeta {
117- Name : "shoot-info" ,
118- Namespace : "kube-system" ,
119- },
120- Data : map [string ]string {
121- "provider" : tc .provider ,
122- "kubernetesVersion" : tc .kubernetesVersion ,
123- },
124- }
125- _ , err := fakeClient .CoreV1 ().ConfigMaps ("kube-system" ).Create (context .TODO (), shootInfoCM , metav1.CreateOptions {})
126+ _ , err := fakeClient .
127+ CoreV1 ().
128+ ConfigMaps ("kube-system" ).
129+ Create (context .TODO (), tc .shootInfoConfigMap , metav1.CreateOptions {})
126130 assert .NoError (t , err )
127131 }
128132
@@ -133,8 +137,12 @@ func TestEnrichMetadataWithShootInfo(t *testing.T) {
133137
134138 // Then
135139 if tc .shootInfoExists {
136- assert .Equal (t , tc .provider , metadata .Provider )
137- assert .Equal (t , tc .kubernetesVersion , metadata .KubernetesVersion )
140+ assert .Equal (t , tc .shootInfoConfigMap .Data ["provider" ], metadata .Provider )
141+ assert .Equal (t , tc .shootInfoConfigMap .Data ["kubernetesVersion" ], metadata .KubernetesVersion )
142+ assert .Equal (t , tc .shootInfoConfigMap .Data ["domain" ], metadata .ClusterDomain )
143+ assert .Equal (t , tc .shootInfoConfigMap .Data ["region" ], metadata .Region )
144+ assert .Equal (t , tc .shootInfoConfigMap .Data ["shootName" ], metadata .ShootName )
145+ assert .Equal (t , tc .shootInfoConfigMap .Data ["extensions" ], strings .Join (metadata .GardenerExtensions , "," ))
138146 assert .Empty (t , writer .String ()) // No errors should be written
139147 } else {
140148 assert .Empty (t , metadata .Provider )
@@ -294,3 +302,98 @@ func TestEnrichMetadataWithKymaProvisioningInfo(t *testing.T) {
294302 })
295303 }
296304}
305+
306+ func TestEnrichMetadataWithSapBtpManagerSecret (t * testing.T ) {
307+ testCases := []struct {
308+ name string
309+ secretExists bool
310+ secret * corev1.Secret
311+ expectedClusterID string
312+ verbose bool
313+ expectedErrorOutput string
314+ }{
315+ {
316+ name : "Should enrich metadata when sap-btp-manager secret exists with cluster_id" ,
317+ secretExists : true ,
318+ secret : & corev1.Secret {
319+ ObjectMeta : metav1.ObjectMeta {
320+ Name : "sap-btp-manager" ,
321+ Namespace : "kyma-system" ,
322+ },
323+ Data : map [string ][]byte {
324+ "cluster_id" : []byte ("test-cluster-123" ),
325+ },
326+ },
327+ expectedClusterID : "test-cluster-123" ,
328+ verbose : false ,
329+ },
330+ {
331+ name : "Should not enrich metadata when sap-btp-manager secret exists but cluster_id is missing" ,
332+ secretExists : true ,
333+ secret : & corev1.Secret {
334+ ObjectMeta : metav1.ObjectMeta {
335+ Name : "sap-btp-manager" ,
336+ Namespace : "kyma-system" ,
337+ },
338+ Data : map [string ][]byte {
339+ "other_data" : []byte ("some-value" ),
340+ },
341+ },
342+ expectedClusterID : "" ,
343+ verbose : false ,
344+ },
345+ {
346+ name : "Should handle missing sap-btp-manager secret gracefully" ,
347+ secretExists : false ,
348+ secret : nil ,
349+ expectedClusterID : "" ,
350+ verbose : true ,
351+ expectedErrorOutput : "Failed to get sap-btp-manager secret" ,
352+ },
353+ {
354+ name : "Should handle empty cluster_id data" ,
355+ secretExists : true ,
356+ secret : & corev1.Secret {
357+ ObjectMeta : metav1.ObjectMeta {
358+ Name : "sap-btp-manager" ,
359+ Namespace : "kyma-system" ,
360+ },
361+ Data : map [string ][]byte {
362+ "cluster_id" : []byte ("" ),
363+ },
364+ },
365+ expectedClusterID : "" ,
366+ verbose : false ,
367+ },
368+ }
369+
370+ for _ , tc := range testCases {
371+ t .Run (tc .name , func (t * testing.T ) {
372+ // Given
373+ var writer bytes.Buffer
374+ fakeClient := fake .NewSimpleClientset ()
375+ kubeClient := & kube_fake.KubeClient {
376+ TestKubernetesInterface : fakeClient ,
377+ }
378+
379+ if tc .secretExists {
380+ _ , err := fakeClient .CoreV1 ().Secrets ("kyma-system" ).Create (context .TODO (), tc .secret , metav1.CreateOptions {})
381+ assert .NoError (t , err )
382+ }
383+
384+ collector := diagnostics .NewMetadataCollector (kubeClient , & writer , tc .verbose )
385+
386+ // When
387+ metadata := collector .Run (context .TODO ())
388+
389+ // Then
390+ assert .Equal (t , tc .expectedClusterID , metadata .ClusterID )
391+
392+ if tc .expectedErrorOutput != "" && tc .verbose {
393+ assert .Contains (t , writer .String (), tc .expectedErrorOutput )
394+ } else if ! tc .verbose {
395+ assert .Empty (t , writer .String ())
396+ }
397+ })
398+ }
399+ }
0 commit comments