github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/opc/resource_ip_address_association_test.go (about) 1 package opc 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/hashicorp/go-oracle-terraform/compute" 8 "github.com/hashicorp/terraform/helper/acctest" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 func TestAccOPCIPAddressAssociation_Basic(t *testing.T) { 14 rInt := acctest.RandInt() 15 resourceName := "opc_compute_ip_address_association.test" 16 resource.Test(t, resource.TestCase{ 17 PreCheck: func() { testAccPreCheck(t) }, 18 Providers: testAccProviders, 19 CheckDestroy: testAccCheckIPAddressAssociationDestroy, 20 Steps: []resource.TestStep{ 21 { 22 Config: testAccIPAddressAssociationBasic(rInt), 23 Check: resource.ComposeTestCheckFunc( 24 testAccCheckIPAddressAssociationExists, 25 resource.TestCheckResourceAttr( 26 resourceName, "tags.#", "2"), 27 ), 28 }, 29 { 30 Config: testAccIPAddressAssociationBasic_Update(rInt), 31 Check: resource.ComposeTestCheckFunc( 32 resource.TestCheckResourceAttr( 33 resourceName, "tags.#", "1"), 34 ), 35 }, 36 }, 37 }) 38 } 39 40 func TestAccOPCIPAddressAssociation_Full(t *testing.T) { 41 rInt := acctest.RandInt() 42 resourceName := "opc_compute_ip_address_association.test" 43 resource.Test(t, resource.TestCase{ 44 PreCheck: func() { testAccPreCheck(t) }, 45 Providers: testAccProviders, 46 CheckDestroy: testAccCheckIPAddressAssociationDestroy, 47 Steps: []resource.TestStep{ 48 { 49 Config: testAccIPAddressAssociationFull(rInt), 50 Check: resource.ComposeTestCheckFunc( 51 testAccCheckIPAddressAssociationExists, 52 resource.TestCheckResourceAttr( 53 resourceName, "vnic", fmt.Sprintf("test-vnic-data-%d", rInt)), 54 resource.TestCheckResourceAttr( 55 resourceName, "ip_address_reservation", fmt.Sprintf("testing-ip-address-association-%d", rInt)), 56 ), 57 }, 58 }, 59 }) 60 } 61 62 func testAccCheckIPAddressAssociationExists(s *terraform.State) error { 63 client := testAccProvider.Meta().(*compute.Client).IPAddressAssociations() 64 65 for _, rs := range s.RootModule().Resources { 66 if rs.Type != "opc_compute_ip_address_association" { 67 continue 68 } 69 70 input := compute.GetIPAddressAssociationInput{ 71 Name: rs.Primary.Attributes["name"], 72 } 73 if _, err := client.GetIPAddressAssociation(&input); err != nil { 74 return fmt.Errorf("Error retrieving state of IP Address Association %s: %s", input.Name, err) 75 } 76 } 77 78 return nil 79 } 80 81 func testAccCheckIPAddressAssociationDestroy(s *terraform.State) error { 82 client := testAccProvider.Meta().(*compute.Client).IPAddressAssociations() 83 84 for _, rs := range s.RootModule().Resources { 85 if rs.Type != "opc_compute_ip_address_association" { 86 continue 87 } 88 89 input := compute.GetIPAddressAssociationInput{ 90 Name: rs.Primary.Attributes["name"], 91 } 92 if info, err := client.GetIPAddressAssociation(&input); err == nil { 93 return fmt.Errorf("IP Address Association %s still exists: %#v", input.Name, info) 94 } 95 } 96 97 return nil 98 } 99 100 func testAccIPAddressAssociationBasic(rInt int) string { 101 return fmt.Sprintf(` 102 resource "opc_compute_ip_address_association" "test" { 103 name = "testing-acc-%d" 104 description = "acctesting ip address association test %d" 105 tags = ["tag1", "tag2"] 106 }`, rInt, rInt) 107 } 108 109 func testAccIPAddressAssociationBasic_Update(rInt int) string { 110 return fmt.Sprintf(` 111 resource "opc_compute_ip_address_association" "test" { 112 name = "testing-acc-%d" 113 description = "acctesting ip address association test updated %d" 114 tags = ["tag1"] 115 }`, rInt, rInt) 116 } 117 118 func testAccIPAddressAssociationFull(rInt int) string { 119 return fmt.Sprintf(` 120 resource "opc_compute_ip_network" "foo" { 121 name = "testing-vnic-data-%d" 122 description = "testing-ip-address-association" 123 ip_address_prefix = "10.1.13.0/24" 124 } 125 resource "opc_compute_instance" "test" { 126 name = "test-%d" 127 label = "test" 128 shape = "oc3" 129 image_list = "/oracle/public/oel_6.7_apaas_16.4.5_1610211300" 130 networking_info { 131 index = 0 132 ip_network = "${opc_compute_ip_network.foo.id}" 133 vnic = "test-vnic-data-%d" 134 shared_network = false 135 mac_address = "02:5a:cd:ec:2e:4c" 136 } 137 } 138 data "opc_compute_network_interface" "eth0" { 139 instance_name = "${opc_compute_instance.test.name}" 140 instance_id = "${opc_compute_instance.test.id}" 141 interface = "eth0" 142 } 143 resource "opc_compute_ip_address_reservation" "test" { 144 name = "testing-ip-address-association-%d" 145 description = "testing-desc-%d" 146 ip_address_pool = "public-ippool" 147 } 148 resource "opc_compute_ip_address_association" "test" { 149 name = "testing-acc-%d" 150 ip_address_reservation = "${opc_compute_ip_address_reservation.test.name}" 151 vnic = "${data.opc_compute_network_interface.eth0.vnic}" 152 description = "acctesting ip address association test %d" 153 tags = ["tag1", "tag2"] 154 }`, rInt, rInt, rInt, rInt, rInt, rInt, rInt) 155 }