...

Source file src/edge-infra.dev/pkg/edge/datasync/couchdb/replication_secret_migration_test.go

Documentation: edge-infra.dev/pkg/edge/datasync/couchdb

     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  	// migrate
    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  	// this should be updated
    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  	// this should be updated
    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