github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/worker/caasmodelupgrader/manifold_test.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package caasmodelupgrader_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 "gopkg.in/juju/worker.v1" 12 "gopkg.in/juju/worker.v1/dependency" 13 dt "gopkg.in/juju/worker.v1/dependency/testing" 14 15 "github.com/juju/juju/api/base" 16 "github.com/juju/juju/worker/caasmodelupgrader" 17 "github.com/juju/juju/worker/gate" 18 ) 19 20 type ManifoldSuite struct { 21 testing.IsolationSuite 22 } 23 24 var _ = gc.Suite(&ManifoldSuite{}) 25 26 func (*ManifoldSuite) TestInputs(c *gc.C) { 27 manifold := caasmodelupgrader.Manifold(caasmodelupgrader.ManifoldConfig{ 28 APICallerName: "api-caller", 29 GateName: "gate", 30 }) 31 c.Check(manifold.Inputs, jc.DeepEquals, []string{"api-caller", "gate"}) 32 } 33 34 func (*ManifoldSuite) TestMissingAPICaller(c *gc.C) { 35 context := dt.StubContext(nil, map[string]interface{}{ 36 "api-caller": dependency.ErrMissing, 37 "gate": struct{ gate.Unlocker }{}, 38 }) 39 manifold := caasmodelupgrader.Manifold(caasmodelupgrader.ManifoldConfig{ 40 APICallerName: "api-caller", 41 GateName: "gate", 42 }) 43 44 worker, err := manifold.Start(context) 45 c.Check(worker, gc.IsNil) 46 c.Check(errors.Cause(err), gc.Equals, dependency.ErrMissing) 47 } 48 49 func (*ManifoldSuite) TestMissingGateName(c *gc.C) { 50 context := dt.StubContext(nil, map[string]interface{}{ 51 "api-caller": struct{ base.APICaller }{}, 52 "gate": dependency.ErrMissing, 53 }) 54 manifold := caasmodelupgrader.Manifold(caasmodelupgrader.ManifoldConfig{ 55 APICallerName: "api-caller", 56 GateName: "gate", 57 }) 58 59 worker, err := manifold.Start(context) 60 c.Check(worker, gc.IsNil) 61 c.Check(errors.Cause(err), gc.Equals, dependency.ErrMissing) 62 } 63 64 func (*ManifoldSuite) TestNewFacadeError(c *gc.C) { 65 expectAPICaller := struct{ base.APICaller }{} 66 expectGate := struct{ gate.Unlocker }{} 67 context := dt.StubContext(nil, map[string]interface{}{ 68 "api-caller": expectAPICaller, 69 "gate": expectGate, 70 }) 71 manifold := caasmodelupgrader.Manifold(caasmodelupgrader.ManifoldConfig{ 72 APICallerName: "api-caller", 73 GateName: "gate", 74 NewFacade: func(actual base.APICaller) (caasmodelupgrader.Facade, error) { 75 c.Check(actual, gc.Equals, expectAPICaller) 76 return nil, errors.New("error") 77 }, 78 }) 79 80 worker, err := manifold.Start(context) 81 c.Check(worker, gc.IsNil) 82 c.Check(err, gc.ErrorMatches, "error") 83 } 84 85 func (*ManifoldSuite) TestNewWorkerError(c *gc.C) { 86 expectFacade := struct{ caasmodelupgrader.Facade }{} 87 context := dt.StubContext(nil, map[string]interface{}{ 88 "api-caller": struct{ base.APICaller }{}, 89 "gate": struct{ gate.Unlocker }{}, 90 }) 91 manifold := caasmodelupgrader.Manifold(caasmodelupgrader.ManifoldConfig{ 92 APICallerName: "api-caller", 93 GateName: "gate", 94 NewFacade: func(_ base.APICaller) (caasmodelupgrader.Facade, error) { 95 return expectFacade, nil 96 }, 97 NewWorker: func(config caasmodelupgrader.Config) (worker.Worker, error) { 98 c.Check(config.Facade, gc.Equals, expectFacade) 99 return nil, errors.New("error") 100 }, 101 }) 102 103 worker, err := manifold.Start(context) 104 c.Check(worker, gc.IsNil) 105 c.Check(err, gc.ErrorMatches, "error") 106 }