...

Source file src/edge-infra.dev/pkg/edge/datasync/couchdb/user_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 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  	// migrate
    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  	// this should be updated
    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  	// this should be updated
    89  	assert.Equal(t, updatedSecret.Data[SecretURI], userSecret.Data[SecretURI])
    90  }
    91  

View as plain text