github.com/ottenhoff/terraform@v0.7.0-rc1.0.20160607213102-ac2d195cc560/builtin/providers/test/resource_test.go (about) 1 package test 2 3 import ( 4 "strings" 5 "testing" 6 7 "github.com/hashicorp/terraform/helper/resource" 8 "github.com/hashicorp/terraform/terraform" 9 ) 10 11 func TestResource_basic(t *testing.T) { 12 resource.UnitTest(t, resource.TestCase{ 13 Providers: testAccProviders, 14 CheckDestroy: testAccCheckResourceDestroy, 15 Steps: []resource.TestStep{ 16 resource.TestStep{ 17 Config: strings.TrimSpace(` 18 resource "test_resource" "foo" { 19 required = "yep" 20 } 21 `), 22 Check: func(s *terraform.State) error { 23 return nil 24 }, 25 }, 26 }, 27 }) 28 } 29 30 // Targeted test in TestContext2Apply_ignoreChangesCreate 31 func TestResource_ignoreChangesRequired(t *testing.T) { 32 resource.UnitTest(t, resource.TestCase{ 33 Providers: testAccProviders, 34 CheckDestroy: testAccCheckResourceDestroy, 35 Steps: []resource.TestStep{ 36 resource.TestStep{ 37 Config: strings.TrimSpace(` 38 resource "test_resource" "foo" { 39 required = "yep" 40 lifecycle { 41 ignore_changes = ["required"] 42 } 43 } 44 `), 45 Check: func(s *terraform.State) error { 46 return nil 47 }, 48 }, 49 }, 50 }) 51 } 52 53 func TestResource_ignoreChangesEmpty(t *testing.T) { 54 resource.UnitTest(t, resource.TestCase{ 55 Providers: testAccProviders, 56 CheckDestroy: testAccCheckResourceDestroy, 57 Steps: []resource.TestStep{ 58 resource.TestStep{ 59 Config: strings.TrimSpace(` 60 resource "test_resource" "foo" { 61 required = "yep" 62 optional_force_new = "one" 63 lifecycle { 64 ignore_changes = [] 65 } 66 } 67 `), 68 Check: func(s *terraform.State) error { 69 return nil 70 }, 71 }, 72 resource.TestStep{ 73 Config: strings.TrimSpace(` 74 resource "test_resource" "foo" { 75 required = "yep" 76 optional_force_new = "two" 77 lifecycle { 78 ignore_changes = [] 79 } 80 } 81 `), 82 Check: func(s *terraform.State) error { 83 return nil 84 }, 85 }, 86 }, 87 }) 88 } 89 90 func TestResource_ignoreChangesForceNew(t *testing.T) { 91 resource.UnitTest(t, resource.TestCase{ 92 Providers: testAccProviders, 93 CheckDestroy: testAccCheckResourceDestroy, 94 Steps: []resource.TestStep{ 95 resource.TestStep{ 96 Config: strings.TrimSpace(` 97 resource "test_resource" "foo" { 98 required = "yep" 99 optional_force_new = "one" 100 lifecycle { 101 ignore_changes = ["optional_force_new"] 102 } 103 } 104 `), 105 Check: func(s *terraform.State) error { 106 return nil 107 }, 108 }, 109 resource.TestStep{ 110 Config: strings.TrimSpace(` 111 resource "test_resource" "foo" { 112 required = "yep" 113 optional_force_new = "two" 114 lifecycle { 115 ignore_changes = ["optional_force_new"] 116 } 117 } 118 `), 119 Check: func(s *terraform.State) error { 120 return nil 121 }, 122 }, 123 }, 124 }) 125 } 126 127 // Covers specific scenario in #6005, handled by normalizing boolean strings in 128 // helper/schema 129 func TestResource_ignoreChangesForceNewBoolean(t *testing.T) { 130 resource.UnitTest(t, resource.TestCase{ 131 Providers: testAccProviders, 132 CheckDestroy: testAccCheckResourceDestroy, 133 Steps: []resource.TestStep{ 134 resource.TestStep{ 135 Config: strings.TrimSpace(` 136 resource "test_resource" "foo" { 137 required = "yep" 138 optional_force_new = "one" 139 optional_bool = true 140 lifecycle { 141 ignore_changes = ["optional_force_new"] 142 } 143 } 144 `), 145 Check: func(s *terraform.State) error { 146 return nil 147 }, 148 }, 149 resource.TestStep{ 150 Config: strings.TrimSpace(` 151 resource "test_resource" "foo" { 152 required = "yep" 153 optional_force_new = "two" 154 optional_bool = true 155 lifecycle { 156 ignore_changes = ["optional_force_new"] 157 } 158 } 159 `), 160 Check: func(s *terraform.State) error { 161 return nil 162 }, 163 }, 164 }, 165 }) 166 } 167 168 func TestResource_ignoreChangesMap(t *testing.T) { 169 resource.UnitTest(t, resource.TestCase{ 170 Providers: testAccProviders, 171 CheckDestroy: testAccCheckResourceDestroy, 172 Steps: []resource.TestStep{ 173 resource.TestStep{ 174 Config: strings.TrimSpace(` 175 resource "test_resource" "foo" { 176 required = "yep" 177 optional_computed_map { 178 foo = "bar" 179 } 180 lifecycle { 181 ignore_changes = ["optional_computed_map"] 182 } 183 } 184 `), 185 Check: func(s *terraform.State) error { 186 return nil 187 }, 188 }, 189 resource.TestStep{ 190 Config: strings.TrimSpace(` 191 resource "test_resource" "foo" { 192 required = "yep" 193 optional_computed_map { 194 foo = "bar" 195 no = "update" 196 } 197 lifecycle { 198 ignore_changes = ["optional_computed_map"] 199 } 200 } 201 `), 202 Check: func(s *terraform.State) error { 203 return nil 204 }, 205 }, 206 }, 207 }) 208 } 209 210 func testAccCheckResourceDestroy(s *terraform.State) error { 211 return nil 212 }