github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/worker/migrationmaster/validate_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package migrationmaster_test 5 6 import ( 7 "github.com/juju/errors" 8 "github.com/juju/testing" 9 jc "github.com/juju/testing/checkers" 10 "github.com/juju/utils/clock" 11 gc "gopkg.in/check.v1" 12 13 "github.com/juju/juju/api" 14 "github.com/juju/juju/migration" 15 "github.com/juju/juju/worker/fortress" 16 "github.com/juju/juju/worker/migrationmaster" 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) TestMissingModelUUID(c *gc.C) { 31 config := validConfig() 32 config.ModelUUID = "" 33 checkNotValid(c, config, "empty ModelUUID not valid") 34 } 35 36 func (*ValidateSuite) TestMissingGuard(c *gc.C) { 37 config := validConfig() 38 config.Guard = nil 39 checkNotValid(c, config, "nil Guard not valid") 40 } 41 42 func (*ValidateSuite) TestMissingFacade(c *gc.C) { 43 config := validConfig() 44 config.Facade = nil 45 checkNotValid(c, config, "nil Facade 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) TestMissingUploadBinaries(c *gc.C) { 55 config := validConfig() 56 config.UploadBinaries = nil 57 checkNotValid(c, config, "nil UploadBinaries not valid") 58 } 59 60 func (*ValidateSuite) TestMissingCharmDownloader(c *gc.C) { 61 config := validConfig() 62 config.CharmDownloader = nil 63 checkNotValid(c, config, "nil CharmDownloader not valid") 64 } 65 66 func (*ValidateSuite) TestMissingToolsDownloader(c *gc.C) { 67 config := validConfig() 68 config.ToolsDownloader = nil 69 checkNotValid(c, config, "nil ToolsDownloader not valid") 70 } 71 72 func (*ValidateSuite) TestMissingClock(c *gc.C) { 73 config := validConfig() 74 config.Clock = nil 75 checkNotValid(c, config, "nil Clock not valid") 76 } 77 78 func validConfig() migrationmaster.Config { 79 return migrationmaster.Config{ 80 ModelUUID: "uuid", 81 Guard: struct{ fortress.Guard }{}, 82 Facade: struct{ migrationmaster.Facade }{}, 83 APIOpen: func(*api.Info, api.DialOpts) (api.Connection, error) { return nil, nil }, 84 UploadBinaries: func(migration.UploadBinariesConfig) error { return nil }, 85 CharmDownloader: struct{ migration.CharmDownloader }{}, 86 ToolsDownloader: struct{ migration.ToolsDownloader }{}, 87 Clock: struct{ clock.Clock }{}, 88 } 89 } 90 91 func checkNotValid(c *gc.C, config migrationmaster.Config, expect string) { 92 check := func(err error) { 93 c.Check(err, gc.ErrorMatches, expect) 94 c.Check(err, jc.Satisfies, errors.IsNotValid) 95 } 96 97 err := config.Validate() 98 check(err) 99 100 worker, err := migrationmaster.New(config) 101 c.Check(worker, gc.IsNil) 102 check(err) 103 }