Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/install/installer/pkg/components/usage/deployment_test.go
2501 views
1
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
2
/// Licensed under the GNU Affero General Public License (AGPL).
3
// See License.AGPL.txt in the project root for license information.
4
5
package usage
6
7
import (
8
"testing"
9
10
"github.com/stretchr/testify/require"
11
appsv1 "k8s.io/api/apps/v1"
12
corev1 "k8s.io/api/core/v1"
13
)
14
15
func TestDeployment_ContainsDBEnvVars(t *testing.T) {
16
ctx := renderContextWithUsageEnabled(t)
17
18
objs, err := deployment(ctx)
19
require.NoError(t, err)
20
21
dpl, ok := objs[0].(*appsv1.Deployment)
22
require.True(t, ok)
23
24
containers := dpl.Spec.Template.Spec.Containers
25
require.Len(t, containers, 2)
26
27
usageContainer := containers[0]
28
secretRef := corev1.LocalObjectReference{Name: ctx.Config.Database.CloudSQL.ServiceAccount.Name}
29
30
require.Contains(t, usageContainer.Env, corev1.EnvVar{
31
Name: "DB_HOST",
32
Value: "cloudsqlproxy",
33
})
34
require.Contains(t, usageContainer.Env, corev1.EnvVar{
35
Name: "DB_PORT",
36
Value: "3306",
37
})
38
require.Contains(t, usageContainer.Env, corev1.EnvVar{
39
Name: "DB_PASSWORD",
40
ValueFrom: &corev1.EnvVarSource{SecretKeyRef: &corev1.SecretKeySelector{
41
LocalObjectReference: secretRef,
42
Key: "password",
43
}},
44
})
45
require.Contains(t, usageContainer.Env, corev1.EnvVar{
46
Name: "DB_USERNAME",
47
ValueFrom: &corev1.EnvVarSource{SecretKeyRef: &corev1.SecretKeySelector{
48
LocalObjectReference: secretRef,
49
Key: "username",
50
}},
51
})
52
}
53
54
func TestDeployment_EnablesPaymentWhenAStripeSecretIsPresent(t *testing.T) {
55
ctx := renderContextWithStripeSecretSet(t)
56
57
objs, err := deployment(ctx)
58
require.NoError(t, err)
59
60
dpl, ok := objs[0].(*appsv1.Deployment)
61
require.True(t, ok)
62
63
spec := dpl.Spec
64
require.Contains(t, spec.Template.Spec.Volumes, corev1.Volume{
65
Name: "stripe-secret",
66
VolumeSource: corev1.VolumeSource{
67
Secret: &corev1.SecretVolumeSource{
68
SecretName: "some-stripe-secret",
69
},
70
},
71
})
72
73
containers := dpl.Spec.Template.Spec.Containers
74
require.Len(t, containers, 2)
75
76
usageContainer := containers[0]
77
78
require.Contains(t, usageContainer.VolumeMounts, corev1.VolumeMount{
79
Name: "stripe-secret",
80
MountPath: stripeSecretMountPath,
81
ReadOnly: true,
82
})
83
}
84
85
func TestDeployment_DisablesPaymentWhenAStripeSecretIsNotPresent(t *testing.T) {
86
ctx := renderContextWithUsageEnabled(t)
87
88
objs, err := deployment(ctx)
89
require.NoError(t, err)
90
91
dpl, ok := objs[0].(*appsv1.Deployment)
92
require.True(t, ok)
93
94
containers := dpl.Spec.Template.Spec.Containers
95
require.Len(t, containers, 2)
96
97
usageContainer := containers[0]
98
99
for _, arg := range usageContainer.Args {
100
require.NotContains(t, arg, "--stripe-secret-path")
101
}
102
}
103
104