github.com/olli-ai/jx/v2@v2.0.400-0.20210921045218-14731b4dd448/pkg/io/secrets/secret_locations_test.go (about) 1 // +build unit 2 3 package secrets 4 5 import ( 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 v1 "k8s.io/api/core/v1" 10 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 11 "k8s.io/client-go/kubernetes/fake" 12 ) 13 14 const ns = "Galaxy" 15 16 func TestSecretsLocation(t *testing.T) { 17 t.Parallel() 18 19 kubeClient := createMockCluster() 20 secretLocation := NewSecretLocation(kubeClient, ns) 21 22 err := secretLocation.SetLocation(VaultLocationKind, true) 23 assert.NoError(t, err) 24 25 // Test we have actually added the item to the configmap 26 configMap, err := kubeClient.CoreV1().ConfigMaps(ns).Get("jx-install-config", metav1.GetOptions{}) 27 assert.NoError(t, err) 28 assert.Equal(t, string(VaultLocationKind), configMap.Data[SecretsLocationKey]) 29 // Test we haven't overwritten the configmap 30 assert.Equal(t, "two", configMap.Data["one"]) 31 assert.Equal(t, VaultLocationKind, secretLocation.Location()) 32 33 err = secretLocation.SetLocation(FileSystemLocationKind, true) 34 assert.NoError(t, err) 35 36 configMap, err = kubeClient.CoreV1().ConfigMaps(ns).Get("jx-install-config", metav1.GetOptions{}) 37 assert.NoError(t, err) 38 assert.Equal(t, string(FileSystemLocationKind), configMap.Data[SecretsLocationKey]) 39 // Test we haven't overwritten the configmap 40 assert.Equal(t, "two", configMap.Data["one"]) 41 assert.NotEqual(t, VaultLocationKind, secretLocation.Location()) 42 } 43 44 func TestSecretsLocation_NoJxInstallConfigMap(t *testing.T) { 45 t.Parallel() 46 47 kubeClient := fake.NewSimpleClientset() 48 secretLocation := NewSecretLocation(kubeClient, ns) 49 50 err := secretLocation.SetLocation(VaultLocationKind, true) 51 assert.NoError(t, err) 52 53 // Test we have actually added the item to the configmap 54 configMap, err := kubeClient.CoreV1().ConfigMaps(ns).Get("jx-install-config", metav1.GetOptions{}) 55 assert.NoError(t, err) 56 assert.Equal(t, string(VaultLocationKind), configMap.Data[SecretsLocationKey]) 57 assert.Equal(t, VaultLocationKind, secretLocation.Location()) 58 59 err = secretLocation.SetLocation(FileSystemLocationKind, true) 60 assert.NoError(t, err) 61 62 configMap, err = kubeClient.CoreV1().ConfigMaps(ns).Get("jx-install-config", metav1.GetOptions{}) 63 assert.NoError(t, err) 64 assert.Equal(t, string(FileSystemLocationKind), configMap.Data[SecretsLocationKey]) 65 assert.NotEqual(t, VaultLocationKind, secretLocation.Location()) 66 } 67 68 func TestSecretsLocation_UpdateFromJxInstallConfigMap(t *testing.T) { 69 t.Parallel() 70 71 kubeClient := createMockCluster() 72 secretLocation := NewSecretLocation(kubeClient, ns) 73 74 err := secretLocation.SetLocation(FileSystemLocationKind, false) 75 assert.NoError(t, err) 76 77 configMap, err := kubeClient.CoreV1().ConfigMaps(ns).Get("jx-install-config", metav1.GetOptions{}) 78 assert.NoError(t, err) 79 assert.Equal(t, "", configMap.Data[SecretsLocationKey]) 80 configMap.Data[SecretsLocationKey] = string(VaultLocationKind) 81 configMap, err = kubeClient.CoreV1().ConfigMaps(ns).Update(configMap) 82 assert.NoError(t, err) 83 84 assert.Equal(t, VaultLocationKind, secretLocation.Location()) 85 86 err = secretLocation.SetLocation(FileSystemLocationKind, false) 87 assert.NoError(t, err) 88 configMap, err = kubeClient.CoreV1().ConfigMaps(ns).Get("jx-install-config", metav1.GetOptions{}) 89 assert.NoError(t, err) 90 assert.Equal(t, string(VaultLocationKind), configMap.Data[SecretsLocationKey]) 91 } 92 93 func createMockCluster() *fake.Clientset { 94 namespace := &v1.Namespace{ 95 ObjectMeta: metav1.ObjectMeta{ 96 Name: ns, 97 }, 98 } 99 configMap := &v1.ConfigMap{ 100 ObjectMeta: metav1.ObjectMeta{ 101 Name: "jx-install-config", 102 Namespace: ns, 103 }, 104 Data: map[string]string{"one": "two"}, 105 } 106 kubeClient := fake.NewSimpleClientset(namespace, configMap) 107 return kubeClient 108 }