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

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package charms_test
     5  
     6  import (
     7  	"github.com/golang/mock/gomock"
     8  	jc "github.com/juju/testing/checkers"
     9  	gc "gopkg.in/check.v1"
    10  	charm "gopkg.in/juju/charm.v6"
    11  
    12  	basemocks "github.com/juju/juju/api/base/mocks"
    13  	"github.com/juju/juju/api/charms"
    14  	"github.com/juju/juju/apiserver/params"
    15  	coretesting "github.com/juju/juju/testing"
    16  )
    17  
    18  type charmsMockSuite struct {
    19  	coretesting.BaseSuite
    20  	charmsClient *charms.Client
    21  }
    22  
    23  var _ = gc.Suite(&charmsMockSuite{})
    24  
    25  func (s *charmsMockSuite) TestIsMeteredFalse(c *gc.C) {
    26  	ctrl := gomock.NewController(c)
    27  	defer ctrl.Finish()
    28  
    29  	mockFacadeCaller := basemocks.NewMockFacadeCaller(ctrl)
    30  
    31  	url := "local:quantal/dummy-1"
    32  	args := params.CharmURL{URL: url}
    33  	metered := new(params.IsMeteredResult)
    34  	params := params.IsMeteredResult{Metered: true}
    35  
    36  	mockFacadeCaller.EXPECT().FacadeCall("IsMetered", args, metered).SetArg(2, params).Return(nil)
    37  
    38  	client := charms.NewClientWithFacade(mockFacadeCaller)
    39  	got, err := client.IsMetered(url)
    40  	c.Assert(err, gc.IsNil)
    41  	c.Assert(got, jc.IsTrue)
    42  }
    43  
    44  func (s *charmsMockSuite) TestCharmInfo(c *gc.C) {
    45  	ctrl := gomock.NewController(c)
    46  	defer ctrl.Finish()
    47  
    48  	mockFacadeCaller := basemocks.NewMockFacadeCaller(ctrl)
    49  
    50  	url := "local:quantal/dummy-1"
    51  	args := params.CharmURL{URL: url}
    52  	info := new(params.CharmInfo)
    53  
    54  	params := params.CharmInfo{
    55  		Revision: 1,
    56  		URL:      url,
    57  		Config: map[string]params.CharmOption{
    58  			"config": {
    59  				Type:        "type",
    60  				Description: "config-type option",
    61  			},
    62  		},
    63  		LXDProfile: &params.CharmLXDProfile{
    64  			Description: "LXDProfile",
    65  			Devices: map[string]map[string]string{
    66  				"tun": {
    67  					"path": "/dev/net/tun",
    68  					"type": "unix-char",
    69  				},
    70  			},
    71  		},
    72  	}
    73  
    74  	mockFacadeCaller.EXPECT().FacadeCall("CharmInfo", args, info).SetArg(2, params).Return(nil)
    75  
    76  	client := charms.NewClientWithFacade(mockFacadeCaller)
    77  	got, err := client.CharmInfo(url)
    78  	c.Assert(err, gc.IsNil)
    79  
    80  	want := &charms.CharmInfo{
    81  		Revision: 1,
    82  		URL:      url,
    83  		Config: &charm.Config{
    84  			Options: map[string]charm.Option{
    85  				"config": {
    86  					Type:        "type",
    87  					Description: "config-type option",
    88  				},
    89  			},
    90  		},
    91  		LXDProfile: &charm.LXDProfile{
    92  			Description: "LXDProfile",
    93  			Config:      map[string]string{},
    94  			Devices: map[string]map[string]string{
    95  				"tun": {
    96  					"path": "/dev/net/tun",
    97  					"type": "unix-char",
    98  				},
    99  			},
   100  		},
   101  	}
   102  	c.Assert(got, gc.DeepEquals, want)
   103  }