/aws/resource_aws_dx_transit_virtual_interface_test.go
https://github.com/terraform-providers/terraform-provider-aws · Go · 261 lines · 242 code · 17 blank · 2 comment · 5 complexity · eef92101e30f60872a5db9b244cb7d5b MD5 · raw file
- package aws
- import (
- "fmt"
- "os"
- "regexp"
- "strconv"
- "testing"
- "github.com/aws/aws-sdk-go/aws"
- "github.com/aws/aws-sdk-go/service/directconnect"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- )
- func TestAccAwsDxTransitVirtualInterface_serial(t *testing.T) {
- testCases := map[string]func(t *testing.T){
- "basic": testAccAwsDxTransitVirtualInterface_basic,
- "tags": testAccAwsDxTransitVirtualInterface_Tags,
- }
- for name, tc := range testCases {
- tc := tc
- t.Run(name, func(t *testing.T) {
- tc(t)
- })
- }
- }
- func testAccAwsDxTransitVirtualInterface_basic(t *testing.T) {
- key := "DX_CONNECTION_ID"
- connectionId := os.Getenv(key)
- if connectionId == "" {
- t.Skipf("Environment variable %s is not set", key)
- }
- var vif directconnect.VirtualInterface
- resourceName := "aws_dx_transit_virtual_interface.test"
- dxGatewayResourceName := "aws_dx_gateway.test"
- rName := fmt.Sprintf("tf-testacc-transit-vif-%s", acctest.RandString(9))
- amzAsn := acctest.RandIntRange(64512, 65534)
- bgpAsn := acctest.RandIntRange(64512, 65534)
- vlan := acctest.RandIntRange(2049, 4094)
- resource.Test(t, resource.TestCase{
- PreCheck: func() { testAccPreCheck(t) },
- Providers: testAccProviders,
- CheckDestroy: testAccCheckAwsDxTransitVirtualInterfaceDestroy,
- Steps: []resource.TestStep{
- {
- Config: testAccDxTransitVirtualInterfaceConfig_basic(connectionId, rName, amzAsn, bgpAsn, vlan),
- Check: resource.ComposeTestCheckFunc(
- testAccCheckAwsDxTransitVirtualInterfaceExists(resourceName, &vif),
- resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"),
- resource.TestCheckResourceAttrSet(resourceName, "amazon_address"),
- resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"),
- testAccMatchResourceAttrRegionalARN(resourceName, "arn", "directconnect", regexp.MustCompile(fmt.Sprintf("dxvif/%s", aws.StringValue(vif.VirtualInterfaceId)))),
- resource.TestCheckResourceAttrSet(resourceName, "aws_device"),
- resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)),
- resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"),
- resource.TestCheckResourceAttr(resourceName, "connection_id", connectionId),
- resource.TestCheckResourceAttrSet(resourceName, "customer_address"),
- resource.TestCheckResourceAttrPair(resourceName, "dx_gateway_id", dxGatewayResourceName, "id"),
- resource.TestCheckResourceAttr(resourceName, "jumbo_frame_capable", "true"),
- resource.TestCheckResourceAttr(resourceName, "mtu", "1500"),
- resource.TestCheckResourceAttr(resourceName, "name", rName),
- resource.TestCheckResourceAttr(resourceName, "tags.%", "0"),
- resource.TestCheckResourceAttr(resourceName, "vlan", strconv.Itoa(vlan)),
- ),
- },
- {
- Config: testAccDxTransitVirtualInterfaceConfig_updated(connectionId, rName, amzAsn, bgpAsn, vlan),
- Check: resource.ComposeTestCheckFunc(
- testAccCheckAwsDxTransitVirtualInterfaceExists(resourceName, &vif),
- resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"),
- resource.TestCheckResourceAttrSet(resourceName, "amazon_address"),
- resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"),
- testAccMatchResourceAttrRegionalARN(resourceName, "arn", "directconnect", regexp.MustCompile(fmt.Sprintf("dxvif/%s", aws.StringValue(vif.VirtualInterfaceId)))),
- resource.TestCheckResourceAttrSet(resourceName, "aws_device"),
- resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)),
- resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"),
- resource.TestCheckResourceAttr(resourceName, "connection_id", connectionId),
- resource.TestCheckResourceAttrSet(resourceName, "customer_address"),
- resource.TestCheckResourceAttrPair(resourceName, "dx_gateway_id", dxGatewayResourceName, "id"),
- resource.TestCheckResourceAttr(resourceName, "jumbo_frame_capable", "true"),
- resource.TestCheckResourceAttr(resourceName, "mtu", "8500"),
- resource.TestCheckResourceAttr(resourceName, "name", rName),
- resource.TestCheckResourceAttr(resourceName, "tags.%", "0"),
- resource.TestCheckResourceAttr(resourceName, "vlan", strconv.Itoa(vlan)),
- ),
- },
- // Test import.
- {
- ResourceName: resourceName,
- ImportState: true,
- ImportStateVerify: true,
- },
- },
- })
- }
- func testAccAwsDxTransitVirtualInterface_Tags(t *testing.T) {
- key := "DX_CONNECTION_ID"
- connectionId := os.Getenv(key)
- if connectionId == "" {
- t.Skipf("Environment variable %s is not set", key)
- }
- var vif directconnect.VirtualInterface
- resourceName := "aws_dx_transit_virtual_interface.test"
- dxGatewayResourceName := "aws_dx_gateway.test"
- rName := fmt.Sprintf("tf-testacc-transit-vif-%s", acctest.RandString(9))
- amzAsn := acctest.RandIntRange(64512, 65534)
- bgpAsn := acctest.RandIntRange(64512, 65534)
- vlan := acctest.RandIntRange(2049, 4094)
- resource.Test(t, resource.TestCase{
- PreCheck: func() { testAccPreCheck(t) },
- Providers: testAccProviders,
- CheckDestroy: testAccCheckAwsDxTransitVirtualInterfaceDestroy,
- Steps: []resource.TestStep{
- {
- Config: testAccDxTransitVirtualInterfaceConfig_tags(connectionId, rName, amzAsn, bgpAsn, vlan),
- Check: resource.ComposeTestCheckFunc(
- testAccCheckAwsDxTransitVirtualInterfaceExists(resourceName, &vif),
- resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"),
- resource.TestCheckResourceAttrSet(resourceName, "amazon_address"),
- resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"),
- testAccMatchResourceAttrRegionalARN(resourceName, "arn", "directconnect", regexp.MustCompile(fmt.Sprintf("dxvif/%s", aws.StringValue(vif.VirtualInterfaceId)))),
- resource.TestCheckResourceAttrSet(resourceName, "aws_device"),
- resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)),
- resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"),
- resource.TestCheckResourceAttr(resourceName, "connection_id", connectionId),
- resource.TestCheckResourceAttrSet(resourceName, "customer_address"),
- resource.TestCheckResourceAttrPair(resourceName, "dx_gateway_id", dxGatewayResourceName, "id"),
- resource.TestCheckResourceAttr(resourceName, "jumbo_frame_capable", "true"),
- resource.TestCheckResourceAttr(resourceName, "mtu", "1500"),
- resource.TestCheckResourceAttr(resourceName, "name", rName),
- resource.TestCheckResourceAttr(resourceName, "tags.%", "3"),
- resource.TestCheckResourceAttr(resourceName, "tags.Name", rName),
- resource.TestCheckResourceAttr(resourceName, "tags.Key1", "Value1"),
- resource.TestCheckResourceAttr(resourceName, "tags.Key2", "Value2a"),
- resource.TestCheckResourceAttr(resourceName, "vlan", strconv.Itoa(vlan)),
- ),
- },
- {
- Config: testAccDxTransitVirtualInterfaceConfig_tagsUpdated(connectionId, rName, amzAsn, bgpAsn, vlan),
- Check: resource.ComposeTestCheckFunc(
- testAccCheckAwsDxTransitVirtualInterfaceExists(resourceName, &vif),
- resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"),
- resource.TestCheckResourceAttrSet(resourceName, "amazon_address"),
- resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"),
- testAccMatchResourceAttrRegionalARN(resourceName, "arn", "directconnect", regexp.MustCompile(fmt.Sprintf("dxvif/%s", aws.StringValue(vif.VirtualInterfaceId)))),
- resource.TestCheckResourceAttrSet(resourceName, "aws_device"),
- resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)),
- resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"),
- resource.TestCheckResourceAttr(resourceName, "connection_id", connectionId),
- resource.TestCheckResourceAttrSet(resourceName, "customer_address"),
- resource.TestCheckResourceAttrPair(resourceName, "dx_gateway_id", dxGatewayResourceName, "id"),
- resource.TestCheckResourceAttr(resourceName, "jumbo_frame_capable", "true"),
- resource.TestCheckResourceAttr(resourceName, "mtu", "1500"),
- resource.TestCheckResourceAttr(resourceName, "name", rName),
- resource.TestCheckResourceAttr(resourceName, "tags.%", "3"),
- resource.TestCheckResourceAttr(resourceName, "tags.Name", rName),
- resource.TestCheckResourceAttr(resourceName, "tags.Key2", "Value2b"),
- resource.TestCheckResourceAttr(resourceName, "tags.Key3", "Value3"),
- resource.TestCheckResourceAttr(resourceName, "vlan", strconv.Itoa(vlan)),
- ),
- },
- // Test import.
- {
- ResourceName: resourceName,
- ImportState: true,
- ImportStateVerify: true,
- },
- },
- })
- }
- func testAccCheckAwsDxTransitVirtualInterfaceExists(name string, vif *directconnect.VirtualInterface) resource.TestCheckFunc {
- return testAccCheckDxVirtualInterfaceExists(name, vif)
- }
- func testAccCheckAwsDxTransitVirtualInterfaceDestroy(s *terraform.State) error {
- return testAccCheckDxVirtualInterfaceDestroy(s, "aws_dx_transit_virtual_interface")
- }
- func testAccDxTransitVirtualInterfaceConfig_base(rName string, amzAsn int) string {
- return fmt.Sprintf(`
- resource "aws_dx_gateway" "test" {
- name = %[1]q
- amazon_side_asn = %[2]d
- }
- `, rName, amzAsn)
- }
- func testAccDxTransitVirtualInterfaceConfig_basic(cid, rName string, amzAsn, bgpAsn, vlan int) string {
- return testAccDxTransitVirtualInterfaceConfig_base(rName, amzAsn) + fmt.Sprintf(`
- resource "aws_dx_transit_virtual_interface" "test" {
- address_family = "ipv4"
- bgp_asn = %[3]d
- dx_gateway_id = aws_dx_gateway.test.id
- connection_id = %[1]q
- name = %[2]q
- vlan = %[4]d
- }
- `, cid, rName, bgpAsn, vlan)
- }
- func testAccDxTransitVirtualInterfaceConfig_updated(cid, rName string, amzAsn, bgpAsn, vlan int) string {
- return testAccDxTransitVirtualInterfaceConfig_base(rName, amzAsn) + fmt.Sprintf(`
- resource "aws_dx_transit_virtual_interface" "test" {
- address_family = "ipv4"
- bgp_asn = %[3]d
- dx_gateway_id = aws_dx_gateway.test.id
- connection_id = %[1]q
- mtu = 8500
- name = %[2]q
- vlan = %[4]d
- }
- `, cid, rName, bgpAsn, vlan)
- }
- func testAccDxTransitVirtualInterfaceConfig_tags(cid, rName string, amzAsn, bgpAsn, vlan int) string {
- return testAccDxTransitVirtualInterfaceConfig_base(rName, amzAsn) + fmt.Sprintf(`
- resource "aws_dx_transit_virtual_interface" "test" {
- address_family = "ipv4"
- bgp_asn = %[3]d
- dx_gateway_id = aws_dx_gateway.test.id
- connection_id = %[1]q
- name = %[2]q
- vlan = %[4]d
- tags = {
- Name = %[2]q
- Key1 = "Value1"
- Key2 = "Value2a"
- }
- }
- `, cid, rName, bgpAsn, vlan)
- }
- func testAccDxTransitVirtualInterfaceConfig_tagsUpdated(cid, rName string, amzAsn, bgpAsn, vlan int) string {
- return testAccDxTransitVirtualInterfaceConfig_base(rName, amzAsn) + fmt.Sprintf(`
- resource "aws_dx_transit_virtual_interface" "test" {
- address_family = "ipv4"
- bgp_asn = %[3]d
- dx_gateway_id = aws_dx_gateway.test.id
- connection_id = %[1]q
- name = %[2]q
- vlan = %[4]d
- tags = {
- Name = %[2]q
- Key2 = "Value2b"
- Key3 = "Value3"
- }
- }
- `, cid, rName, bgpAsn, vlan)
- }