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  }