Path: blob/main/install/installer/pkg/components/usage/deployment_test.go
2501 views
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.1/// Licensed under the GNU Affero General Public License (AGPL).2// See License.AGPL.txt in the project root for license information.34package usage56import (7"testing"89"github.com/stretchr/testify/require"10appsv1 "k8s.io/api/apps/v1"11corev1 "k8s.io/api/core/v1"12)1314func TestDeployment_ContainsDBEnvVars(t *testing.T) {15ctx := renderContextWithUsageEnabled(t)1617objs, err := deployment(ctx)18require.NoError(t, err)1920dpl, ok := objs[0].(*appsv1.Deployment)21require.True(t, ok)2223containers := dpl.Spec.Template.Spec.Containers24require.Len(t, containers, 2)2526usageContainer := containers[0]27secretRef := corev1.LocalObjectReference{Name: ctx.Config.Database.CloudSQL.ServiceAccount.Name}2829require.Contains(t, usageContainer.Env, corev1.EnvVar{30Name: "DB_HOST",31Value: "cloudsqlproxy",32})33require.Contains(t, usageContainer.Env, corev1.EnvVar{34Name: "DB_PORT",35Value: "3306",36})37require.Contains(t, usageContainer.Env, corev1.EnvVar{38Name: "DB_PASSWORD",39ValueFrom: &corev1.EnvVarSource{SecretKeyRef: &corev1.SecretKeySelector{40LocalObjectReference: secretRef,41Key: "password",42}},43})44require.Contains(t, usageContainer.Env, corev1.EnvVar{45Name: "DB_USERNAME",46ValueFrom: &corev1.EnvVarSource{SecretKeyRef: &corev1.SecretKeySelector{47LocalObjectReference: secretRef,48Key: "username",49}},50})51}5253func TestDeployment_EnablesPaymentWhenAStripeSecretIsPresent(t *testing.T) {54ctx := renderContextWithStripeSecretSet(t)5556objs, err := deployment(ctx)57require.NoError(t, err)5859dpl, ok := objs[0].(*appsv1.Deployment)60require.True(t, ok)6162spec := dpl.Spec63require.Contains(t, spec.Template.Spec.Volumes, corev1.Volume{64Name: "stripe-secret",65VolumeSource: corev1.VolumeSource{66Secret: &corev1.SecretVolumeSource{67SecretName: "some-stripe-secret",68},69},70})7172containers := dpl.Spec.Template.Spec.Containers73require.Len(t, containers, 2)7475usageContainer := containers[0]7677require.Contains(t, usageContainer.VolumeMounts, corev1.VolumeMount{78Name: "stripe-secret",79MountPath: stripeSecretMountPath,80ReadOnly: true,81})82}8384func TestDeployment_DisablesPaymentWhenAStripeSecretIsNotPresent(t *testing.T) {85ctx := renderContextWithUsageEnabled(t)8687objs, err := deployment(ctx)88require.NoError(t, err)8990dpl, ok := objs[0].(*appsv1.Deployment)91require.True(t, ok)9293containers := dpl.Spec.Template.Spec.Containers94require.Len(t, containers, 2)9596usageContainer := containers[0]9798for _, arg := range usageContainer.Args {99require.NotContains(t, arg, "--stripe-secret-path")100}101}102103104