github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/caas/kubernetes/clientconfig/base_test.go (about) 1 // Copyright 2019 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package clientconfig_test 5 6 import ( 7 "github.com/golang/mock/gomock" 8 gc "gopkg.in/check.v1" 9 k8serrors "k8s.io/apimachinery/pkg/api/errors" 10 "k8s.io/apimachinery/pkg/runtime/schema" 11 clientcmdapi "k8s.io/client-go/tools/clientcmd/api" 12 13 "github.com/juju/juju/caas/kubernetes/provider/mocks" 14 "github.com/juju/juju/testing" 15 ) 16 17 type BaseSuite struct { 18 testing.BaseSuite 19 20 namespace string 21 22 k8sClient *mocks.MockInterface 23 mockRbacV1 *mocks.MockRbacV1Interface 24 mockClusterRoles *mocks.MockClusterRoleInterface 25 mockClusterRoleBinding *mocks.MockClusterRoleBindingInterface 26 mockServiceAccounts *mocks.MockServiceAccountInterface 27 mockSecrets *mocks.MockSecretInterface 28 } 29 30 func (s *BaseSuite) SetUpSuite(c *gc.C) { 31 s.BaseSuite.SetUpSuite(c) 32 s.namespace = "test" 33 } 34 35 func (s *BaseSuite) setupBroker(c *gc.C) *gomock.Controller { 36 ctrl := gomock.NewController(c) 37 s.k8sClient = mocks.NewMockInterface(ctrl) 38 39 mockCoreV1 := mocks.NewMockCoreV1Interface(ctrl) 40 s.k8sClient.EXPECT().CoreV1().AnyTimes().Return(mockCoreV1) 41 42 s.mockServiceAccounts = mocks.NewMockServiceAccountInterface(ctrl) 43 mockCoreV1.EXPECT().ServiceAccounts(s.namespace).AnyTimes().Return(s.mockServiceAccounts) 44 45 s.mockSecrets = mocks.NewMockSecretInterface(ctrl) 46 mockCoreV1.EXPECT().Secrets(s.namespace).AnyTimes().Return(s.mockSecrets) 47 48 s.mockRbacV1 = mocks.NewMockRbacV1Interface(ctrl) 49 s.k8sClient.EXPECT().RbacV1().AnyTimes().Return(s.mockRbacV1) 50 51 s.mockClusterRoles = mocks.NewMockClusterRoleInterface(ctrl) 52 s.mockRbacV1.EXPECT().ClusterRoles().AnyTimes().Return(s.mockClusterRoles) 53 54 s.mockClusterRoleBinding = mocks.NewMockClusterRoleBindingInterface(ctrl) 55 s.mockRbacV1.EXPECT().ClusterRoleBindings().AnyTimes().Return(s.mockClusterRoleBinding) 56 57 return ctrl 58 } 59 60 func (s *BaseSuite) k8sNotFoundError() *k8serrors.StatusError { 61 return k8serrors.NewNotFound(schema.GroupResource{}, "test") 62 } 63 64 func (s *BaseSuite) k8sAlreadyExistsError() *k8serrors.StatusError { 65 return k8serrors.NewAlreadyExists(schema.GroupResource{}, "test") 66 } 67 68 func newClientConfig() *clientcmdapi.Config { 69 cfg := clientcmdapi.NewConfig() 70 cfg.Preferences.Colors = true 71 cfg.Clusters["alfa"] = &clientcmdapi.Cluster{ 72 Server: "https://alfa.org:8080", 73 InsecureSkipTLSVerify: true, 74 CertificateAuthority: "path/to/my/cert-ca-filename", 75 } 76 cfg.Clusters["bravo"] = &clientcmdapi.Cluster{ 77 Server: "https://bravo.org:8080", 78 InsecureSkipTLSVerify: false, 79 } 80 cfg.AuthInfos["white-mage-via-cert"] = &clientcmdapi.AuthInfo{ 81 ClientCertificate: "path/to/my/client-cert-filename", 82 ClientKey: "path/to/my/client-key-filename", 83 } 84 cfg.AuthInfos["red-mage-via-token"] = &clientcmdapi.AuthInfo{ 85 Token: "my-secret-token", 86 } 87 cfg.AuthInfos["black-mage-via-auth-provider"] = &clientcmdapi.AuthInfo{ 88 AuthProvider: &clientcmdapi.AuthProviderConfig{ 89 Name: "gcp", 90 Config: map[string]string{ 91 "foo": "bar", 92 "token": "s3cr3t-t0k3n", 93 }, 94 }, 95 } 96 cfg.Contexts["bravo-as-black-mage"] = &clientcmdapi.Context{ 97 Cluster: "bravo", 98 AuthInfo: "black-mage-via-auth-provider", 99 Namespace: "yankee", 100 } 101 cfg.Contexts["alfa-as-black-mage"] = &clientcmdapi.Context{ 102 Cluster: "alfa", 103 AuthInfo: "black-mage-via-auth-provider", 104 Namespace: "zulu", 105 } 106 cfg.Contexts["alfa-as-white-mage"] = &clientcmdapi.Context{ 107 Cluster: "alfa", 108 AuthInfo: "white-mage-via-cert", 109 } 110 cfg.CurrentContext = "alfa-as-white-mage" 111 return cfg 112 }