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