mirror of
https://github.com/gitpod-io/gitpod.git
synced 2025-12-08 17:36:30 +00:00
103 lines
2.6 KiB
Go
103 lines
2.6 KiB
Go
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
|
|
/// Licensed under the GNU Affero General Public License (AGPL).
|
|
// See License.AGPL.txt in the project root for license information.
|
|
|
|
package usage
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
appsv1 "k8s.io/api/apps/v1"
|
|
corev1 "k8s.io/api/core/v1"
|
|
)
|
|
|
|
func TestDeployment_ContainsDBEnvVars(t *testing.T) {
|
|
ctx := renderContextWithUsageEnabled(t)
|
|
|
|
objs, err := deployment(ctx)
|
|
require.NoError(t, err)
|
|
|
|
dpl, ok := objs[0].(*appsv1.Deployment)
|
|
require.True(t, ok)
|
|
|
|
containers := dpl.Spec.Template.Spec.Containers
|
|
require.Len(t, containers, 2)
|
|
|
|
usageContainer := containers[0]
|
|
secretRef := corev1.LocalObjectReference{Name: ctx.Config.Database.CloudSQL.ServiceAccount.Name}
|
|
|
|
require.Contains(t, usageContainer.Env, corev1.EnvVar{
|
|
Name: "DB_HOST",
|
|
Value: "cloudsqlproxy",
|
|
})
|
|
require.Contains(t, usageContainer.Env, corev1.EnvVar{
|
|
Name: "DB_PORT",
|
|
Value: "3306",
|
|
})
|
|
require.Contains(t, usageContainer.Env, corev1.EnvVar{
|
|
Name: "DB_PASSWORD",
|
|
ValueFrom: &corev1.EnvVarSource{SecretKeyRef: &corev1.SecretKeySelector{
|
|
LocalObjectReference: secretRef,
|
|
Key: "password",
|
|
}},
|
|
})
|
|
require.Contains(t, usageContainer.Env, corev1.EnvVar{
|
|
Name: "DB_USERNAME",
|
|
ValueFrom: &corev1.EnvVarSource{SecretKeyRef: &corev1.SecretKeySelector{
|
|
LocalObjectReference: secretRef,
|
|
Key: "username",
|
|
}},
|
|
})
|
|
}
|
|
|
|
func TestDeployment_EnablesPaymentWhenAStripeSecretIsPresent(t *testing.T) {
|
|
ctx := renderContextWithStripeSecretSet(t)
|
|
|
|
objs, err := deployment(ctx)
|
|
require.NoError(t, err)
|
|
|
|
dpl, ok := objs[0].(*appsv1.Deployment)
|
|
require.True(t, ok)
|
|
|
|
spec := dpl.Spec
|
|
require.Contains(t, spec.Template.Spec.Volumes, corev1.Volume{
|
|
Name: "stripe-secret",
|
|
VolumeSource: corev1.VolumeSource{
|
|
Secret: &corev1.SecretVolumeSource{
|
|
SecretName: "some-stripe-secret",
|
|
},
|
|
},
|
|
})
|
|
|
|
containers := dpl.Spec.Template.Spec.Containers
|
|
require.Len(t, containers, 2)
|
|
|
|
usageContainer := containers[0]
|
|
|
|
require.Contains(t, usageContainer.VolumeMounts, corev1.VolumeMount{
|
|
Name: "stripe-secret",
|
|
MountPath: stripeSecretMountPath,
|
|
ReadOnly: true,
|
|
})
|
|
}
|
|
|
|
func TestDeployment_DisablesPaymentWhenAStripeSecretIsNotPresent(t *testing.T) {
|
|
ctx := renderContextWithUsageEnabled(t)
|
|
|
|
objs, err := deployment(ctx)
|
|
require.NoError(t, err)
|
|
|
|
dpl, ok := objs[0].(*appsv1.Deployment)
|
|
require.True(t, ok)
|
|
|
|
containers := dpl.Spec.Template.Spec.Containers
|
|
require.Len(t, containers, 2)
|
|
|
|
usageContainer := containers[0]
|
|
|
|
for _, arg := range usageContainer.Args {
|
|
require.NotContains(t, arg, "--stripe-secret-path")
|
|
}
|
|
}
|