github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/api/uniter/cloud_native_test.go (about) 1 // Copyright 2018 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package uniter_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 "gopkg.in/juju/environschema.v1" 10 11 "github.com/juju/juju/apiserver/facades/client/application" 12 ) 13 14 type cloudNativeUniterSuite struct { 15 uniterSuite 16 } 17 18 var _ = gc.Suite(&cloudNativeUniterSuite{}) 19 20 func (s *cloudNativeUniterSuite) SetUpTest(c *gc.C) { 21 s.uniterSuite.SetUpTest(c) 22 23 // Ensure the application is not trusted prior to tests. 24 s.setApplicationTrust(c, false) 25 } 26 27 // setApplicationTrust updates the configuration for the application unit to 28 // allow or deny access for cloud spec retrieval. 29 func (s *cloudNativeUniterSuite) setApplicationTrust(c *gc.C, trusted bool) { 30 conf := map[string]interface{}{application.TrustConfigOptionName: trusted} 31 fields := map[string]environschema.Attr{application.TrustConfigOptionName: {Type: environschema.Tbool}} 32 defaults := map[string]interface{}{application.TrustConfigOptionName: false} 33 err := s.wordpressApplication.UpdateApplicationConfig(conf, nil, fields, defaults) 34 c.Assert(err, jc.ErrorIsNil) 35 } 36 37 func (s *cloudNativeUniterSuite) TestCloudSpecErrorWhenUnauthorized(c *gc.C) { 38 result, err := s.uniter.CloudSpec() 39 c.Check(err, gc.ErrorMatches, "permission denied") 40 c.Check(result, gc.IsNil) 41 } 42 43 func (s *cloudNativeUniterSuite) TestGetCloudSpecReturnsSpecWhenTrusted(c *gc.C) { 44 s.setApplicationTrust(c, true) 45 46 result, err := s.uniter.CloudSpec() 47 c.Assert(err, jc.ErrorIsNil) 48 c.Check(result.Name, gc.Equals, "dummy") 49 50 exp := map[string]string{ 51 "username": "dummy", 52 "password": "secret", 53 } 54 c.Check(result.Credential.Attributes, gc.DeepEquals, exp) 55 }