github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/worker/migrationminion/validate_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package migrationminion_test 5 6 import ( 7 "github.com/juju/errors" 8 "github.com/juju/juju/agent" 9 "github.com/juju/juju/api" 10 "github.com/juju/juju/api/base" 11 "github.com/juju/juju/worker/fortress" 12 "github.com/juju/juju/worker/migrationminion" 13 "github.com/juju/testing" 14 jc "github.com/juju/testing/checkers" 15 gc "gopkg.in/check.v1" 16 ) 17 18 type ValidateSuite struct { 19 testing.IsolationSuite 20 } 21 22 var _ = gc.Suite(&ValidateSuite{}) 23 24 func (*ValidateSuite) TestValid(c *gc.C) { 25 err := validConfig().Validate() 26 c.Check(err, jc.ErrorIsNil) 27 } 28 29 func (*ValidateSuite) TestMissingAgent(c *gc.C) { 30 config := validConfig() 31 config.Agent = nil 32 checkNotValid(c, config, "nil Agent not valid") 33 } 34 35 func (*ValidateSuite) TestMissingFacade(c *gc.C) { 36 config := validConfig() 37 config.Facade = nil 38 checkNotValid(c, config, "nil Facade not valid") 39 } 40 41 func (*ValidateSuite) TestMissingGuard(c *gc.C) { 42 config := validConfig() 43 config.Guard = nil 44 checkNotValid(c, config, "nil Guard not valid") 45 } 46 47 func (*ValidateSuite) TestMissingAPIOpen(c *gc.C) { 48 config := validConfig() 49 config.APIOpen = nil 50 checkNotValid(c, config, "nil APIOpen not valid") 51 } 52 53 func (*ValidateSuite) TestMissingValidateMigration(c *gc.C) { 54 config := validConfig() 55 config.ValidateMigration = nil 56 checkNotValid(c, config, "nil ValidateMigration not valid") 57 } 58 59 func validConfig() migrationminion.Config { 60 return migrationminion.Config{ 61 Agent: struct{ agent.Agent }{}, 62 Guard: struct{ fortress.Guard }{}, 63 Facade: struct{ migrationminion.Facade }{}, 64 APIOpen: func(*api.Info, api.DialOpts) (api.Connection, error) { return nil, nil }, 65 ValidateMigration: func(base.APICaller) error { return nil }, 66 } 67 } 68 69 func checkNotValid(c *gc.C, config migrationminion.Config, expect string) { 70 check := func(err error) { 71 c.Check(err, gc.ErrorMatches, expect) 72 c.Check(err, jc.Satisfies, errors.IsNotValid) 73 } 74 75 err := config.Validate() 76 check(err) 77 78 worker, err := migrationminion.New(config) 79 c.Check(worker, gc.IsNil) 80 check(err) 81 }