From 7d548b43446d6975cab65312b73f3e56a9864278 Mon Sep 17 00:00:00 2001 From: ykim-1 Date: Tue, 11 Feb 2025 12:07:19 -0800 Subject: [PATCH] add firewall, firewall rule, firewall device unit tests --- test/unit/firewall_devices_test.go | 126 +++++++++ test/unit/firewall_rules_test.go | 112 ++++++++ test/unit/firewalls_test.go | 251 ++++++++++++++++++ test/unit/fixtures/firewall_create.json | 53 ++++ .../unit/fixtures/firewall_device_create.json | 11 + test/unit/fixtures/firewall_device_get.json | 11 + test/unit/fixtures/firewall_device_list.json | 29 ++ test/unit/fixtures/firewall_get.json | 53 ++++ test/unit/fixtures/firewall_list.json | 60 +++++ test/unit/fixtures/firewall_rule_get.json | 42 +++ test/unit/fixtures/firewall_rule_update.json | 42 +++ test/unit/fixtures/firewall_update.json | 53 ++++ 12 files changed, 843 insertions(+) create mode 100644 test/unit/firewall_devices_test.go create mode 100644 test/unit/firewall_rules_test.go create mode 100644 test/unit/firewalls_test.go create mode 100644 test/unit/fixtures/firewall_create.json create mode 100644 test/unit/fixtures/firewall_device_create.json create mode 100644 test/unit/fixtures/firewall_device_get.json create mode 100644 test/unit/fixtures/firewall_device_list.json create mode 100644 test/unit/fixtures/firewall_get.json create mode 100644 test/unit/fixtures/firewall_list.json create mode 100644 test/unit/fixtures/firewall_rule_get.json create mode 100644 test/unit/fixtures/firewall_rule_update.json create mode 100644 test/unit/fixtures/firewall_update.json diff --git a/test/unit/firewall_devices_test.go b/test/unit/firewall_devices_test.go new file mode 100644 index 000000000..d83f65b05 --- /dev/null +++ b/test/unit/firewall_devices_test.go @@ -0,0 +1,126 @@ +package unit + +import ( + "context" + "fmt" + "github.com/jarcoal/httpmock" + "github.com/linode/linodego" + "github.com/stretchr/testify/assert" + "testing" +) + +func TestFirewallDevice_List(t *testing.T) { + fixtureData, err := fixtures.GetFixture("firewall_device_list") + assert.NoError(t, err) + + var base ClientBaseCase + base.SetUp(t) + defer base.TearDown(t) + + firewallID := 123 + + base.MockGet(formatMockAPIPath("networking/firewalls/%d/devices", firewallID), fixtureData) + + firewallDevices, err := base.Client.ListFirewallDevices(context.Background(), firewallID, &linodego.ListOptions{}) + assert.NoError(t, err) + + assert.Equal(t, 2, len(firewallDevices)) + + for _, device := range firewallDevices { + assert.NotNil(t, device.Entity) + assert.NotEqual(t, 0, device.ID) + + assert.NotNil(t, device.Created) + assert.NotNil(t, device.Updated) + + switch device.Entity.Type { + case "linode": + assert.Equal(t, 123, device.Entity.ID) + assert.Equal(t, "my-linode", device.Entity.Label) + assert.Equal(t, "/v4/linode/instances/123", device.Entity.URL) + case "nodebalancer": + assert.Equal(t, 321, device.Entity.ID) + assert.Equal(t, "my-nodebalancer", device.Entity.Label) + assert.Equal(t, "/v4/nodebalancers/123", device.Entity.URL) + default: + t.Fatalf("Unexpected device type: %s", device.Entity.Type) + } + } +} + +func TestFirewallDevice_Get(t *testing.T) { + fixtureData, err := fixtures.GetFixture("firewall_device_get") + assert.NoError(t, err) + + var base ClientBaseCase + base.SetUp(t) + defer base.TearDown(t) + + firewallID := 123 + + deviceID := 123 + + base.MockGet(formatMockAPIPath("networking/firewalls/%d/devices/%d", firewallID, deviceID), fixtureData) + + firewallDevice, err := base.Client.GetFirewallDevice(context.Background(), firewallID, deviceID) + assert.NoError(t, err) + assert.NotNil(t, firewallDevice) + + assert.Equal(t, deviceID, firewallDevice.ID) + assert.NotNil(t, firewallDevice.Entity) + + assert.Equal(t, 123, firewallDevice.Entity.ID) + assert.Equal(t, "my-linode", firewallDevice.Entity.Label) + assert.Equal(t, linodego.FirewallDeviceType("linode"), firewallDevice.Entity.Type) + assert.Equal(t, "/v4/linode/instances/123", firewallDevice.Entity.URL) + + assert.NotNil(t, firewallDevice.Created) + assert.NotNil(t, firewallDevice.Updated) +} + +func TestFirewallDevice_Create(t *testing.T) { + fixtureData, err := fixtures.GetFixture("firewall_device_create") + assert.NoError(t, err) + + var base ClientBaseCase + base.SetUp(t) + defer base.TearDown(t) + + firewallID := 123 + + requestData := linodego.FirewallDeviceCreateOptions{ + ID: 123, + Type: "linode", + } + + base.MockPost(formatMockAPIPath("networking/firewalls/%d/devices", firewallID), fixtureData) + + firewallDevice, err := base.Client.CreateFirewallDevice(context.Background(), firewallID, requestData) + assert.NoError(t, err) + assert.NotNil(t, firewallDevice) + + assert.NotNil(t, firewallDevice.Entity) + + assert.Equal(t, 123, firewallDevice.Entity.ID) + assert.Equal(t, "my-linode", firewallDevice.Entity.Label) + assert.Equal(t, linodego.FirewallDeviceType("linode"), firewallDevice.Entity.Type) + assert.Equal(t, "/v4/linode/instances/123", firewallDevice.Entity.URL) + + assert.NotNil(t, firewallDevice.Created) + assert.NotNil(t, firewallDevice.Updated) +} + +func TestFirewallDevice_Delete(t *testing.T) { + client := createMockClient(t) + + firewallID := 123 + + deviceID := 123 + + httpmock.RegisterRegexpResponder("DELETE", mockRequestURL(t, fmt.Sprintf("networking/firewalls/%d/devices/%d", firewallID, deviceID)), + httpmock.NewStringResponder(200, "{}")) + + if err := client.DeleteFirewallDevice(context.Background(), firewallID, deviceID); err != nil { + t.Fatal(err) + } +} diff --git a/test/unit/firewall_rules_test.go b/test/unit/firewall_rules_test.go new file mode 100644 index 000000000..49611321b --- /dev/null +++ b/test/unit/firewall_rules_test.go @@ -0,0 +1,112 @@ +package unit + +import ( + "context" + "github.com/linode/linodego" + "github.com/stretchr/testify/assert" + "testing" +) + +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) +} diff --git a/test/unit/firewalls_test.go b/test/unit/firewalls_test.go new file mode 100644 index 000000000..709ab0a6e --- /dev/null +++ b/test/unit/firewalls_test.go @@ -0,0 +1,251 @@ +package unit + +import ( + "context" + "fmt" + "github.com/jarcoal/httpmock" + "github.com/linode/linodego" + "github.com/stretchr/testify/assert" + "testing" + "time" +) + +func TestFirewall_List(t *testing.T) { + fixtureData, err := fixtures.GetFixture("firewall_list") + assert.NoError(t, err) + + var base ClientBaseCase + base.SetUp(t) + defer base.TearDown(t) + + base.MockGet(formatMockAPIPath("networking/firewalls"), fixtureData) + + firewalls, err := base.Client.ListFirewalls(context.Background(), &linodego.ListOptions{}) + assert.NoError(t, err) + + assert.Len(t, firewalls, 1) + + firewall := firewalls[0] + assert.Equal(t, 123, firewall.ID) + assert.Equal(t, "firewall123", firewall.Label) + assert.Equal(t, linodego.FirewallStatus("enabled"), firewall.Status) + + assert.Equal(t, "DROP", firewall.Rules.InboundPolicy) + assert.Len(t, firewall.Rules.Inbound, 1) + + inboundRule := firewall.Rules.Inbound[0] + assert.Equal(t, "firewallrule123", inboundRule.Label) + assert.Equal(t, "ACCEPT", inboundRule.Action) + assert.Equal(t, linodego.NetworkProtocol("TCP"), inboundRule.Protocol) + assert.Equal(t, "22-24, 80, 443", inboundRule.Ports) + + assert.Equal(t, "DROP", firewall.Rules.OutboundPolicy) + assert.Len(t, firewall.Rules.Outbound, 1) + + outboundRule := firewall.Rules.Outbound[0] + assert.Equal(t, "firewallrule123", outboundRule.Label) + assert.Equal(t, "ACCEPT", outboundRule.Action) + assert.Equal(t, linodego.NetworkProtocol("TCP"), outboundRule.Protocol) + assert.Equal(t, "22-24, 80, 443", outboundRule.Ports) + assert.ElementsMatch(t, []string{"192.0.2.0/24", "198.51.100.2/32"}, *outboundRule.Addresses.IPv4) + assert.ElementsMatch(t, []string{"2001:DB8::/128"}, *outboundRule.Addresses.IPv6) + + assert.ElementsMatch(t, []string{"example tag", "another example"}, firewall.Tags) + + assert.Equal(t, "2018-01-01T00:01:01Z", firewall.Created.Format(time.RFC3339)) + assert.Equal(t, "2018-01-02T00:01:01Z", firewall.Updated.Format(time.RFC3339)) +} + +func TestFirewall_Create(t *testing.T) { + fixtureData, err := fixtures.GetFixture("firewall_create") + assert.NoError(t, err) + + var base ClientBaseCase + base.SetUp(t) + defer base.TearDown(t) + + requestData := linodego.FirewallCreateOptions{ + Label: "firewall123", + Rules: linodego.FirewallRuleSet{ + InboundPolicy: "DROP", + OutboundPolicy: "DROP", + Inbound: []linodego.FirewallRule{ + { + Action: "ACCEPT", + Addresses: linodego.NetworkAddresses{ + IPv4: &[]string{"192.0.2.0/24", "198.51.100.2/32"}, + IPv6: &[]string{"2001:DB8::/128"}, + }, + Description: "An example firewall rule description.", + Label: "firewallrule123", + Ports: "22-24, 80, 443", + Protocol: "TCP", + }, + }, + Outbound: []linodego.FirewallRule{ + { + Action: "ACCEPT", + Addresses: linodego.NetworkAddresses{ + IPv4: &[]string{"192.0.2.0/24", "198.51.100.2/32"}, + IPv6: &[]string{"2001:DB8::/128"}, + }, + Description: "An example firewall rule description.", + Label: "firewallrule123", + Ports: "22-24, 80, 443", + Protocol: "TCP", + }, + }, + }, + Tags: []string{"example tag", "another example"}, + } + + base.MockPost(formatMockAPIPath("networking/firewalls"), fixtureData) + + firewall, err := base.Client.CreateFirewall(context.Background(), requestData) + assert.NoError(t, err) + + assert.NotNil(t, firewall) + assert.Equal(t, 123, firewall.ID) + assert.Equal(t, "firewall123", firewall.Label) + assert.Equal(t, linodego.FirewallStatus("enabled"), firewall.Status) + assert.ElementsMatch(t, []string{"example tag", "another example"}, firewall.Tags) + + assert.NotNil(t, firewall.Rules) + assert.Equal(t, "DROP", firewall.Rules.InboundPolicy) + assert.Equal(t, "DROP", firewall.Rules.OutboundPolicy) + + assert.Len(t, firewall.Rules.Inbound, 1) + inboundRule := firewall.Rules.Inbound[0] + assert.Equal(t, "ACCEPT", inboundRule.Action) + assert.Equal(t, "firewallrule123", inboundRule.Label) + assert.Equal(t, "An example firewall rule description.", inboundRule.Description) + assert.Equal(t, "22-24, 80, 443", inboundRule.Ports) + assert.Equal(t, linodego.NetworkProtocol("TCP"), inboundRule.Protocol) + assert.ElementsMatch(t, []string{"192.0.2.0/24", "198.51.100.2/32"}, *inboundRule.Addresses.IPv4) + assert.ElementsMatch(t, []string{"2001:DB8::/128"}, *inboundRule.Addresses.IPv6) + + assert.Len(t, firewall.Rules.Outbound, 1) + outboundRule := firewall.Rules.Outbound[0] + assert.Equal(t, "ACCEPT", outboundRule.Action) + assert.Equal(t, "firewallrule123", outboundRule.Label) + assert.Equal(t, "An example firewall rule description.", outboundRule.Description) + assert.Equal(t, "22-24, 80, 443", outboundRule.Ports) + assert.Equal(t, linodego.NetworkProtocol("TCP"), outboundRule.Protocol) + assert.ElementsMatch(t, []string{"192.0.2.0/24", "198.51.100.2/32"}, *outboundRule.Addresses.IPv4) + assert.ElementsMatch(t, []string{"2001:DB8::/128"}, *outboundRule.Addresses.IPv6) +} + +func TestFirewall_Get(t *testing.T) { + fixtureData, err := fixtures.GetFixture("firewall_get") + assert.NoError(t, err) + + var base ClientBaseCase + base.SetUp(t) + defer base.TearDown(t) + + firewallID := 123 + base.MockGet(formatMockAPIPath("networking/firewalls/%d", firewallID), fixtureData) + + firewall, err := base.Client.GetFirewall(context.Background(), firewallID) + + assert.NoError(t, err) + assert.NotNil(t, firewall) + + assert.Equal(t, 123, firewall.ID) + assert.Equal(t, "firewall123", firewall.Label) + assert.Equal(t, linodego.FirewallStatus("enabled"), firewall.Status) + assert.Equal(t, "2018-01-01T00:01:01Z", firewall.Created.Format(time.RFC3339)) + assert.Equal(t, "2018-01-02T00:01:01Z", firewall.Updated.Format(time.RFC3339)) + assert.ElementsMatch(t, []string{"example tag", "another example"}, firewall.Tags) + + assert.NotNil(t, firewall.Rules) + assert.Equal(t, "DROP", firewall.Rules.InboundPolicy) + assert.Equal(t, "DROP", firewall.Rules.OutboundPolicy) + + assert.Len(t, firewall.Rules.Inbound, 1) + inboundRule := firewall.Rules.Inbound[0] + assert.Equal(t, "ACCEPT", inboundRule.Action) + assert.Equal(t, "firewallrule123", inboundRule.Label) + assert.Equal(t, "An example firewall rule description.", inboundRule.Description) + assert.Equal(t, "22-24, 80, 443", inboundRule.Ports) + assert.Equal(t, linodego.NetworkProtocol("TCP"), inboundRule.Protocol) + assert.ElementsMatch(t, []string{"192.0.2.0/24", "198.51.100.2/32"}, *inboundRule.Addresses.IPv4) + assert.ElementsMatch(t, []string{"2001:DB8::/128"}, *inboundRule.Addresses.IPv6) + + assert.Len(t, firewall.Rules.Outbound, 1) + outboundRule := firewall.Rules.Outbound[0] + assert.Equal(t, "ACCEPT", outboundRule.Action) + assert.Equal(t, "firewallrule123", outboundRule.Label) + assert.Equal(t, "An example firewall rule description.", outboundRule.Description) + assert.Equal(t, "22-24, 80, 443", outboundRule.Ports) + assert.Equal(t, linodego.NetworkProtocol("TCP"), outboundRule.Protocol) + assert.ElementsMatch(t, []string{"192.0.2.0/24", "198.51.100.2/32"}, *outboundRule.Addresses.IPv4) + assert.ElementsMatch(t, []string{"2001:DB8::/128"}, *outboundRule.Addresses.IPv6) +} + +func TestFirewall_Update(t *testing.T) { + fixtureData, err := fixtures.GetFixture("firewall_update") + assert.NoError(t, err) + + var base ClientBaseCase + base.SetUp(t) + defer base.TearDown(t) + + firewallID := 123 + base.MockPut(formatMockAPIPath("networking/firewalls/%d", firewallID), fixtureData) + + requestData := linodego.FirewallUpdateOptions{ + Label: "firewall123", + Status: "enabled", + Tags: &[]string{"updated tag", "another updated tag"}, + } + + firewall, err := base.Client.UpdateFirewall(context.Background(), firewallID, requestData) + + assert.NoError(t, err) + assert.NotNil(t, firewall) + + assert.Equal(t, 123, firewall.ID) + assert.Equal(t, "firewall123", firewall.Label) + assert.Equal(t, linodego.FirewallStatus("enabled"), firewall.Status) + assert.Equal(t, "2018-01-01T00:01:01Z", firewall.Created.Format(time.RFC3339)) + assert.Equal(t, "2018-01-02T00:01:01Z", firewall.Updated.Format(time.RFC3339)) + assert.ElementsMatch(t, []string{"updated tag", "another updated tag"}, firewall.Tags) + + assert.NotNil(t, firewall.Rules) + assert.Equal(t, "DROP", firewall.Rules.InboundPolicy) + assert.Equal(t, "DROP", firewall.Rules.OutboundPolicy) + + assert.Len(t, firewall.Rules.Inbound, 1) + inboundRule := firewall.Rules.Inbound[0] + assert.Equal(t, "ACCEPT", inboundRule.Action) + assert.Equal(t, "firewallrule123", inboundRule.Label) + assert.Equal(t, "An example firewall rule description.", inboundRule.Description) + assert.Equal(t, "22-24, 80, 443", inboundRule.Ports) + assert.Equal(t, linodego.NetworkProtocol("TCP"), inboundRule.Protocol) + assert.ElementsMatch(t, []string{"192.0.2.0/24", "198.51.100.2/32"}, *inboundRule.Addresses.IPv4) + assert.ElementsMatch(t, []string{"2001:DB8::/128"}, *inboundRule.Addresses.IPv6) + + assert.Len(t, firewall.Rules.Outbound, 1) + outboundRule := firewall.Rules.Outbound[0] + assert.Equal(t, "ACCEPT", outboundRule.Action) + assert.Equal(t, "firewallrule123", outboundRule.Label) + assert.Equal(t, "An example firewall rule description.", outboundRule.Description) + assert.Equal(t, "22-24, 80, 443", outboundRule.Ports) + assert.Equal(t, linodego.NetworkProtocol("TCP"), outboundRule.Protocol) + assert.ElementsMatch(t, []string{"192.0.2.0/24", "198.51.100.2/32"}, *outboundRule.Addresses.IPv4) + assert.ElementsMatch(t, []string{"2001:DB8::/128"}, *outboundRule.Addresses.IPv6) +} + +func TestFirewall_Delete(t *testing.T) { + client := createMockClient(t) + + firewallID := 123 + + httpmock.RegisterRegexpResponder("DELETE", mockRequestURL(t, fmt.Sprintf("networking/firewalls/%d", firewallID)), + httpmock.NewStringResponder(200, "{}")) + + if err := client.DeleteFirewall(context.Background(), firewallID); err != nil { + t.Fatal(err) + } +} diff --git a/test/unit/fixtures/firewall_create.json b/test/unit/fixtures/firewall_create.json new file mode 100644 index 000000000..b425fca39 --- /dev/null +++ b/test/unit/fixtures/firewall_create.json @@ -0,0 +1,53 @@ +{ + "created": "2018-01-01T00:01:01", + "id": 123, + "label": "firewall123", + "rules": { + "fingerprint": "997dd135", + "inbound": [ + { + "action": "ACCEPT", + "addresses": { + "ipv4": [ + "192.0.2.0/24", + "198.51.100.2/32" + ], + "ipv6": [ + "2001:DB8::/128" + ] + }, + "description": "An example firewall rule description.", + "label": "firewallrule123", + "ports": "22-24, 80, 443", + "protocol": "TCP" + } + ], + "inbound_policy": "DROP", + "outbound": [ + { + "action": "ACCEPT", + "addresses": { + "ipv4": [ + "192.0.2.0/24", + "198.51.100.2/32" + ], + "ipv6": [ + "2001:DB8::/128" + ] + }, + "description": "An example firewall rule description.", + "label": "firewallrule123", + "ports": "22-24, 80, 443", + "protocol": "TCP" + } + ], + "outbound_policy": "DROP", + "version": 1 + }, + "status": "enabled", + "tags": [ + "example tag", + "another example" + ], + "updated": "2018-01-02T00:01:01" +} \ No newline at end of file diff --git a/test/unit/fixtures/firewall_device_create.json b/test/unit/fixtures/firewall_device_create.json new file mode 100644 index 000000000..97a3ff9e6 --- /dev/null +++ b/test/unit/fixtures/firewall_device_create.json @@ -0,0 +1,11 @@ +{ + "created": "2018-01-01T00:01:01", + "entity": { + "id": 123, + "label": "my-linode", + "type": "linode", + "url": "/v4/linode/instances/123" + }, + "id": 123, + "updated": "2018-01-02T00:01:01" +} \ No newline at end of file diff --git a/test/unit/fixtures/firewall_device_get.json b/test/unit/fixtures/firewall_device_get.json new file mode 100644 index 000000000..97a3ff9e6 --- /dev/null +++ b/test/unit/fixtures/firewall_device_get.json @@ -0,0 +1,11 @@ +{ + "created": "2018-01-01T00:01:01", + "entity": { + "id": 123, + "label": "my-linode", + "type": "linode", + "url": "/v4/linode/instances/123" + }, + "id": 123, + "updated": "2018-01-02T00:01:01" +} \ No newline at end of file diff --git a/test/unit/fixtures/firewall_device_list.json b/test/unit/fixtures/firewall_device_list.json new file mode 100644 index 000000000..9c25c3b24 --- /dev/null +++ b/test/unit/fixtures/firewall_device_list.json @@ -0,0 +1,29 @@ +{ + "data": [ + { + "created": "2018-01-01T00:01:01", + "entity": { + "id": 123, + "label": "my-linode", + "type": "linode", + "url": "/v4/linode/instances/123" + }, + "id": 456, + "updated": "2018-01-02T00:01:01" + }, + { + "created": "2018-01-01T00:01:01", + "entity": { + "id": 321, + "label": "my-nodebalancer", + "type": "nodebalancer", + "url": "/v4/nodebalancers/123" + }, + "id": 654, + "updated": "2018-01-02T00:01:01" + } + ], + "page": 1, + "pages": 1, + "results": 1 +} \ No newline at end of file diff --git a/test/unit/fixtures/firewall_get.json b/test/unit/fixtures/firewall_get.json new file mode 100644 index 000000000..b425fca39 --- /dev/null +++ b/test/unit/fixtures/firewall_get.json @@ -0,0 +1,53 @@ +{ + "created": "2018-01-01T00:01:01", + "id": 123, + "label": "firewall123", + "rules": { + "fingerprint": "997dd135", + "inbound": [ + { + "action": "ACCEPT", + "addresses": { + "ipv4": [ + "192.0.2.0/24", + "198.51.100.2/32" + ], + "ipv6": [ + "2001:DB8::/128" + ] + }, + "description": "An example firewall rule description.", + "label": "firewallrule123", + "ports": "22-24, 80, 443", + "protocol": "TCP" + } + ], + "inbound_policy": "DROP", + "outbound": [ + { + "action": "ACCEPT", + "addresses": { + "ipv4": [ + "192.0.2.0/24", + "198.51.100.2/32" + ], + "ipv6": [ + "2001:DB8::/128" + ] + }, + "description": "An example firewall rule description.", + "label": "firewallrule123", + "ports": "22-24, 80, 443", + "protocol": "TCP" + } + ], + "outbound_policy": "DROP", + "version": 1 + }, + "status": "enabled", + "tags": [ + "example tag", + "another example" + ], + "updated": "2018-01-02T00:01:01" +} \ No newline at end of file diff --git a/test/unit/fixtures/firewall_list.json b/test/unit/fixtures/firewall_list.json new file mode 100644 index 000000000..3417d9f9a --- /dev/null +++ b/test/unit/fixtures/firewall_list.json @@ -0,0 +1,60 @@ +{ + "data": [ + { + "created": "2018-01-01T00:01:01", + "id": 123, + "label": "firewall123", + "rules": { + "fingerprint": "997dd135", + "inbound": [ + { + "action": "ACCEPT", + "addresses": { + "ipv4": [ + "192.0.2.0/24", + "198.51.100.2/32" + ], + "ipv6": [ + "2001:DB8::/128" + ] + }, + "description": "An example firewall rule description.", + "label": "firewallrule123", + "ports": "22-24, 80, 443", + "protocol": "TCP" + } + ], + "inbound_policy": "DROP", + "outbound": [ + { + "action": "ACCEPT", + "addresses": { + "ipv4": [ + "192.0.2.0/24", + "198.51.100.2/32" + ], + "ipv6": [ + "2001:DB8::/128" + ] + }, + "description": "An example firewall rule description.", + "label": "firewallrule123", + "ports": "22-24, 80, 443", + "protocol": "TCP" + } + ], + "outbound_policy": "DROP", + "version": 1 + }, + "status": "enabled", + "tags": [ + "example tag", + "another example" + ], + "updated": "2018-01-02T00:01:01" + } + ], + "page": 1, + "pages": 1, + "results": 1 +} \ No newline at end of file diff --git a/test/unit/fixtures/firewall_rule_get.json b/test/unit/fixtures/firewall_rule_get.json new file mode 100644 index 000000000..53d3312d9 --- /dev/null +++ b/test/unit/fixtures/firewall_rule_get.json @@ -0,0 +1,42 @@ +{ + "fingerprint": "997dd135", + "inbound": [ + { + "action": "ACCEPT", + "addresses": { + "ipv4": [ + "192.0.2.0/24", + "198.51.100.2/32" + ], + "ipv6": [ + "2001:DB8::/128" + ] + }, + "description": "An example firewall rule description.", + "label": "firewallrule123", + "ports": "22-24, 80, 443", + "protocol": "TCP" + } + ], + "inbound_policy": "DROP", + "outbound": [ + { + "action": "ACCEPT", + "addresses": { + "ipv4": [ + "192.0.2.0/24", + "198.51.100.2/32" + ], + "ipv6": [ + "2001:DB8::/128" + ] + }, + "description": "An example firewall rule description.", + "label": "firewallrule123", + "ports": "22-24, 80, 443", + "protocol": "TCP" + } + ], + "outbound_policy": "DROP", + "version": 1 +} \ No newline at end of file diff --git a/test/unit/fixtures/firewall_rule_update.json b/test/unit/fixtures/firewall_rule_update.json new file mode 100644 index 000000000..53d3312d9 --- /dev/null +++ b/test/unit/fixtures/firewall_rule_update.json @@ -0,0 +1,42 @@ +{ + "fingerprint": "997dd135", + "inbound": [ + { + "action": "ACCEPT", + "addresses": { + "ipv4": [ + "192.0.2.0/24", + "198.51.100.2/32" + ], + "ipv6": [ + "2001:DB8::/128" + ] + }, + "description": "An example firewall rule description.", + "label": "firewallrule123", + "ports": "22-24, 80, 443", + "protocol": "TCP" + } + ], + "inbound_policy": "DROP", + "outbound": [ + { + "action": "ACCEPT", + "addresses": { + "ipv4": [ + "192.0.2.0/24", + "198.51.100.2/32" + ], + "ipv6": [ + "2001:DB8::/128" + ] + }, + "description": "An example firewall rule description.", + "label": "firewallrule123", + "ports": "22-24, 80, 443", + "protocol": "TCP" + } + ], + "outbound_policy": "DROP", + "version": 1 +} \ No newline at end of file diff --git a/test/unit/fixtures/firewall_update.json b/test/unit/fixtures/firewall_update.json new file mode 100644 index 000000000..b738a2677 --- /dev/null +++ b/test/unit/fixtures/firewall_update.json @@ -0,0 +1,53 @@ +{ + "created": "2018-01-01T00:01:01", + "id": 123, + "label": "firewall123", + "rules": { + "fingerprint": "997dd135", + "inbound": [ + { + "action": "ACCEPT", + "addresses": { + "ipv4": [ + "192.0.2.0/24", + "198.51.100.2/32" + ], + "ipv6": [ + "2001:DB8::/128" + ] + }, + "description": "An example firewall rule description.", + "label": "firewallrule123", + "ports": "22-24, 80, 443", + "protocol": "TCP" + } + ], + "inbound_policy": "DROP", + "outbound": [ + { + "action": "ACCEPT", + "addresses": { + "ipv4": [ + "192.0.2.0/24", + "198.51.100.2/32" + ], + "ipv6": [ + "2001:DB8::/128" + ] + }, + "description": "An example firewall rule description.", + "label": "firewallrule123", + "ports": "22-24, 80, 443", + "protocol": "TCP" + } + ], + "outbound_policy": "DROP", + "version": 1 + }, + "status": "enabled", + "tags": [ + "updated tag", + "another updated tag" + ], + "updated": "2018-01-02T00:01:01" +} \ No newline at end of file