Skip to content

Commit d130bdc

Browse files
committed
tests
1 parent 1204741 commit d130bdc

File tree

3 files changed

+511
-24
lines changed

3 files changed

+511
-24
lines changed

api/internal/managers/app/install/install_test.go

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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-----\ntest-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

Comments
 (0)