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

     1  // Copyright 2017 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package crosscontroller_test
     5  
     6  import (
     7  	jc "github.com/juju/testing/checkers"
     8  	gc "gopkg.in/check.v1"
     9  
    10  	"github.com/juju/juju/api/base/testing"
    11  	"github.com/juju/juju/api/crosscontroller"
    12  	"github.com/juju/juju/apiserver/params"
    13  	coretesting "github.com/juju/juju/testing"
    14  )
    15  
    16  var _ = gc.Suite(&CrossControllerSuite{})
    17  
    18  type CrossControllerSuite struct {
    19  	coretesting.BaseSuite
    20  }
    21  
    22  func (s *CrossControllerSuite) TestNewClient(c *gc.C) {
    23  	apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error {
    24  		return nil
    25  	})
    26  	client := crosscontroller.NewClient(apiCaller)
    27  	c.Assert(client, gc.NotNil)
    28  }
    29  
    30  func (s *CrossControllerSuite) TestControllerInfo(c *gc.C) {
    31  	apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error {
    32  		c.Check(objType, gc.Equals, "CrossController")
    33  		c.Check(version, gc.Equals, 0)
    34  		c.Check(id, gc.Equals, "")
    35  		c.Check(request, gc.Equals, "ControllerInfo")
    36  		c.Check(arg, gc.IsNil)
    37  		c.Assert(result, gc.FitsTypeOf, &params.ControllerAPIInfoResults{})
    38  		*(result.(*params.ControllerAPIInfoResults)) = params.ControllerAPIInfoResults{
    39  			[]params.ControllerAPIInfoResult{{
    40  				Addresses: []string{"foo"},
    41  				CACert:    "bar",
    42  			}},
    43  		}
    44  		return nil
    45  	})
    46  	client := crosscontroller.NewClient(apiCaller)
    47  	info, err := client.ControllerInfo()
    48  	c.Assert(err, jc.ErrorIsNil)
    49  	c.Assert(info, jc.DeepEquals, &crosscontroller.ControllerInfo{
    50  		Addrs:  []string{"foo"},
    51  		CACert: "bar",
    52  	})
    53  }
    54  
    55  func (s *CrossControllerSuite) TestControllerInfoError(c *gc.C) {
    56  	apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error {
    57  		*(result.(*params.ControllerAPIInfoResults)) = params.ControllerAPIInfoResults{
    58  			[]params.ControllerAPIInfoResult{{
    59  				Error: &params.Error{Message: "boom"},
    60  			}},
    61  		}
    62  		return nil
    63  	})
    64  	client := crosscontroller.NewClient(apiCaller)
    65  	info, err := client.ControllerInfo()
    66  	c.Assert(err, gc.ErrorMatches, "boom")
    67  	c.Assert(info, gc.IsNil)
    68  }
    69  
    70  func (s *CrossControllerSuite) TestWatchExternalControllers(c *gc.C) {
    71  	apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error {
    72  		c.Check(objType, gc.Equals, "CrossController")
    73  		c.Check(version, gc.Equals, 0)
    74  		c.Check(id, gc.Equals, "")
    75  		c.Check(request, gc.Equals, "WatchControllerInfo")
    76  		c.Check(arg, gc.IsNil)
    77  		c.Assert(result, gc.FitsTypeOf, &params.NotifyWatchResults{})
    78  		*(result.(*params.NotifyWatchResults)) = params.NotifyWatchResults{
    79  			[]params.NotifyWatchResult{{
    80  				Error: &params.Error{Message: "boom"},
    81  			}},
    82  		}
    83  		return nil
    84  	})
    85  	client := crosscontroller.NewClient(apiCaller)
    86  	w, err := client.WatchControllerInfo()
    87  	c.Assert(err, gc.ErrorMatches, "boom")
    88  	c.Assert(w, gc.IsNil)
    89  }