/* Copyright 2020 VMware, Inc. SPDX-License-Identifier: Apache-2.0 */ package library import ( "testing" "github.com/stretchr/testify/require" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" clientcmdapi "k8s.io/client-go/tools/clientcmd/api" placeholdernameclientset "github.com/suzerain-io/placeholder-name/kubernetes/1.19/client-go/clientset/versioned" ) func NewClientConfig(t *testing.T) *rest.Config { t.Helper() return newClientConfigWithOverrides(t, &clientcmd.ConfigOverrides{}) } func NewClientConfigWithCertAndKey(t *testing.T, cert, key string) *rest.Config { t.Helper() return newClientConfigWithOverrides(t, &clientcmd.ConfigOverrides{ AuthInfo: clientcmdapi.AuthInfo{ ClientCertificateData: []byte(cert), ClientKeyData: []byte(key), }, }) } func newClientConfigWithOverrides(t *testing.T, overrides *clientcmd.ConfigOverrides) *rest.Config { t.Helper() loader := clientcmd.NewDefaultClientConfigLoadingRules() clientConfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loader, overrides) config, err := clientConfig.ClientConfig() require.NoError(t, err) return config } func NewClientset(t *testing.T) kubernetes.Interface { t.Helper() return NewClientsetWithConfig(t, NewClientConfig(t)) } func NewClientsetWithConfig(t *testing.T, config *rest.Config) kubernetes.Interface { t.Helper() result, err := kubernetes.NewForConfig(config) require.NoError(t, err, "unexpected failure from kubernetes.NewForConfig()") return result } func NewPlaceholderNameClientset(t *testing.T) placeholdernameclientset.Interface { t.Helper() return placeholdernameclientset.NewForConfigOrDie(NewClientConfig(t)) }