github.com/olli-ai/jx/v2@v2.0.400-0.20210921045218-14731b4dd448/pkg/kube/vault/commonhelpers_test.go (about) 1 // +build unit 2 3 package vault_test 4 5 import ( 6 "testing" 7 8 "github.com/banzaicloud/bank-vaults/operator/pkg/apis/vault/v1alpha1" 9 "github.com/banzaicloud/bank-vaults/operator/pkg/client/clientset/versioned/fake" 10 cmdMocks "github.com/olli-ai/jx/v2/pkg/cmd/clients/mocks" 11 "github.com/olli-ai/jx/v2/pkg/cmd/opts" 12 "github.com/olli-ai/jx/v2/pkg/cmd/testhelpers" 13 gits_test "github.com/olli-ai/jx/v2/pkg/gits/mocks" 14 helm_test "github.com/olli-ai/jx/v2/pkg/helm/mocks" 15 kubevault "github.com/olli-ai/jx/v2/pkg/kube/vault" 16 . "github.com/petergtz/pegomock" 17 "github.com/stretchr/testify/assert" 18 "gopkg.in/AlecAivazis/survey.v1/terminal" 19 v1 "k8s.io/api/core/v1" 20 "k8s.io/api/extensions/v1beta1" 21 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 22 23 "k8s.io/client-go/kubernetes" 24 ) 25 26 func setupMocks(t *testing.T, term *terminal.Stdio) (*fake.Clientset, *kubevault.VaultClientFactory, kubernetes.Interface, error) { 27 commonOpts := opts.NewCommonOptionsWithFactory(cmdMocks.NewMockFactory()) 28 options := &commonOpts 29 if term != nil { 30 options.In, options.Out, options.Err = term.In, term.Out, term.Err 31 } 32 testhelpers.ConfigureTestOptions(options, gits_test.NewMockGitter(), helm_test.NewMockHelmer()) 33 vaultOperatorClient := fake.NewSimpleClientset() 34 When(options.VaultOperatorClient()).ThenReturn(vaultOperatorClient, nil) 35 f, err := kubevault.NewInteractiveVaultClientFactory(options) 36 kubeClient, err := options.KubeClient() 37 assert.NoError(t, err) 38 return vaultOperatorClient, f, kubeClient, err 39 } 40 41 func createMockedVault(vaultName string, namespace string, vaultUrl string, jwt string, 42 vaultOperatorClient *fake.Clientset, kubeClient kubernetes.Interface) v1alpha1.Vault { 43 44 role := map[string]interface{}{"name": vaultName + "-auth-sa"} 45 auth := map[string]interface{}{"roles": []interface{}{role}} 46 v := v1alpha1.Vault{ 47 ObjectMeta: metav1.ObjectMeta{ 48 Name: vaultName, 49 Namespace: namespace, 50 }, 51 Spec: v1alpha1.VaultSpec{ 52 ExternalConfig: map[string]interface{}{ 53 "auth": []interface{}{auth}, 54 }, 55 }, 56 } 57 secretName := vaultName + "-secret" 58 _, _ = vaultOperatorClient.VaultV1alpha1().Vaults(namespace).Create(&v) 59 serviceAccountName := vaultName + "-auth-sa" 60 _, _ = kubeClient.CoreV1().ServiceAccounts(namespace).Create(&v1.ServiceAccount{ 61 ObjectMeta: metav1.ObjectMeta{Name: serviceAccountName}, 62 Secrets: []v1.ObjectReference{{Name: secretName}}, 63 }) 64 _, _ = kubeClient.CoreV1().Services(namespace).Create(&v1.Service{ObjectMeta: metav1.ObjectMeta{Name: vaultName}}) 65 _, _ = kubeClient.ExtensionsV1beta1().Ingresses(namespace).Create(&v1beta1.Ingress{ 66 ObjectMeta: metav1.ObjectMeta{Name: vaultName}, 67 Spec: v1beta1.IngressSpec{Rules: []v1beta1.IngressRule{{Host: vaultUrl}}}, 68 }) 69 _, _ = kubeClient.CoreV1().Secrets(namespace).Create(&v1.Secret{ 70 ObjectMeta: metav1.ObjectMeta{ 71 Name: secretName, 72 Annotations: map[string]string{"kubernetes.io/service-account.name": serviceAccountName}, 73 }, 74 Data: map[string][]byte{"token": []byte(jwt)}, 75 }) 76 return v 77 }