@@ -4,9 +4,10 @@ import (
44 "archive/tar"
55 "bytes"
66 "compress/gzip"
7- "context "
7+ "encoding/base64 "
88 "errors"
99 "fmt"
10+ "os"
1011 "testing"
1112 "time"
1213
@@ -23,6 +24,8 @@ import (
2324 corev1 "k8s.io/api/core/v1"
2425 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2526 "k8s.io/client-go/kubernetes/scheme"
27+ metadatafake "k8s.io/client-go/metadata/fake"
28+ "sigs.k8s.io/controller-runtime/pkg/client"
2629 "sigs.k8s.io/controller-runtime/pkg/client/fake"
2730 kyaml "sigs.k8s.io/yaml"
2831)
@@ -89,6 +92,25 @@ func TestAppInstallManager_Install(t *testing.T) {
8992 }),
9093 }
9194
95+ // Create registry settings for testing image pull secret creation
96+ dockerConfigJSON := `{"auths":{"registry.example.com":{"auth":"dXNlcjpwYXNz"}}}`
97+ registrySettings := & types.RegistrySettings {
98+ ImagePullSecretName : "test-pull-secret" ,
99+ ImagePullSecretValue : base64 .StdEncoding .EncodeToString ([]byte (dockerConfigJSON )),
100+ }
101+
102+ // Create a temp CA bundle file for testing
103+ caContent := "-----BEGIN CERTIFICATE-----\n test-ca-content\n -----END CERTIFICATE-----"
104+ tmpCAFile , err := os .CreateTemp ("" , "ca-bundle-*.crt" )
105+ require .NoError (t , err )
106+ defer os .Remove (tmpCAFile .Name ())
107+ _ , err = tmpCAFile .WriteString (caContent )
108+ require .NoError (t , err )
109+ tmpCAFile .Close ()
110+
111+ // Create fake metadata client for CA configmap creation
112+ fakeMcli := metadatafake .NewSimpleMetadataClient (metadatafake .NewTestScheme ())
113+
92114 // Create mock helm client that validates pre-processed values
93115 mockHelmClient := & helm.MockClient {}
94116
@@ -137,14 +159,34 @@ func TestAppInstallManager_Install(t *testing.T) {
137159 WithHelmClient (mockHelmClient ),
138160 WithLogger (logger .NewDiscardLogger ()),
139161 WithKubeClient (fakeKcli ),
162+ WithMetadataClient (fakeMcli ),
140163 )
141164 require .NoError (t , err )
142165
143- // Run installation with InstallableHelmCharts
144- err = manager .Install (context . Background (), installableCharts , nil , "" )
166+ // Run installation with registry settings and host CA bundle path
167+ err = manager .Install (t . Context (), installableCharts , registrySettings , tmpCAFile . Name () )
145168 require .NoError (t , err )
146169
147170 mockHelmClient .AssertExpectations (t )
171+
172+ // Verify image pull secret was created in the app namespace
173+ secret := & corev1.Secret {}
174+ err = fakeKcli .Get (t .Context (), client.ObjectKey {
175+ Namespace : "test-app" ,
176+ Name : "test-pull-secret" ,
177+ }, secret )
178+ require .NoError (t , err )
179+ assert .Equal (t , corev1 .SecretTypeDockerConfigJson , secret .Type )
180+ assert .Equal (t , dockerConfigJSON , string (secret .Data [".dockerconfigjson" ]))
181+
182+ // Verify CA configmap was created in the app namespace
183+ configMap := & corev1.ConfigMap {}
184+ err = fakeKcli .Get (t .Context (), client.ObjectKey {
185+ Namespace : "test-app" ,
186+ Name : "kotsadm-private-cas" ,
187+ }, configMap )
188+ require .NoError (t , err )
189+ assert .Contains (t , configMap .Data ["ca_0.crt" ], "test-ca-content" )
148190 })
149191
150192 t .Run ("Install updates status correctly" , func (t * testing.T ) {
0 commit comments