github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/caas/kubernetes/provider/credentials_test.go (about)

     1  // Copyright 2018 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package provider_test
     5  
     6  import (
     7  	"path/filepath"
     8  
     9  	"github.com/juju/testing"
    10  	jc "github.com/juju/testing/checkers"
    11  	"github.com/juju/utils"
    12  	gc "gopkg.in/check.v1"
    13  
    14  	"github.com/juju/juju/cloud"
    15  	"github.com/juju/juju/environs"
    16  	envtesting "github.com/juju/juju/environs/testing"
    17  )
    18  
    19  type credentialsSuite struct {
    20  	testing.FakeHomeSuite
    21  	provider environs.EnvironProvider
    22  }
    23  
    24  var _ = gc.Suite(&credentialsSuite{})
    25  
    26  func (s *credentialsSuite) SetUpTest(c *gc.C) {
    27  	s.FakeHomeSuite.SetUpTest(c)
    28  
    29  	var err error
    30  	s.provider, err = environs.Provider("kubernetes")
    31  	c.Assert(err, jc.ErrorIsNil)
    32  }
    33  
    34  func (s *credentialsSuite) TestCredentialSchemas(c *gc.C) {
    35  	envtesting.AssertProviderAuthTypes(c, s.provider, "userpass", "certificate", "oauth2withcert")
    36  }
    37  
    38  func (s *credentialsSuite) TestCredentialsValid(c *gc.C) {
    39  	envtesting.AssertProviderCredentialsValid(c, s.provider, "userpass", map[string]string{
    40  		"username": "fred",
    41  		"password": "secret",
    42  	})
    43  }
    44  
    45  func (s *credentialsSuite) TestHiddenAttributes(c *gc.C) {
    46  	envtesting.AssertProviderCredentialsAttributesHidden(c, s.provider, "userpass", "password")
    47  	envtesting.AssertProviderCredentialsAttributesHidden(c, s.provider, "oauth2withcert", "Token", "ClientKeyData")
    48  	envtesting.AssertProviderCredentialsAttributesHidden(c, s.provider, "certificate", "Token")
    49  }
    50  
    51  var singleConfigYAML = `
    52  apiVersion: v1
    53  kind: Config
    54  clusters:
    55  - cluster:
    56      server: https://1.1.1.1:8888
    57      certificate-authority-data: QQ==
    58    name: the-cluster
    59  contexts:
    60  - context:
    61      cluster: the-cluster
    62      user: the-user
    63    name: the-context
    64  current-context: the-context
    65  preferences: {}
    66  users:
    67  - name: the-user
    68    user:
    69      password: thepassword
    70      username: theuser
    71  `
    72  
    73  func (s *credentialsSuite) TestDetectCredentials(c *gc.C) {
    74  	kubeConfig := filepath.Join(utils.Home(), "config")
    75  	s.PatchEnvironment("KUBECONFIG", kubeConfig)
    76  	s.Home.AddFiles(c, testing.TestFile{
    77  		Name: "config",
    78  		Data: singleConfigYAML,
    79  	})
    80  	creds, err := s.provider.DetectCredentials()
    81  	c.Assert(err, jc.ErrorIsNil)
    82  	c.Assert(creds.DefaultRegion, gc.Equals, "")
    83  	expected := cloud.NewCredential(
    84  		cloud.UserPassAuthType, map[string]string{
    85  			"username": "theuser",
    86  			"password": "thepassword",
    87  		},
    88  	)
    89  	expected.Label = `kubernetes credential "the-user"`
    90  	c.Assert(creds.AuthCredentials["the-user"], jc.DeepEquals, expected)
    91  }