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 }