1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
package unit
import (
"context"
"testing"
"github.com/linode/linodego"
"github.com/stretchr/testify/assert"
)
func TestFirewallRule_Get(t *testing.T) {
fixtureData, err := fixtures.GetFixture("firewall_rule_get")
assert.NoError(t, err)
var base ClientBaseCase
base.SetUp(t)
defer base.TearDown(t)
firewallID := 123
base.MockGet(formatMockAPIPath("networking/firewalls/%d/rules", firewallID), fixtureData)
firewallRule, err := base.Client.GetFirewallRules(context.Background(), firewallID)
assert.NoError(t, err)
assert.NotNil(t, firewallRule)
assert.Equal(t, "DROP", firewallRule.InboundPolicy)
assert.Equal(t, 1, len(firewallRule.Inbound))
assert.Equal(t, "ACCEPT", firewallRule.Inbound[0].Action)
assert.Equal(t, "firewallrule123", firewallRule.Inbound[0].Label)
assert.Equal(t, "An example firewall rule description.", firewallRule.Inbound[0].Description)
assert.Equal(t, "22-24, 80, 443", firewallRule.Inbound[0].Ports)
assert.Equal(t, linodego.NetworkProtocol("TCP"), firewallRule.Inbound[0].Protocol)
assert.ElementsMatch(t, []string{"192.0.2.0/24", "198.51.100.2/32"}, *firewallRule.Inbound[0].Addresses.IPv4)
assert.ElementsMatch(t, []string{"2001:DB8::/128"}, *firewallRule.Inbound[0].Addresses.IPv6)
assert.Equal(t, "DROP", firewallRule.OutboundPolicy)
assert.Equal(t, 1, len(firewallRule.Outbound))
assert.Equal(t, "ACCEPT", firewallRule.Outbound[0].Action)
assert.Equal(t, "firewallrule123", firewallRule.Outbound[0].Label)
assert.Equal(t, "An example firewall rule description.", firewallRule.Outbound[0].Description)
assert.Equal(t, "22-24, 80, 443", firewallRule.Outbound[0].Ports)
assert.Equal(t, linodego.NetworkProtocol("TCP"), firewallRule.Outbound[0].Protocol)
assert.ElementsMatch(t, []string{"192.0.2.0/24", "198.51.100.2/32"}, *firewallRule.Outbound[0].Addresses.IPv4)
assert.ElementsMatch(t, []string{"2001:DB8::/128"}, *firewallRule.Outbound[0].Addresses.IPv6)
}
func TestFirewallRule_Update(t *testing.T) {
fixtureData, err := fixtures.GetFixture("firewall_rule_update")
assert.NoError(t, err)
var base ClientBaseCase
base.SetUp(t)
defer base.TearDown(t)
firewallID := 123
base.MockPut(formatMockAPIPath("networking/firewalls/%d/rules", firewallID), fixtureData)
requestData := linodego.FirewallRuleSet{
Inbound: []linodego.FirewallRule{
{
Action: "ACCEPT",
Label: "firewallrule123",
Description: "An example firewall rule description.",
Ports: "22-24, 80, 443",
Protocol: "TCP",
Addresses: linodego.NetworkAddresses{
IPv4: &[]string{"192.0.2.0/24", "198.51.100.2/32"},
IPv6: &[]string{"2001:DB8::/128"},
},
},
},
InboundPolicy: "DROP",
Outbound: []linodego.FirewallRule{
{
Action: "ACCEPT",
Label: "firewallrule123",
Description: "An example firewall rule description.",
Ports: "22-24, 80, 443",
Protocol: "TCP",
Addresses: linodego.NetworkAddresses{
IPv4: &[]string{"192.0.2.0/24", "198.51.100.2/32"},
IPv6: &[]string{"2001:DB8::/128"},
},
},
},
OutboundPolicy: "DROP",
}
firewallRule, err := base.Client.UpdateFirewallRules(context.Background(), firewallID, requestData)
assert.NoError(t, err)
assert.NotNil(t, firewallRule)
assert.Equal(t, "DROP", firewallRule.InboundPolicy)
assert.Equal(t, 1, len(firewallRule.Inbound))
assert.Equal(t, "ACCEPT", firewallRule.Inbound[0].Action)
assert.Equal(t, "firewallrule123", firewallRule.Inbound[0].Label)
assert.Equal(t, "An example firewall rule description.", firewallRule.Inbound[0].Description)
assert.Equal(t, "22-24, 80, 443", firewallRule.Inbound[0].Ports)
assert.Equal(t, linodego.NetworkProtocol("TCP"), firewallRule.Inbound[0].Protocol)
assert.ElementsMatch(t, []string{"192.0.2.0/24", "198.51.100.2/32"}, *firewallRule.Inbound[0].Addresses.IPv4)
assert.ElementsMatch(t, []string{"2001:DB8::/128"}, *firewallRule.Inbound[0].Addresses.IPv6)
assert.Equal(t, "DROP", firewallRule.OutboundPolicy)
assert.Equal(t, 1, len(firewallRule.Outbound))
assert.Equal(t, "ACCEPT", firewallRule.Outbound[0].Action)
assert.Equal(t, "firewallrule123", firewallRule.Outbound[0].Label)
assert.Equal(t, "An example firewall rule description.", firewallRule.Outbound[0].Description)
assert.Equal(t, "22-24, 80, 443", firewallRule.Outbound[0].Ports)
assert.Equal(t, linodego.NetworkProtocol("TCP"), firewallRule.Outbound[0].Protocol)
assert.ElementsMatch(t, []string{"192.0.2.0/24", "198.51.100.2/32"}, *firewallRule.Outbound[0].Addresses.IPv4)
assert.ElementsMatch(t, []string{"2001:DB8::/128"}, *firewallRule.Outbound[0].Addresses.IPv6)
}
|