Files
capsule/e2e/config_client_test.go
T
cc4fb45d70 feat: upstream enterprise preview (#1841)
feat: upstream enterprise preview

---------

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>
Co-authored-by: CorentinPtrl <pitrel.corentin@gmail.com>
2026-05-28 00:58:58 +02:00

91 lines
2.8 KiB
Go

package e2e
import (
"context"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
corev1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"sigs.k8s.io/controller-runtime/pkg/client"
capsulev1beta2 "github.com/projectcapsule/capsule/api/v1beta2"
"github.com/projectcapsule/capsule/pkg/api/meta"
"github.com/projectcapsule/capsule/pkg/runtime/configuration"
)
var _ = Describe("CapsuleConfiguration - ServiceAccountClient", Ordered, Label("config", "impersonation"), func() {
originalConfig := &capsulev1beta2.CapsuleConfiguration{}
BeforeEach(func() {
Expect(k8sClient.Get(context.Background(), client.ObjectKey{Name: defaultConfigurationName}, originalConfig)).To(Succeed())
})
AfterEach(func() {
ModifyCapsuleConfigurationOpts(func(configuration *capsulev1beta2.CapsuleConfiguration) {
configuration.Spec = originalConfig.Spec
})
})
It("sets skip TLS verify", func() {
ModifyCapsuleConfigurationOpts(func(configuration *capsulev1beta2.CapsuleConfiguration) {
configuration.Spec.Impersonation = capsulev1beta2.ServiceAccountClient{
SkipTLSVerify: true,
}
})
capsuleCfg := configuration.NewCapsuleConfiguration(context.TODO(), k8sClient, cfg, defaultConfigurationName)
clientCfg, err := capsuleCfg.ServiceAccountClient(context.TODO())
Expect(err).NotTo(HaveOccurred())
Expect(clientCfg.TLSClientConfig.Insecure).To(BeTrue())
})
It("loads CA from secret", func() {
caData := []byte("dummy-ca-data")
secret := &corev1.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: "custom-capsule-ca",
Namespace: "default",
},
Data: map[string][]byte{
"ca.crt": caData,
},
}
Expect(k8sClient.Create(context.TODO(), secret)).To(Succeed())
DeferCleanup(func() {
s := &corev1.Secret{}
err := k8sClient.Get(context.TODO(), types.NamespacedName{Name: secret.Name, Namespace: secret.Namespace}, s)
if err != nil {
if apierrors.IsNotFound(err) {
return
}
Expect(err).ToNot(HaveOccurred())
return
}
err = k8sClient.Delete(context.TODO(), s)
if err != nil && !apierrors.IsNotFound(err) {
Expect(err).ToNot(HaveOccurred())
}
})
// Create configuration pointing to the secret
ModifyCapsuleConfigurationOpts(func(configuration *capsulev1beta2.CapsuleConfiguration) {
configuration.Spec.Impersonation = capsulev1beta2.ServiceAccountClient{
CASecretName: meta.RFC1123Name(secret.Name),
CASecretNamespace: meta.RFC1123SubdomainName(secret.Namespace),
CASecretKey: "ca.crt",
}
})
cfg := configuration.NewCapsuleConfiguration(context.TODO(), k8sClient, cfg, defaultConfigurationName)
clientCfg, err := cfg.ServiceAccountClient(context.TODO())
Expect(err).NotTo(HaveOccurred())
Expect(clientCfg.TLSClientConfig.CAData).To(Equal(caData))
})
})