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 }