launchpad.net/~rogpeppe/juju-core/500-errgo-fix@v0.0.0-20140213181702-000000002356/state/apiserver/common/tools_test.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package common_test 5 6 import ( 7 "launchpad.net/errgo/errors" 8 gc "launchpad.net/gocheck" 9 10 "launchpad.net/juju-core/juju/testing" 11 "launchpad.net/juju-core/state" 12 "launchpad.net/juju-core/state/api/params" 13 "launchpad.net/juju-core/state/apiserver/common" 14 apiservertesting "launchpad.net/juju-core/state/apiserver/testing" 15 jc "launchpad.net/juju-core/testing/checkers" 16 "launchpad.net/juju-core/version" 17 ) 18 19 type toolsSuite struct { 20 testing.JujuConnSuite 21 machine0 *state.Machine 22 } 23 24 var _ = gc.Suite(&toolsSuite{}) 25 26 func (s *toolsSuite) SetUpTest(c *gc.C) { 27 s.JujuConnSuite.SetUpTest(c) 28 var err error 29 s.machine0, err = s.State.AddMachine("series", state.JobHostUnits) 30 c.Assert(err, gc.IsNil) 31 } 32 33 func (s *toolsSuite) TestTools(c *gc.C) { 34 getCanRead := func() (common.AuthFunc, error) { 35 return func(tag string) bool { 36 return tag == "machine-0" || tag == "machine-42" 37 }, nil 38 } 39 tg := common.NewToolsGetter(s.State, getCanRead) 40 c.Assert(tg, gc.NotNil) 41 42 err := s.machine0.SetAgentVersion(version.Current) 43 c.Assert(err, gc.IsNil) 44 45 args := params.Entities{ 46 Entities: []params.Entity{ 47 {Tag: "machine-0"}, 48 {Tag: "machine-1"}, 49 {Tag: "machine-42"}, 50 }} 51 result, err := tg.Tools(args) 52 c.Assert(err, gc.IsNil) 53 c.Assert(result.Results, gc.HasLen, 3) 54 c.Assert(result.Results[0].Tools, gc.NotNil) 55 c.Assert(result.Results[0].Tools.Version, gc.DeepEquals, version.Current) 56 c.Assert(result.Results[0].DisableSSLHostnameVerification, jc.IsFalse) 57 c.Assert(result.Results[1].Error, gc.DeepEquals, apiservertesting.ErrUnauthorized) 58 c.Assert(result.Results[2].Error, gc.DeepEquals, apiservertesting.NotFoundError("machine 42")) 59 } 60 61 func (s *toolsSuite) TestToolsError(c *gc.C) { 62 getCanRead := func() (common.AuthFunc, error) { 63 return nil, errors.Newf("splat") 64 } 65 tg := common.NewToolsGetter(s.State, getCanRead) 66 args := params.Entities{ 67 Entities: []params.Entity{{Tag: "machine-42"}}, 68 } 69 result, err := tg.Tools(args) 70 c.Assert(err, gc.ErrorMatches, "splat") 71 c.Assert(result.Results, gc.HasLen, 1) 72 }