github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/cmd/juju/caas/export_test.go (about)

     1  // Copyright 2018 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package caas
     5  
     6  import (
     7  	"bytes"
     8  	"io"
     9  
    10  	"github.com/juju/cmd"
    11  
    12  	"github.com/juju/juju/caas/kubernetes/clientconfig"
    13  	jujucmdcloud "github.com/juju/juju/cmd/juju/cloud"
    14  	"github.com/juju/juju/cmd/modelcmd"
    15  	"github.com/juju/juju/jujuclient"
    16  )
    17  
    18  func NewAddCAASCommandForTest(
    19  	cloudMetadataStore CloudMetadataStore,
    20  	fileCredentialStore jujuclient.CredentialStore,
    21  	clientStore jujuclient.ClientStore,
    22  	addCloudAPIFunc func() (AddCloudAPI, error),
    23  	brokerGetter BrokerGetter,
    24  	k8sCluster k8sCluster,
    25  	newClientConfigReaderFunc func(string) (clientconfig.ClientConfigFunc, error),
    26  	getAllCloudDetails func() (map[string]*jujucmdcloud.CloudDetails, error),
    27  ) cmd.Command {
    28  	cmd := &AddCAASCommand{
    29  		cloudMetadataStore:    cloudMetadataStore,
    30  		fileCredentialStore:   fileCredentialStore,
    31  		addCloudAPIFunc:       addCloudAPIFunc,
    32  		brokerGetter:          brokerGetter,
    33  		k8sCluster:            k8sCluster,
    34  		newClientConfigReader: newClientConfigReaderFunc,
    35  		getAllCloudDetails:    getAllCloudDetails,
    36  	}
    37  	cmd.SetClientStore(clientStore)
    38  	return modelcmd.WrapController(cmd)
    39  }
    40  
    41  func NewRemoveCAASCommandForTest(
    42  	cloudMetadataStore CloudMetadataStore,
    43  	fileCredentialStore jujuclient.CredentialStore,
    44  	clientStore jujuclient.ClientStore,
    45  	removeCloudAPIFunc func() (RemoveCloudAPI, error),
    46  ) cmd.Command {
    47  	cmd := &RemoveCAASCommand{
    48  		cloudMetadataStore:  cloudMetadataStore,
    49  		fileCredentialStore: fileCredentialStore,
    50  		apiFunc:             removeCloudAPIFunc,
    51  	}
    52  	cmd.SetClientStore(clientStore)
    53  	return modelcmd.WrapController(cmd)
    54  }
    55  
    56  type K8sBrokerRegionLister = k8sBrokerRegionLister
    57  
    58  type fakeCluster struct {
    59  	CommandRunner
    60  
    61  	cloudType string
    62  	config    string
    63  }
    64  
    65  type readerCloser struct {
    66  	io.Reader
    67  }
    68  
    69  func (*readerCloser) Close() error {
    70  	return nil
    71  }
    72  
    73  func (f *fakeCluster) getKubeConfig(p *clusterParams) (io.ReadCloser, string, error) {
    74  	return &readerCloser{bytes.NewBuffer([]byte(f.config))}, "the-cluster", nil
    75  }
    76  
    77  func (*fakeCluster) interactiveParams(ctx *cmd.Context, p *clusterParams) (*clusterParams, error) {
    78  	return p, nil
    79  }
    80  
    81  func (f *fakeCluster) cloud() string {
    82  	return f.cloudType
    83  }
    84  
    85  func FakeCluster(config string) k8sCluster {
    86  	return &fakeCluster{config: config, cloudType: "gce"}
    87  }