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  }