github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/worker/migrationminion/manifold_test.go (about)

     1  // Copyright 2019 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package migrationminion_test
     5  
     6  import (
     7  	"github.com/juju/clock"
     8  	"github.com/juju/errors"
     9  	"github.com/juju/loggo"
    10  	"github.com/juju/testing"
    11  	jc "github.com/juju/testing/checkers"
    12  	"github.com/juju/worker/v3"
    13  	gc "gopkg.in/check.v1"
    14  
    15  	"github.com/juju/juju/api"
    16  	"github.com/juju/juju/api/base"
    17  	"github.com/juju/juju/worker/migrationminion"
    18  )
    19  
    20  type ManifoldSuite struct {
    21  	testing.IsolationSuite
    22  	config migrationminion.ManifoldConfig
    23  }
    24  
    25  var _ = gc.Suite(&ManifoldSuite{})
    26  
    27  func (s *ManifoldSuite) SetUpTest(c *gc.C) {
    28  	s.IsolationSuite.SetUpTest(c)
    29  	s.config = s.validConfig()
    30  }
    31  
    32  func (s *ManifoldSuite) validConfig() migrationminion.ManifoldConfig {
    33  	return migrationminion.ManifoldConfig{
    34  		AgentName:         "agent",
    35  		APICallerName:     "api-caller",
    36  		FortressName:      "fortress",
    37  		Clock:             struct{ clock.Clock }{},
    38  		APIOpen:           func(*api.Info, api.DialOpts) (api.Connection, error) { return nil, nil },
    39  		ValidateMigration: func(base.APICaller) error { return nil },
    40  		NewFacade:         func(base.APICaller) (migrationminion.Facade, error) { return nil, nil },
    41  		NewWorker:         func(migrationminion.Config) (worker.Worker, error) { return nil, nil },
    42  		Logger:            loggo.GetLogger("test"),
    43  	}
    44  }
    45  
    46  func (s *ManifoldSuite) TestValid(c *gc.C) {
    47  	c.Check(s.config.Validate(), jc.ErrorIsNil)
    48  }
    49  
    50  func (s *ManifoldSuite) TestMissingAgentName(c *gc.C) {
    51  	s.config.AgentName = ""
    52  	s.checkNotValid(c, "empty AgentName not valid")
    53  }
    54  
    55  func (s *ManifoldSuite) TestMissingAPICallerName(c *gc.C) {
    56  	s.config.APICallerName = ""
    57  	s.checkNotValid(c, "empty APICallerName not valid")
    58  }
    59  
    60  func (s *ManifoldSuite) TestMissingFortressName(c *gc.C) {
    61  	s.config.FortressName = ""
    62  	s.checkNotValid(c, "empty FortressName not valid")
    63  }
    64  
    65  func (s *ManifoldSuite) TestMissingClock(c *gc.C) {
    66  	s.config.Clock = nil
    67  	s.checkNotValid(c, "nil Clock not valid")
    68  }
    69  
    70  func (s *ManifoldSuite) TestMissingAPIOpen(c *gc.C) {
    71  	s.config.APIOpen = nil
    72  	s.checkNotValid(c, "nil APIOpen not valid")
    73  }
    74  
    75  func (s *ManifoldSuite) TestMissingValidateMigration(c *gc.C) {
    76  	s.config.ValidateMigration = nil
    77  	s.checkNotValid(c, "nil ValidateMigration not valid")
    78  }
    79  
    80  func (s *ManifoldSuite) TestMissingNewFacade(c *gc.C) {
    81  	s.config.NewFacade = nil
    82  	s.checkNotValid(c, "nil NewFacade not valid")
    83  }
    84  
    85  func (s *ManifoldSuite) TestMissingNewWorker(c *gc.C) {
    86  	s.config.NewWorker = nil
    87  	s.checkNotValid(c, "nil NewWorker not valid")
    88  }
    89  
    90  func (s *ManifoldSuite) TestMissingLogger(c *gc.C) {
    91  	s.config.Logger = nil
    92  	s.checkNotValid(c, "nil Logger not valid")
    93  }
    94  
    95  func (s *ManifoldSuite) checkNotValid(c *gc.C, expect string) {
    96  	err := s.config.Validate()
    97  	c.Check(err, gc.ErrorMatches, expect)
    98  	c.Check(err, jc.Satisfies, errors.IsNotValid)
    99  }