github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/api/client/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  	jc "github.com/juju/testing/checkers"
     8  	"go.uber.org/mock/gomock"
     9  	gc "gopkg.in/check.v1"
    10  
    11  	basemocks "github.com/juju/juju/api/base/mocks"
    12  	"github.com/juju/juju/api/client/modelconfig"
    13  	"github.com/juju/juju/core/constraints"
    14  	"github.com/juju/juju/environs/config"
    15  	"github.com/juju/juju/rpc/params"
    16  )
    17  
    18  type modelconfigSuite struct{}
    19  
    20  var _ = gc.Suite(&modelconfigSuite{})
    21  
    22  func (s *modelconfigSuite) TestModelGet(c *gc.C) {
    23  	ctrl := gomock.NewController(c)
    24  	defer ctrl.Finish()
    25  
    26  	var args interface{}
    27  	res := new(params.ModelConfigResults)
    28  	results := params.ModelConfigResults{
    29  		Config: map[string]params.ConfigValue{
    30  			"foo": {"bar", "model"},
    31  		},
    32  	}
    33  	mockFacadeCaller := basemocks.NewMockFacadeCaller(ctrl)
    34  	mockFacadeCaller.EXPECT().FacadeCall("ModelGet", args, res).SetArg(2, results).Return(nil)
    35  	client := modelconfig.NewClientFromCaller(mockFacadeCaller)
    36  	result, err := client.ModelGet()
    37  	c.Assert(err, jc.ErrorIsNil)
    38  	c.Assert(result, jc.DeepEquals, map[string]interface{}{
    39  		"foo": "bar",
    40  	})
    41  }
    42  
    43  func (s *modelconfigSuite) TestModelGetWithMetadata(c *gc.C) {
    44  	ctrl := gomock.NewController(c)
    45  	defer ctrl.Finish()
    46  
    47  	var args interface{}
    48  	res := new(params.ModelConfigResults)
    49  	results := params.ModelConfigResults{
    50  		Config: map[string]params.ConfigValue{
    51  			"foo": {"bar", "model"},
    52  		},
    53  	}
    54  	mockFacadeCaller := basemocks.NewMockFacadeCaller(ctrl)
    55  	mockFacadeCaller.EXPECT().FacadeCall("ModelGet", args, res).SetArg(2, results).Return(nil)
    56  	client := modelconfig.NewClientFromCaller(mockFacadeCaller)
    57  	result, err := client.ModelGetWithMetadata()
    58  	c.Assert(err, jc.ErrorIsNil)
    59  	c.Assert(result, jc.DeepEquals, config.ConfigValues{
    60  		"foo": {"bar", "model"},
    61  	})
    62  }
    63  
    64  func (s *modelconfigSuite) TestModelSet(c *gc.C) {
    65  	ctrl := gomock.NewController(c)
    66  	defer ctrl.Finish()
    67  
    68  	var res interface{}
    69  	args := params.ModelSet{
    70  		Config: map[string]interface{}{
    71  			"some-name":  "value",
    72  			"other-name": true,
    73  		},
    74  	}
    75  	mockFacadeCaller := basemocks.NewMockFacadeCaller(ctrl)
    76  	mockFacadeCaller.EXPECT().FacadeCall("ModelSet", args, res).Return(nil)
    77  	client := modelconfig.NewClientFromCaller(mockFacadeCaller)
    78  	err := client.ModelSet(map[string]interface{}{
    79  		"some-name":  "value",
    80  		"other-name": true,
    81  	})
    82  	c.Assert(err, jc.ErrorIsNil)
    83  }
    84  
    85  func (s *modelconfigSuite) TestModelUnset(c *gc.C) {
    86  	ctrl := gomock.NewController(c)
    87  	defer ctrl.Finish()
    88  
    89  	var res interface{}
    90  	args := params.ModelUnset{
    91  		Keys: []string{"foo", "bar"},
    92  	}
    93  	mockFacadeCaller := basemocks.NewMockFacadeCaller(ctrl)
    94  	mockFacadeCaller.EXPECT().FacadeCall("ModelUnset", args, res).Return(nil)
    95  	client := modelconfig.NewClientFromCaller(mockFacadeCaller)
    96  	err := client.ModelUnset("foo", "bar")
    97  	c.Assert(err, jc.ErrorIsNil)
    98  }
    99  
   100  func (s *modelconfigSuite) TestSetSupport(c *gc.C) {
   101  	ctrl := gomock.NewController(c)
   102  	defer ctrl.Finish()
   103  
   104  	var res interface{}
   105  	args := params.ModelSLA{
   106  		ModelSLAInfo: params.ModelSLAInfo{
   107  			Level: "foobar",
   108  			Owner: "bob",
   109  		},
   110  		Credentials: []byte("creds"),
   111  	}
   112  	mockFacadeCaller := basemocks.NewMockFacadeCaller(ctrl)
   113  	mockFacadeCaller.EXPECT().FacadeCall("SetSLALevel", args, res).Return(nil)
   114  	client := modelconfig.NewClientFromCaller(mockFacadeCaller)
   115  	err := client.SetSLALevel("foobar", "bob", []byte("creds"))
   116  	c.Assert(err, jc.ErrorIsNil)
   117  }
   118  
   119  func (s *modelconfigSuite) TestGetSupport(c *gc.C) {
   120  	ctrl := gomock.NewController(c)
   121  	defer ctrl.Finish()
   122  
   123  	var args interface{}
   124  	res := new(params.StringResult)
   125  	results := params.StringResult{
   126  		Result: "level",
   127  	}
   128  	mockFacadeCaller := basemocks.NewMockFacadeCaller(ctrl)
   129  	mockFacadeCaller.EXPECT().FacadeCall("SLALevel", args, res).SetArg(2, results).Return(nil)
   130  	client := modelconfig.NewClientFromCaller(mockFacadeCaller)
   131  	level, err := client.SLALevel()
   132  	c.Assert(err, jc.ErrorIsNil)
   133  	c.Assert(level, gc.Equals, "level")
   134  }
   135  
   136  func (s *modelconfigSuite) TestSequences(c *gc.C) {
   137  	ctrl := gomock.NewController(c)
   138  	defer ctrl.Finish()
   139  
   140  	var args interface{}
   141  	res := new(params.ModelSequencesResult)
   142  	results := params.ModelSequencesResult{
   143  		Sequences: map[string]int{"foo": 5, "bar": 2},
   144  	}
   145  	mockFacadeCaller := basemocks.NewMockFacadeCaller(ctrl)
   146  	mockFacadeCaller.EXPECT().FacadeCall("Sequences", args, res).SetArg(2, results).Return(nil)
   147  	client := modelconfig.NewClientFromCaller(mockFacadeCaller)
   148  	sequences, err := client.Sequences()
   149  	c.Assert(err, jc.ErrorIsNil)
   150  	c.Assert(sequences, jc.DeepEquals, map[string]int{"foo": 5, "bar": 2})
   151  }
   152  
   153  func (s *modelconfigSuite) TestGetModelConstraints(c *gc.C) {
   154  	ctrl := gomock.NewController(c)
   155  	defer ctrl.Finish()
   156  
   157  	var args interface{}
   158  	res := new(params.GetConstraintsResults)
   159  	results := params.GetConstraintsResults{
   160  		Constraints: constraints.MustParse("arch=amd64"),
   161  	}
   162  	mockFacadeCaller := basemocks.NewMockFacadeCaller(ctrl)
   163  	mockFacadeCaller.EXPECT().FacadeCall("GetModelConstraints", args, res).SetArg(2, results).Return(nil)
   164  	client := modelconfig.NewClientFromCaller(mockFacadeCaller)
   165  	result, err := client.GetModelConstraints()
   166  	c.Assert(err, jc.ErrorIsNil)
   167  	c.Assert(result, jc.DeepEquals, constraints.MustParse("arch=amd64"))
   168  }
   169  
   170  func (s *modelconfigSuite) TestSetModelConstraints(c *gc.C) {
   171  	ctrl := gomock.NewController(c)
   172  	defer ctrl.Finish()
   173  
   174  	var res interface{}
   175  	args := params.SetConstraints{
   176  		Constraints: constraints.MustParse("arch=amd64"),
   177  	}
   178  	mockFacadeCaller := basemocks.NewMockFacadeCaller(ctrl)
   179  	mockFacadeCaller.EXPECT().FacadeCall("SetModelConstraints", args, res).Return(nil)
   180  	client := modelconfig.NewClientFromCaller(mockFacadeCaller)
   181  	err := client.SetModelConstraints(constraints.MustParse("arch=amd64"))
   182  	c.Assert(err, jc.ErrorIsNil)
   183  }