github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/api/uniter/podspec_test.go (about) 1 // Copyright 2018 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package uniter_test 5 6 import ( 7 "github.com/juju/errors" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 "gopkg.in/juju/names.v2" 11 12 basetesting "github.com/juju/juju/api/base/testing" 13 "github.com/juju/juju/api/uniter" 14 "github.com/juju/juju/apiserver/params" 15 coretesting "github.com/juju/juju/testing" 16 ) 17 18 type podSpecSuite struct { 19 coretesting.BaseSuite 20 } 21 22 var _ = gc.Suite(&podSpecSuite{}) 23 24 func (s *podSpecSuite) TestSetPodSpec(c *gc.C) { 25 expected := params.SetPodSpecParams{ 26 Specs: []params.EntityString{{ 27 Tag: "application-mysql", 28 Value: "spec", 29 }}, 30 } 31 32 apiCaller := basetesting.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 33 c.Assert(objType, gc.Equals, "Uniter") 34 c.Assert(version, gc.Equals, expectedAPIVersion) 35 c.Assert(id, gc.Equals, "") 36 c.Assert(request, gc.Equals, "SetPodSpec") 37 c.Assert(arg, gc.DeepEquals, expected) 38 c.Assert(result, gc.FitsTypeOf, ¶ms.ErrorResults{}) 39 *(result.(*params.ErrorResults)) = params.ErrorResults{ 40 Results: []params.ErrorResult{{ 41 Error: ¶ms.Error{Message: "yoink"}, 42 }}, 43 } 44 return nil 45 }) 46 st := uniter.NewState(apiCaller, names.NewUnitTag("mysql/0")) 47 err := st.SetPodSpec("mysql", "spec") 48 c.Assert(err, gc.ErrorMatches, "yoink") 49 } 50 51 func (s *podSpecSuite) TestSetPodSpecInvalidApplicationName(c *gc.C) { 52 st := uniter.NewState(nil, names.NewUnitTag("mysql/0")) 53 err := st.SetPodSpec("", "spec") 54 c.Assert(err, gc.ErrorMatches, `application name "" not valid`) 55 } 56 57 func (s *podSpecSuite) TestSetPodSpecError(c *gc.C) { 58 expected := params.SetPodSpecParams{ 59 Specs: []params.EntityString{{ 60 Tag: "application-mysql", 61 Value: "spec", 62 }}, 63 } 64 65 var called bool 66 msg := "yoink" 67 apiCaller := basetesting.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 68 c.Assert(objType, gc.Equals, "Uniter") 69 c.Assert(version, gc.Equals, expectedAPIVersion) 70 c.Assert(id, gc.Equals, "") 71 c.Assert(request, gc.Equals, "SetPodSpec") 72 c.Assert(arg, gc.DeepEquals, expected) 73 called = true 74 75 c.Assert(result, gc.FitsTypeOf, ¶ms.ErrorResults{}) 76 return errors.New(msg) 77 }) 78 79 st := uniter.NewState(apiCaller, names.NewUnitTag("mysql/0")) 80 err := st.SetPodSpec("mysql", "spec") 81 c.Assert(err, gc.ErrorMatches, msg) 82 c.Assert(called, jc.IsTrue) 83 }