github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/state/migrations/firewallrules_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 "github.com/juju/juju/core/network/firewall" 15 ) 16 17 type FirewallRulesExportSuite struct{} 18 19 var _ = gc.Suite(&FirewallRulesExportSuite{}) 20 21 func (f *FirewallRulesExportSuite) TestExportFirewallRules(c *gc.C) { 22 ctrl := gomock.NewController(c) 23 defer ctrl.Finish() 24 25 firewallRule0 := f.firewallRule(ctrl, "uuid-4", "ssh", []string{"192.168.1.0/16"}) 26 27 rules := []MigrationFirewallRule{ 28 firewallRule0, 29 } 30 source := NewMockFirewallRuleSource(ctrl) 31 source.EXPECT().AllFirewallRules().Return(rules, nil) 32 33 model := NewMockFirewallRulesModel(ctrl) 34 model.EXPECT().AddFirewallRule(description.FirewallRuleArgs{ 35 ID: names.NewControllerTag("uuid-4").String(), 36 WellKnownService: "ssh", 37 WhitelistCIDRs: []string{"192.168.1.0/16"}, 38 }) 39 40 migration := ExportFirewallRules{} 41 err := migration.Execute(source, model) 42 c.Assert(err, jc.ErrorIsNil) 43 } 44 45 func (f *FirewallRulesExportSuite) TestExportFirewallRulesFailsGettingEntities(c *gc.C) { 46 ctrl := gomock.NewController(c) 47 defer ctrl.Finish() 48 49 source := NewMockFirewallRuleSource(ctrl) 50 source.EXPECT().AllFirewallRules().Return(nil, errors.New("fail")) 51 52 model := NewMockFirewallRulesModel(ctrl) 53 54 migration := ExportFirewallRules{} 55 err := migration.Execute(source, model) 56 c.Assert(err, gc.ErrorMatches, "fail") 57 } 58 59 func (f *FirewallRulesExportSuite) firewallRule(ctrl *gomock.Controller, id string, service firewall.WellKnownServiceType, cidrs []string) *MockMigrationFirewallRule { 60 firewallRule := NewMockMigrationFirewallRule(ctrl) 61 firewallRule.EXPECT().ID().Return(names.NewControllerTag(id).String()) 62 firewallRule.EXPECT().WhitelistCIDRs().Return(cidrs) 63 firewallRule.EXPECT().WellKnownService().Return(service) 64 return firewallRule 65 }