Skip to content

Commit d0e64ac

Browse files
geekifierpcallewaert
authored andcommitted
feat: unit tests for newSecretForCR
1 parent d6f12a3 commit d0e64ac

File tree

1 file changed

+138
-0
lines changed

1 file changed

+138
-0
lines changed
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
package postgresuser
2+
3+
import (
4+
"reflect"
5+
"testing"
6+
7+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
8+
9+
dbv1alpha1 "github.com/movetokube/postgres-operator/pkg/apis/db/v1alpha1"
10+
)
11+
12+
func TestNewSecretForCR_UserDefinedLabels(t *testing.T) {
13+
r := &ReconcilePostgresUser{
14+
pgHost: "localhost",
15+
keepSecretName: false,
16+
}
17+
cr := &dbv1alpha1.PostgresUser{
18+
ObjectMeta: metav1.ObjectMeta{
19+
Name: "myuser",
20+
Namespace: "myns",
21+
},
22+
Spec: dbv1alpha1.PostgresUserSpec{
23+
SecretName: "mysecret",
24+
Labels: map[string]string{
25+
"custom": "label",
26+
"foo": "bar",
27+
},
28+
Annotations: map[string]string{
29+
"anno": "value",
30+
},
31+
},
32+
Status: dbv1alpha1.PostgresUserStatus{
33+
DatabaseName: "somedb",
34+
},
35+
}
36+
secret, err := r.newSecretForCR(cr, "role1", "pass1", "login1")
37+
if err != nil {
38+
t.Fatalf("unexpected error: %v", err)
39+
}
40+
expectedLabels := map[string]string{
41+
"app": "myuser",
42+
"custom": "label",
43+
"foo": "bar",
44+
}
45+
if !reflect.DeepEqual(secret.Labels, expectedLabels) {
46+
t.Errorf("labels mismatch: got %v, want %v", secret.Labels, expectedLabels)
47+
}
48+
if secret.Annotations["anno"] != "value" {
49+
t.Errorf("annotations mismatch: got %v", secret.Annotations)
50+
}
51+
expectedName := "mysecret-myuser"
52+
if secret.Name != expectedName {
53+
t.Errorf("secret name mismatch: got %s, want %s", secret.Name, expectedName)
54+
}
55+
if secret.Namespace != "myns" {
56+
t.Errorf("secret namespace mismatch: got %s", secret.Namespace)
57+
}
58+
if string(secret.Data["ROLE"]) != "role1" {
59+
t.Errorf("secret data ROLE mismatch: got %s", secret.Data["ROLE"])
60+
}
61+
if string(secret.Data["PASSWORD"]) != "pass1" {
62+
t.Errorf("secret data PASSWORD mismatch: got %s", secret.Data["PASSWORD"])
63+
}
64+
if string(secret.Data["LOGIN"]) != "login1" {
65+
t.Errorf("secret data LOGIN mismatch: got %s", secret.Data["LOGIN"])
66+
}
67+
if string(secret.Data["DATABASE_NAME"]) != "somedb" {
68+
t.Errorf("secret data DATABASE_NAME mismatch: got %s", secret.Data["DATABASE_NAME"])
69+
}
70+
if string(secret.Data["HOST"]) != "localhost" {
71+
t.Errorf("secret data HOST mismatch: got %s", secret.Data["HOST"])
72+
}
73+
}
74+
75+
func TestNewSecretForCR_EmptyLabels(t *testing.T) {
76+
r := &ReconcilePostgresUser{
77+
pgHost: "localhost",
78+
keepSecretName: false,
79+
}
80+
cr := &dbv1alpha1.PostgresUser{
81+
ObjectMeta: metav1.ObjectMeta{
82+
Name: "myuser2",
83+
Namespace: "myns2",
84+
},
85+
Spec: dbv1alpha1.PostgresUserSpec{
86+
SecretName: "mysecret2",
87+
Labels: map[string]string{},
88+
},
89+
Status: dbv1alpha1.PostgresUserStatus{
90+
DatabaseName: "somedb2",
91+
},
92+
}
93+
secret, err := r.newSecretForCR(cr, "role2", "pass2", "login2")
94+
if err != nil {
95+
t.Fatalf("unexpected error: %v", err)
96+
}
97+
expectedLabels := map[string]string{
98+
"app": "myuser2",
99+
}
100+
if !reflect.DeepEqual(secret.Labels, expectedLabels) {
101+
t.Errorf("labels mismatch: got %v, want %v", secret.Labels, expectedLabels)
102+
}
103+
expectedName := "mysecret2-myuser2"
104+
if secret.Name != expectedName {
105+
t.Errorf("secret name mismatch: got %s, want %s", secret.Name, expectedName)
106+
}
107+
if secret.Namespace != "myns2" {
108+
t.Errorf("secret namespace mismatch: got %s", secret.Namespace)
109+
}
110+
}
111+
112+
func TestNewSecretForCR_KeepSecretName(t *testing.T) {
113+
r := &ReconcilePostgresUser{
114+
pgHost: "localhost",
115+
keepSecretName: true,
116+
}
117+
cr := &dbv1alpha1.PostgresUser{
118+
ObjectMeta: metav1.ObjectMeta{
119+
Name: "myuser3",
120+
Namespace: "myns3",
121+
},
122+
Spec: dbv1alpha1.PostgresUserSpec{
123+
SecretName: "mysecret3",
124+
Labels: map[string]string{},
125+
},
126+
Status: dbv1alpha1.PostgresUserStatus{
127+
DatabaseName: "somedb3",
128+
},
129+
}
130+
secret, err := r.newSecretForCR(cr, "role3", "pass3", "login3")
131+
if err != nil {
132+
t.Fatalf("unexpected error: %v", err)
133+
}
134+
expectedName := "mysecret3"
135+
if secret.Name != expectedName {
136+
t.Errorf("secret name mismatch with keepSecretName: got %s, want %s", secret.Name, expectedName)
137+
}
138+
}

0 commit comments

Comments
 (0)