github.com/mwhudson/juju@v0.0.0-20160512215208-90ff01f3497f/apiserver/upgrading_root_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package apiserver_test 5 6 import ( 7 "github.com/juju/errors" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 11 "github.com/juju/juju/apiserver" 12 "github.com/juju/juju/apiserver/params" 13 "github.com/juju/juju/testing" 14 ) 15 16 type upgradingRootSuite struct { 17 testing.BaseSuite 18 } 19 20 var _ = gc.Suite(&upgradingRootSuite{}) 21 22 func (r *upgradingRootSuite) TestClientMethods(c *gc.C) { 23 root := apiserver.TestingUpgradingRoot(nil) 24 25 for facadeName, methods := range apiserver.AllowedMethodsDuringUpgrades { 26 for _, method := range methods.Values() { 27 // for now all of the api calls of interest, 28 // reside on version 1 of their respective facade. 29 caller, err := root.FindMethod(facadeName, 1, method) 30 c.Check(err, jc.ErrorIsNil) 31 c.Check(caller, gc.NotNil) 32 } 33 } 34 } 35 36 func (r *upgradingRootSuite) TestFindDisallowedMethod(c *gc.C) { 37 root := apiserver.TestingUpgradingRoot(nil) 38 39 caller, err := root.FindMethod("Client", 1, "ModelSet") 40 41 c.Assert(errors.Cause(err), gc.Equals, params.UpgradeInProgressError) 42 c.Assert(caller, gc.IsNil) 43 } 44 45 func (r *upgradingRootSuite) TestFindNonExistentMethod(c *gc.C) { 46 root := apiserver.TestingUpgradingRoot(nil) 47 48 caller, err := root.FindMethod("Foo", 0, "Bar") 49 50 c.Assert(err, gc.ErrorMatches, "unknown object type \"Foo\"") 51 c.Assert(caller, gc.IsNil) 52 } 53 54 func (r *upgradingRootSuite) TestFindMethodNonExistentVersion(c *gc.C) { 55 root := apiserver.TestingUpgradingRoot(nil) 56 57 caller, err := root.FindMethod("Client", 99999999, "FullStatus") 58 59 c.Assert(err, gc.ErrorMatches, "unknown version \\(99999999\\) of interface \"Client\"") 60 c.Assert(caller, gc.IsNil) 61 }