github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/cmd/jujud/agent/engine/api_test.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package engine_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/api/base"
    13  	"github.com/juju/juju/cmd/jujud/agent/engine"
    14  	"github.com/juju/juju/worker"
    15  	"github.com/juju/juju/worker/dependency"
    16  	dt "github.com/juju/juju/worker/dependency/testing"
    17  )
    18  
    19  type APIManifoldSuite struct {
    20  	testing.IsolationSuite
    21  	testing.Stub
    22  	manifold dependency.Manifold
    23  	worker   worker.Worker
    24  }
    25  
    26  var _ = gc.Suite(&APIManifoldSuite{})
    27  
    28  func (s *APIManifoldSuite) SetUpTest(c *gc.C) {
    29  	s.IsolationSuite.SetUpTest(c)
    30  	s.Stub = testing.Stub{}
    31  	s.worker = &dummyWorker{}
    32  	s.manifold = engine.APIManifold(engine.APIManifoldConfig{
    33  		APICallerName: "api-caller-name",
    34  	}, s.newWorker)
    35  }
    36  
    37  func (s *APIManifoldSuite) newWorker(apiCaller base.APICaller) (worker.Worker, error) {
    38  	s.AddCall("newWorker", apiCaller)
    39  	if err := s.NextErr(); err != nil {
    40  		return nil, err
    41  	}
    42  	return s.worker, nil
    43  }
    44  
    45  func (s *APIManifoldSuite) TestInputs(c *gc.C) {
    46  	c.Check(s.manifold.Inputs, jc.DeepEquals, []string{"api-caller-name"})
    47  }
    48  
    49  func (s *APIManifoldSuite) TestOutput(c *gc.C) {
    50  	c.Check(s.manifold.Output, gc.IsNil)
    51  }
    52  
    53  func (s *APIManifoldSuite) TestStartAPIMissing(c *gc.C) {
    54  	context := dt.StubContext(nil, map[string]interface{}{
    55  		"api-caller-name": dependency.ErrMissing,
    56  	})
    57  
    58  	worker, err := s.manifold.Start(context)
    59  	c.Check(worker, gc.IsNil)
    60  	c.Check(err, gc.Equals, dependency.ErrMissing)
    61  }
    62  
    63  func (s *APIManifoldSuite) TestStartFailure(c *gc.C) {
    64  	expectAPICaller := &dummyAPICaller{}
    65  	context := dt.StubContext(nil, map[string]interface{}{
    66  		"api-caller-name": expectAPICaller,
    67  	})
    68  	s.SetErrors(errors.New("some error"))
    69  
    70  	worker, err := s.manifold.Start(context)
    71  	c.Check(worker, gc.IsNil)
    72  	c.Check(err, gc.ErrorMatches, "some error")
    73  	s.CheckCalls(c, []testing.StubCall{{
    74  		FuncName: "newWorker",
    75  		Args:     []interface{}{expectAPICaller},
    76  	}})
    77  }
    78  
    79  func (s *APIManifoldSuite) TestStartSuccess(c *gc.C) {
    80  	expectAPICaller := &dummyAPICaller{}
    81  	context := dt.StubContext(nil, map[string]interface{}{
    82  		"api-caller-name": expectAPICaller,
    83  	})
    84  
    85  	worker, err := s.manifold.Start(context)
    86  	c.Check(err, jc.ErrorIsNil)
    87  	c.Check(worker, gc.Equals, s.worker)
    88  	s.CheckCalls(c, []testing.StubCall{{
    89  		FuncName: "newWorker",
    90  		Args:     []interface{}{expectAPICaller},
    91  	}})
    92  }