1 package couchdb
2
3 import (
4 "context"
5 "errors"
6 "testing"
7
8 "github.com/stretchr/testify/assert"
9
10 corev1 "k8s.io/api/core/v1"
11 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
12
13 "sigs.k8s.io/controller-runtime/pkg/client"
14 "sigs.k8s.io/controller-runtime/pkg/client/fake"
15 )
16
17 func TestUserMigration(t *testing.T) {
18 userSecret := &corev1.Secret{
19 TypeMeta: metav1.TypeMeta{
20 APIVersion: "v1",
21 Kind: "Secret",
22 },
23 ObjectMeta: metav1.ObjectMeta{
24 Namespace: Namespace,
25 Name: StoreServerName,
26 },
27 Data: map[string][]byte{
28 SecretUsername: SecretUsernameData,
29 SecretPassword: SecretPasswordData,
30 SecretAdminsIni: SecretAdminsIniData,
31 },
32 }
33 ctx := context.Background()
34 cl := fake.NewClientBuilder().Build()
35 assert.NoError(t, cl.Create(ctx, userSecret))
36
37 secretKey := client.ObjectKeyFromObject(userSecret)
38 userCreds := &UserCredentials{URI: SecretURIData}
39 secret, err := userCreds.FromSecret(ctx, cl, secretKey)
40 assert.True(t, errors.Is(err, ErrCouchDBURIMissing))
41 assert.Nil(t, secret)
42
43
44 updatedSecret, err := userCreds.ToSecret(ctx, cl, secretKey)
45 assert.NoError(t, err)
46
47 assert.Equal(t, updatedSecret.Data[SecretUsername], userSecret.Data[SecretUsername])
48 assert.Equal(t, updatedSecret.Data[SecretPassword], userSecret.Data[SecretPassword])
49 assert.True(t, len(updatedSecret.Data[SecretAdminsIni]) == 0)
50
51
52 assert.Equal(t, updatedSecret.Data[SecretURI], SecretURIData)
53 }
54
55 func TestUserAlreadyMigrated(t *testing.T) {
56 userSecret := &corev1.Secret{
57 TypeMeta: metav1.TypeMeta{
58 APIVersion: "v1",
59 Kind: "Secret",
60 },
61 ObjectMeta: metav1.ObjectMeta{
62 Namespace: Namespace,
63 Name: StoreServerName,
64 },
65 Data: map[string][]byte{
66 SecretUsername: SecretUsernameData,
67 SecretPassword: SecretPasswordData,
68 SecretURI: SecretURIData,
69 },
70 }
71 ctx := context.Background()
72 cl := fake.NewClientBuilder().Build()
73 assert.NoError(t, cl.Create(ctx, userSecret))
74
75 secretKey := client.ObjectKeyFromObject(userSecret)
76 userCreds := &UserCredentials{URI: SecretURIData}
77 secret, err := userCreds.FromSecret(ctx, cl, secretKey)
78 assert.NoError(t, err)
79 assert.NotNil(t, secret)
80
81 updatedSecret := &corev1.Secret{}
82 assert.NoError(t, cl.Get(ctx, secretKey, updatedSecret))
83
84 assert.Equal(t, updatedSecret.Data[SecretUsername], userSecret.Data[SecretUsername])
85 assert.Equal(t, updatedSecret.Data[SecretPassword], userSecret.Data[SecretPassword])
86 assert.True(t, len(updatedSecret.Data[SecretAdminsIni]) == 0)
87
88
89 assert.Equal(t, updatedSecret.Data[SecretURI], userSecret.Data[SecretURI])
90 }
91
View as plain text