Correctly hand destination_tags in firewall resource. Fixes: #33

This commit is contained in:
Andrew Starr-Bochicchio 2017-08-25 16:48:05 -04:00
parent e9a84b9cee
commit 1620b7b0ab
2 changed files with 17 additions and 5 deletions

View File

@ -352,7 +352,7 @@ func expandFirewallOutboundRules(d *schema.ResourceData) []godo.OutboundRule {
destinationTags := rule["destination_tags"].([]interface{})
for _, tag := range destinationTags {
dest.Addresses = append(dest.Tags, tag.(string))
dest.Tags = append(dest.Tags, tag.(string))
}
dropletIds := rule["destination_droplet_ids"].([]interface{})

View File

@ -123,6 +123,7 @@ func TestAccDigitalOceanFirewall_AllowMultipleOutbound(t *testing.T) {
func TestAccDigitalOceanFirewall_MultipleInboundAndOutbound(t *testing.T) {
rName := acctest.RandString(10)
tagName := "tag-" + rName
var firewall godo.Firewall
resource.Test(t, resource.TestCase{
@ -131,7 +132,7 @@ func TestAccDigitalOceanFirewall_MultipleInboundAndOutbound(t *testing.T) {
CheckDestroy: testAccCheckDigitalOceanFirewallDestroy,
Steps: []resource.TestStep{
{
Config: testAccDigitalOceanFirewallConfig_MultipleInboundAndOutbound(rName),
Config: testAccDigitalOceanFirewallConfig_MultipleInboundAndOutbound(tagName, rName),
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckDigitalOceanFirewallExists("digitalocean_firewall.foobar", &firewall),
resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.#", "2"),
@ -140,6 +141,8 @@ func TestAccDigitalOceanFirewall_MultipleInboundAndOutbound(t *testing.T) {
resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.1.source_addresses.#", "2"),
resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.1.source_addresses.0", "192.168.1.0/24"),
resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.1.source_addresses.1", "2002:1001:1:2::/64"),
resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.1.source_tags.#", "1"),
resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.1.source_tags.0", tagName),
resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.0.port_range", "22"),
resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.0.protocol", "tcp"),
resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.0.source_addresses.#", "2"),
@ -151,6 +154,8 @@ func TestAccDigitalOceanFirewall_MultipleInboundAndOutbound(t *testing.T) {
resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "outbound_rule.0.destination_addresses.#", "2"),
resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "outbound_rule.0.destination_addresses.0", "192.168.1.0/24"),
resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "outbound_rule.0.destination_addresses.1", "2002:1001:1:2::/64"),
resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "outbound_rule.0.destination_tags.#", "1"),
resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "outbound_rule.0.destination_tags.0", tagName),
resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "outbound_rule.1.port_range", "53"),
resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "outbound_rule.1.protocol", "udp"),
resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "outbound_rule.1.destination_addresses.#", "2"),
@ -165,13 +170,14 @@ func TestAccDigitalOceanFirewall_MultipleInboundAndOutbound(t *testing.T) {
func TestAccDigitalOceanFirewall_ImportMultipleRules(t *testing.T) {
resourceName := "digitalocean_firewall.foobar"
rName := acctest.RandString(10)
tagName := "tag-" + rName
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckDigitalOceanFirewallDestroy,
Steps: []resource.TestStep{
{
Config: testAccDigitalOceanFirewallConfig_MultipleInboundAndOutbound(rName),
Config: testAccDigitalOceanFirewallConfig_MultipleInboundAndOutbound(tagName, rName),
},
{
@ -249,8 +255,12 @@ func testAccDigitalOceanFirewallConfig_OnlyMultipleOutbound(rName string) string
`, rName)
}
func testAccDigitalOceanFirewallConfig_MultipleInboundAndOutbound(rName string) string {
func testAccDigitalOceanFirewallConfig_MultipleInboundAndOutbound(tagName string, rName string) string {
return fmt.Sprintf(`
resource "digitalocean_tag" "foobar" {
name = "%s"
}
resource "digitalocean_firewall" "foobar" {
name = "%s"
inbound_rule {
@ -262,11 +272,13 @@ func testAccDigitalOceanFirewallConfig_MultipleInboundAndOutbound(rName string)
protocol = "tcp"
port_range = "443"
source_addresses = ["192.168.1.0/24", "2002:1001:1:2::/64"]
source_tags = ["%s"]
}
outbound_rule {
protocol = "tcp"
port_range = "443"
destination_addresses = ["192.168.1.0/24", "2002:1001:1:2::/64"]
destination_tags = ["%s"]
}
outbound_rule {
protocol = "udp"
@ -275,7 +287,7 @@ func testAccDigitalOceanFirewallConfig_MultipleInboundAndOutbound(rName string)
}
}
`, rName)
`, tagName, rName, tagName, tagName)
}
func testAccCheckDigitalOceanFirewallDestroy(s *terraform.State) error {