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  }