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  }