github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/api/modelconfig/modelconfig_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package modelconfig_test
     5  
     6  import (
     7  	gitjujutesting "github.com/juju/testing"
     8  	jc "github.com/juju/testing/checkers"
     9  	gc "gopkg.in/check.v1"
    10  
    11  	basetesting "github.com/juju/juju/api/base/testing"
    12  	"github.com/juju/juju/api/modelconfig"
    13  	"github.com/juju/juju/apiserver/params"
    14  	"github.com/juju/juju/environs/config"
    15  )
    16  
    17  type modelconfigSuite struct {
    18  	gitjujutesting.IsolationSuite
    19  }
    20  
    21  var _ = gc.Suite(&modelconfigSuite{})
    22  
    23  func (s *modelconfigSuite) TestModelGet(c *gc.C) {
    24  	apiCaller := basetesting.APICallerFunc(
    25  		func(objType string,
    26  			version int,
    27  			id, request string,
    28  			a, result interface{},
    29  		) error {
    30  			c.Check(objType, gc.Equals, "ModelConfig")
    31  			c.Check(id, gc.Equals, "")
    32  			c.Check(request, gc.Equals, "ModelGet")
    33  			c.Check(a, gc.IsNil)
    34  			c.Assert(result, gc.FitsTypeOf, &params.ModelConfigResults{})
    35  			results := result.(*params.ModelConfigResults)
    36  			results.Config = map[string]params.ConfigValue{
    37  				"foo": {"bar", "model"},
    38  			}
    39  			return nil
    40  		},
    41  	)
    42  	client := modelconfig.NewClient(apiCaller)
    43  	result, err := client.ModelGet()
    44  	c.Assert(err, jc.ErrorIsNil)
    45  	c.Assert(result, jc.DeepEquals, map[string]interface{}{
    46  		"foo": "bar",
    47  	})
    48  }
    49  
    50  func (s *modelconfigSuite) TestModelGetWithMetadata(c *gc.C) {
    51  	apiCaller := basetesting.APICallerFunc(
    52  		func(objType string,
    53  			version int,
    54  			id, request string,
    55  			a, result interface{},
    56  		) error {
    57  			c.Check(objType, gc.Equals, "ModelConfig")
    58  			c.Check(id, gc.Equals, "")
    59  			c.Check(request, gc.Equals, "ModelGet")
    60  			c.Check(a, gc.IsNil)
    61  			c.Assert(result, gc.FitsTypeOf, &params.ModelConfigResults{})
    62  			results := result.(*params.ModelConfigResults)
    63  			results.Config = map[string]params.ConfigValue{
    64  				"foo": {"bar", "model"},
    65  			}
    66  			return nil
    67  		},
    68  	)
    69  	client := modelconfig.NewClient(apiCaller)
    70  	result, err := client.ModelGetWithMetadata()
    71  	c.Assert(err, jc.ErrorIsNil)
    72  	c.Assert(result, jc.DeepEquals, config.ConfigValues{
    73  		"foo": {"bar", "model"},
    74  	})
    75  }
    76  
    77  func (s *modelconfigSuite) TestModelSet(c *gc.C) {
    78  	called := false
    79  	apiCaller := basetesting.APICallerFunc(
    80  		func(objType string,
    81  			version int,
    82  			id, request string,
    83  			a, result interface{},
    84  		) error {
    85  			c.Check(objType, gc.Equals, "ModelConfig")
    86  			c.Check(id, gc.Equals, "")
    87  			c.Check(request, gc.Equals, "ModelSet")
    88  			c.Check(a, jc.DeepEquals, params.ModelSet{
    89  				Config: map[string]interface{}{
    90  					"some-name":  "value",
    91  					"other-name": true,
    92  				},
    93  			})
    94  			called = true
    95  			return nil
    96  		},
    97  	)
    98  	client := modelconfig.NewClient(apiCaller)
    99  	err := client.ModelSet(map[string]interface{}{
   100  		"some-name":  "value",
   101  		"other-name": true,
   102  	})
   103  	c.Assert(err, jc.ErrorIsNil)
   104  	c.Assert(called, jc.IsTrue)
   105  }
   106  
   107  func (s *modelconfigSuite) TestModelUnset(c *gc.C) {
   108  	called := false
   109  	apiCaller := basetesting.APICallerFunc(
   110  		func(objType string,
   111  			version int,
   112  			id, request string,
   113  			a, result interface{},
   114  		) error {
   115  			c.Check(objType, gc.Equals, "ModelConfig")
   116  			c.Check(id, gc.Equals, "")
   117  			c.Check(request, gc.Equals, "ModelUnset")
   118  			c.Check(a, jc.DeepEquals, params.ModelUnset{
   119  				Keys: []string{"foo", "bar"},
   120  			})
   121  			called = true
   122  			return nil
   123  		},
   124  	)
   125  	client := modelconfig.NewClient(apiCaller)
   126  	err := client.ModelUnset("foo", "bar")
   127  	c.Assert(err, jc.ErrorIsNil)
   128  	c.Assert(called, jc.IsTrue)
   129  }
   130  
   131  func (s *modelconfigSuite) TestSetSupport(c *gc.C) {
   132  	called := false
   133  	apiCaller := basetesting.APICallerFunc(
   134  		func(objType string,
   135  			version int,
   136  			id, request string,
   137  			a, result interface{},
   138  		) error {
   139  			c.Check(objType, gc.Equals, "ModelConfig")
   140  			c.Check(id, gc.Equals, "")
   141  			c.Check(request, gc.Equals, "SetSLALevel")
   142  			c.Check(a, jc.DeepEquals, params.ModelSLA{
   143  				ModelSLAInfo: params.ModelSLAInfo{
   144  					Level: "foobar",
   145  					Owner: "bob",
   146  				},
   147  				Credentials: []byte("creds"),
   148  			})
   149  			called = true
   150  			return nil
   151  		},
   152  	)
   153  	client := modelconfig.NewClient(apiCaller)
   154  	err := client.SetSLALevel("foobar", "bob", []byte("creds"))
   155  	c.Assert(err, jc.ErrorIsNil)
   156  	c.Assert(called, jc.IsTrue)
   157  }
   158  
   159  func (s *modelconfigSuite) TestGetSupport(c *gc.C) {
   160  	called := false
   161  	apiCaller := basetesting.APICallerFunc(
   162  		func(objType string,
   163  			version int,
   164  			id, request string,
   165  			a, result interface{},
   166  		) error {
   167  			c.Check(objType, gc.Equals, "ModelConfig")
   168  			c.Check(id, gc.Equals, "")
   169  			c.Check(request, gc.Equals, "SLALevel")
   170  			c.Check(a, jc.DeepEquals, nil)
   171  			results := result.(*params.StringResult)
   172  			results.Result = "level"
   173  			called = true
   174  			return nil
   175  		},
   176  	)
   177  	client := modelconfig.NewClient(apiCaller)
   178  	level, err := client.SLALevel()
   179  	c.Assert(err, jc.ErrorIsNil)
   180  	c.Assert(called, jc.IsTrue)
   181  	c.Assert(level, gc.Equals, "level")
   182  }
   183  
   184  func (s *modelconfigSuite) TestSequencesV1(c *gc.C) {
   185  	apiCaller := basetesting.BestVersionCaller{
   186  		basetesting.APICallerFunc(
   187  			func(_ string, _ int, _, _ string, _, _ interface{}) error {
   188  				c.Errorf("shoulnd't be called")
   189  				return nil
   190  			},
   191  		), 1} // facade version one
   192  	client := modelconfig.NewClient(apiCaller)
   193  	sequences, err := client.Sequences()
   194  	c.Assert(err, gc.ErrorMatches, "Sequences on v1 facade not supported")
   195  	c.Assert(sequences, gc.IsNil)
   196  }
   197  
   198  func (s *modelconfigSuite) TestSequences(c *gc.C) {
   199  	called := false
   200  	apiCaller := basetesting.BestVersionCaller{
   201  		basetesting.APICallerFunc(
   202  			func(objType string,
   203  				version int,
   204  				id, request string,
   205  				a, result interface{},
   206  			) error {
   207  				c.Check(objType, gc.Equals, "ModelConfig")
   208  				c.Check(id, gc.Equals, "")
   209  				c.Check(request, gc.Equals, "Sequences")
   210  				c.Check(a, jc.DeepEquals, nil)
   211  				results := result.(*params.ModelSequencesResult)
   212  				results.Sequences = map[string]int{"foo": 5, "bar": 2}
   213  				called = true
   214  				return nil
   215  			},
   216  		), 2}
   217  	client := modelconfig.NewClient(apiCaller)
   218  	sequences, err := client.Sequences()
   219  	c.Assert(err, jc.ErrorIsNil)
   220  	c.Assert(called, jc.IsTrue)
   221  	c.Assert(sequences, jc.DeepEquals, map[string]int{"foo": 5, "bar": 2})
   222  }