github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/api/modelmanager/modelinfo_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package modelmanager_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 "gopkg.in/juju/names.v2" 10 11 basetesting "github.com/juju/juju/api/base/testing" 12 "github.com/juju/juju/api/modelmanager" 13 "github.com/juju/juju/apiserver/params" 14 "github.com/juju/juju/testing" 15 ) 16 17 type modelInfoSuite struct { 18 testing.BaseSuite 19 } 20 21 var _ = gc.Suite(&modelInfoSuite{}) 22 23 func (s *modelInfoSuite) checkCall(c *gc.C, objType string, id, request string) { 24 c.Check(objType, gc.Equals, "ModelManager") 25 c.Check(id, gc.Equals, "") 26 c.Check(request, gc.Equals, "ModelInfo") 27 } 28 29 func (s *modelInfoSuite) assertResponse(c *gc.C, result interface{}) *params.ModelInfoResults { 30 c.Assert(result, gc.FitsTypeOf, ¶ms.ModelInfoResults{}) 31 return result.(*params.ModelInfoResults) 32 } 33 34 func (s *modelInfoSuite) TestModelInfo(c *gc.C) { 35 results := params.ModelInfoResults{ 36 Results: []params.ModelInfoResult{{ 37 Result: ¶ms.ModelInfo{Name: "name", UUID: "etc."}, 38 }, { 39 Error: ¶ms.Error{Message: "woop"}, 40 }}, 41 } 42 apiCaller := basetesting.APICallerFunc( 43 func(objType string, version int, id, request string, a, result interface{}) error { 44 s.checkCall(c, objType, id, request) 45 resp := s.assertResponse(c, result) 46 *resp = results 47 return nil 48 }) 49 client := modelmanager.NewClient(apiCaller) 50 info, err := client.ModelInfo([]names.ModelTag{testing.ModelTag, testing.ModelTag}) 51 c.Assert(err, jc.ErrorIsNil) 52 c.Assert(info, jc.DeepEquals, results.Results) 53 } 54 55 func (s *modelInfoSuite) TestInvalidResultCount(c *gc.C) { 56 apiCaller := basetesting.APICallerFunc( 57 func(objType string, version int, id, request string, a, result interface{}) error { 58 s.checkCall(c, objType, id, request) 59 c.Assert(a, jc.DeepEquals, params.Entities{ 60 Entities: []params.Entity{{testing.ModelTag.String()}, {testing.ModelTag.String()}}, 61 }) 62 resp := s.assertResponse(c, result) 63 *resp = params.ModelInfoResults{Results: []params.ModelInfoResult{{}}} 64 return nil 65 }, 66 ) 67 client := modelmanager.NewClient(apiCaller) 68 _, err := client.ModelInfo([]names.ModelTag{testing.ModelTag, testing.ModelTag}) 69 c.Assert(err, gc.ErrorMatches, "expected 2 result\\(s\\), got 1") 70 }