github.com/sarguru/terraform@v0.6.17-0.20160525232901-8fcdfd7e3dc9/builtin/providers/nsone/resource_datafeed_test.go (about) 1 package nsone 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/bobtfish/go-nsone-api" 8 "github.com/hashicorp/terraform/helper/resource" 9 "github.com/hashicorp/terraform/terraform" 10 ) 11 12 func TestAccDataFeed_basic(t *testing.T) { 13 var dataFeed nsone.DataFeed 14 resource.Test(t, resource.TestCase{ 15 PreCheck: func() { testAccPreCheck(t) }, 16 Providers: testAccProviders, 17 CheckDestroy: testAccCheckDataFeedDestroy, 18 Steps: []resource.TestStep{ 19 resource.TestStep{ 20 Config: testAccDataFeedBasic, 21 Check: resource.ComposeTestCheckFunc( 22 testAccCheckDataFeedState("name", "terraform test"), 23 testAccCheckDataFeedExists("nsone_datafeed.foobar", "nsone_datasource.api", &dataFeed), 24 testAccCheckDataFeedAttributes(&dataFeed), 25 ), 26 }, 27 }, 28 }) 29 } 30 31 func TestAccDataFeed_updated(t *testing.T) { 32 var dataFeed nsone.DataFeed 33 resource.Test(t, resource.TestCase{ 34 PreCheck: func() { testAccPreCheck(t) }, 35 Providers: testAccProviders, 36 CheckDestroy: testAccCheckDataFeedDestroy, 37 Steps: []resource.TestStep{ 38 resource.TestStep{ 39 Config: testAccDataFeedBasic, 40 Check: resource.ComposeTestCheckFunc( 41 testAccCheckDataFeedState("name", "terraform test"), 42 testAccCheckDataFeedExists("nsone_datafeed.foobar", "nsone_datasource.api", &dataFeed), 43 testAccCheckDataFeedAttributes(&dataFeed), 44 ), 45 }, 46 resource.TestStep{ 47 Config: testAccDataFeedUpdated, 48 Check: resource.ComposeTestCheckFunc( 49 testAccCheckDataFeedState("name", "terraform test"), 50 testAccCheckDataFeedExists("nsone_datafeed.foobar", "nsone_datasource.api", &dataFeed), 51 testAccCheckDataFeedAttributesUpdated(&dataFeed), 52 ), 53 }, 54 }, 55 }) 56 } 57 58 func testAccCheckDataFeedState(key, value string) resource.TestCheckFunc { 59 return func(s *terraform.State) error { 60 rs, ok := s.RootModule().Resources["nsone_datafeed.foobar"] 61 if !ok { 62 return fmt.Errorf("Not found: %s", "nsone_datafeed.foobar") 63 } 64 65 if rs.Primary.ID == "" { 66 return fmt.Errorf("No ID is set") 67 } 68 69 p := rs.Primary 70 if p.Attributes[key] != value { 71 return fmt.Errorf( 72 "%s != %s (actual: %s)", key, value, p.Attributes[key]) 73 } 74 75 return nil 76 } 77 } 78 79 func testAccCheckDataFeedExists(n string, dsrc string, dataFeed *nsone.DataFeed) resource.TestCheckFunc { 80 return func(s *terraform.State) error { 81 rs, ok := s.RootModule().Resources[n] 82 ds, ok := s.RootModule().Resources[dsrc] 83 84 if !ok { 85 return fmt.Errorf("Not found: %s", n) 86 } 87 88 if rs.Primary.ID == "" { 89 return fmt.Errorf("NoID is set") 90 } 91 92 if ds.Primary.ID == "" { 93 return fmt.Errorf("NoID is set for the datasource") 94 } 95 96 client := testAccProvider.Meta().(*nsone.APIClient) 97 98 foundFeed, err := client.GetDataFeed(ds.Primary.Attributes["id"], rs.Primary.Attributes["id"]) 99 100 p := rs.Primary 101 102 if err != nil { 103 return err 104 } 105 106 if foundFeed.Name != p.Attributes["name"] { 107 return fmt.Errorf("DataFeed not found") 108 } 109 110 *dataFeed = *foundFeed 111 112 return nil 113 } 114 } 115 116 func testAccCheckDataFeedDestroy(s *terraform.State) error { 117 client := testAccProvider.Meta().(*nsone.APIClient) 118 119 var dataFeedID string 120 var dataSourceID string 121 122 for _, rs := range s.RootModule().Resources { 123 124 if rs.Type == "nsone_datasource" { 125 dataSourceID = rs.Primary.Attributes["id"] 126 } 127 128 if rs.Type == "nsone_datafeed" { 129 dataFeedID = rs.Primary.Attributes["id"] 130 } 131 } 132 133 df, _ := client.GetDataFeed(dataSourceID, dataFeedID) 134 135 if df.Id != "" { 136 return fmt.Errorf("DataFeed still exists") 137 } 138 139 return nil 140 } 141 142 func testAccCheckDataFeedAttributes(dataFeed *nsone.DataFeed) resource.TestCheckFunc { 143 return func(s *terraform.State) error { 144 145 if dataFeed.Config["label"] != "exampledc2" { 146 return fmt.Errorf("Bad value : %s", dataFeed.Config["label"]) 147 } 148 149 return nil 150 } 151 } 152 153 func testAccCheckDataFeedAttributesUpdated(dataFeed *nsone.DataFeed) resource.TestCheckFunc { 154 return func(s *terraform.State) error { 155 156 if dataFeed.Config["label"] != "exampledc3" { 157 return fmt.Errorf("Bad value : %s", dataFeed.Config["label"]) 158 } 159 160 return nil 161 } 162 } 163 164 const testAccDataFeedBasic = ` 165 resource "nsone_datasource" "api" { 166 name = "terraform test" 167 sourcetype = "nsone_v1" 168 } 169 170 resource "nsone_datafeed" "foobar" { 171 name = "terraform test" 172 source_id = "${nsone_datasource.api.id}" 173 config { 174 label = "exampledc2" 175 } 176 }` 177 178 const testAccDataFeedUpdated = ` 179 resource "nsone_datasource" "api" { 180 name = "terraform test" 181 sourcetype = "nsone_v1" 182 } 183 184 resource "nsone_datafeed" "foobar" { 185 name = "terraform test" 186 source_id = "${nsone_datasource.api.id}" 187 config { 188 label = "exampledc3" 189 } 190 }`