github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/state/migrations/remoteentities_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 RemoteEntitiesExportSuite struct{} 16 17 var _ = gc.Suite(&RemoteEntitiesExportSuite{}) 18 19 func (s *RemoteEntitiesExportSuite) TestExportRemoteEntities(c *gc.C) { 20 ctrl := gomock.NewController(c) 21 defer ctrl.Finish() 22 23 entities := []MigrationRemoteEntity{ 24 s.remoteEntity(ctrl, "uuid3", "aaa-bbb", ""), 25 s.remoteEntity(ctrl, "uuid4", "ccc-yyy", "macaroon-5"), 26 } 27 28 source := NewMockRemoteEntitiesSource(ctrl) 29 source.EXPECT().AllRemoteEntities().Return(entities, nil) 30 31 model := NewMockRemoteEntitiesModel(ctrl) 32 model.EXPECT().AddRemoteEntity(description.RemoteEntityArgs{ 33 ID: "controller-uuid3", 34 Token: "aaa-bbb", 35 }) 36 model.EXPECT().AddRemoteEntity(description.RemoteEntityArgs{ 37 ID: "controller-uuid4", 38 Token: "ccc-yyy", 39 // Note no macaroon. 40 }) 41 42 migration := ExportRemoteEntities{} 43 err := migration.Execute(source, model) 44 c.Assert(err, jc.ErrorIsNil) 45 } 46 47 func (s *RemoteEntitiesExportSuite) TestExportRemoteEntitiesFailsGettingEntities(c *gc.C) { 48 ctrl := gomock.NewController(c) 49 defer ctrl.Finish() 50 51 source := NewMockRemoteEntitiesSource(ctrl) 52 source.EXPECT().AllRemoteEntities().Return(nil, errors.New("fail")) 53 54 model := NewMockRemoteEntitiesModel(ctrl) 55 56 migration := ExportRemoteEntities{} 57 err := migration.Execute(source, model) 58 c.Assert(err, gc.ErrorMatches, "fail") 59 } 60 61 func (s *RemoteEntitiesExportSuite) remoteEntity( 62 ctrl *gomock.Controller, id, token, macaroon string, 63 ) *MockMigrationRemoteEntity { 64 entity := NewMockMigrationRemoteEntity(ctrl) 65 entity.EXPECT().ID().Return(names.NewControllerTag(id).String()) 66 entity.EXPECT().Token().Return(token) 67 return entity 68 }