github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/state/migrations/relationnetworks_test.go (about)

     1  // Copyright 2019 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package migrations
     5  
     6  import (
     7  	"github.com/juju/description/v5"
     8  	"github.com/juju/errors"
     9  	"github.com/juju/names/v5"
    10  	jc "github.com/juju/testing/checkers"
    11  	"go.uber.org/mock/gomock"
    12  	gc "gopkg.in/check.v1"
    13  )
    14  
    15  type RelationNetworksExportSuite struct{}
    16  
    17  var _ = gc.Suite(&RelationNetworksExportSuite{})
    18  
    19  func (s *RelationNetworksExportSuite) TestExportRelationNetworks(c *gc.C) {
    20  	ctrl := gomock.NewController(c)
    21  	defer ctrl.Finish()
    22  
    23  	entity0 := s.migrationRelationNetworks(ctrl, "uuid-4", "wordpress:db mysql:server", []string{"192.168.1.0/16"})
    24  
    25  	entities := []MigrationRelationNetworks{
    26  		entity0,
    27  	}
    28  
    29  	source := NewMockRelationNetworksSource(ctrl)
    30  	source.EXPECT().AllRelationNetworks().Return(entities, nil)
    31  
    32  	model := NewMockRelationNetworksModel(ctrl)
    33  	model.EXPECT().AddRelationNetwork(description.RelationNetworkArgs{
    34  		ID:          names.NewControllerTag("uuid-4").String(),
    35  		RelationKey: "wordpress:db mysql:server",
    36  		CIDRS:       []string{"192.168.1.0/16"},
    37  	})
    38  
    39  	migration := ExportRelationNetworks{}
    40  	err := migration.Execute(source, model)
    41  	c.Assert(err, jc.ErrorIsNil)
    42  }
    43  
    44  func (s *RelationNetworksExportSuite) TestExportRelationNetworksFailsGettingEntities(c *gc.C) {
    45  	ctrl := gomock.NewController(c)
    46  	defer ctrl.Finish()
    47  
    48  	source := NewMockRelationNetworksSource(ctrl)
    49  	source.EXPECT().AllRelationNetworks().Return(nil, errors.New("fail"))
    50  
    51  	model := NewMockRelationNetworksModel(ctrl)
    52  
    53  	migration := ExportRelationNetworks{}
    54  	err := migration.Execute(source, model)
    55  	c.Assert(err, gc.ErrorMatches, "fail")
    56  }
    57  
    58  func (s *RelationNetworksExportSuite) migrationRelationNetworks(ctrl *gomock.Controller, id, relationKey string, cidrs []string) *MockMigrationRelationNetworks {
    59  	entity := NewMockMigrationRelationNetworks(ctrl)
    60  	entity.EXPECT().Id().Return(names.NewControllerTag(id).String())
    61  	entity.EXPECT().RelationKey().Return(relationKey)
    62  	entity.EXPECT().CIDRS().Return(cidrs)
    63  	return entity
    64  }