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 TestReplicationSecretMigration(t *testing.T) {
18 replicationSecret := &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, replicationSecret))
36
37 secretKey := client.ObjectKeyFromObject(replicationSecret)
38 replCreds := &ReplicationCredentials{UserCredentials: UserCredentials{
39 URI: SecretURIData,
40 }, DBName: SecretDBNameData}
41 _, err := replCreds.FromSecret(ctx, cl, secretKey)
42 assert.True(t, errors.Is(err, ErrCouchDBURIMissing))
43
44
45 updatedSecret, err := replCreds.ToSecret(ctx, cl, secretKey)
46 assert.NoError(t, err)
47
48 assert.Equal(t, updatedSecret.Data[SecretUsername], replicationSecret.Data[SecretUsername])
49 assert.Equal(t, updatedSecret.Data[SecretPassword], replicationSecret.Data[SecretPassword])
50 assert.True(t, len(updatedSecret.Data[SecretAdminsIni]) == 0)
51
52
53 assert.Equal(t, updatedSecret.Data[SecretURI], SecretURIData)
54 assert.Equal(t, updatedSecret.Data[SecretDBName], SecretDBNameData)
55 }
56
57 func TestReplicationSecretAlreadyMigrated(t *testing.T) {
58 replicationSecret := &corev1.Secret{
59 TypeMeta: metav1.TypeMeta{
60 APIVersion: "v1",
61 Kind: "Secret",
62 },
63 ObjectMeta: metav1.ObjectMeta{
64 Namespace: Namespace,
65 Name: StoreServerName,
66 },
67 Data: map[string][]byte{
68 SecretUsername: SecretUsernameData,
69 SecretPassword: SecretPasswordData,
70 SecretURI: SecretURIData,
71 SecretDBName: SecretDBNameData,
72 },
73 }
74 ctx := context.Background()
75 cl := fake.NewClientBuilder().Build()
76 assert.NoError(t, cl.Create(ctx, replicationSecret))
77
78 secretKey := client.ObjectKeyFromObject(replicationSecret)
79 replCreds := &ReplicationCredentials{UserCredentials: UserCredentials{
80 URI: SecretURIData,
81 }, DBName: SecretDBNameData}
82 _, err := replCreds.FromSecret(ctx, cl, secretKey)
83 assert.NoError(t, err)
84
85 updatedSecret := &corev1.Secret{}
86 assert.NoError(t, cl.Get(ctx, secretKey, updatedSecret))
87
88 assert.Equal(t, updatedSecret.Data[SecretUsername], replicationSecret.Data[SecretUsername])
89 assert.Equal(t, updatedSecret.Data[SecretPassword], replicationSecret.Data[SecretPassword])
90 assert.True(t, len(updatedSecret.Data[SecretAdminsIni]) == 0)
91
92
93 assert.Equal(t, updatedSecret.Data[SecretURI], replicationSecret.Data[SecretURI])
94 assert.Equal(t, updatedSecret.Data[SecretDBName], replicationSecret.Data[SecretDBName])
95 }
96
View as plain text