11package sumologic
22
33import (
4+ "fmt"
5+ "strconv"
6+ "strings"
47 "testing"
58
69 "github.com/hashicorp/terraform-plugin-sdk/helper/resource"
710 "github.com/hashicorp/terraform-plugin-sdk/terraform"
811)
912
1013func TestAccSumologicCloudsyslogSource_basic (t * testing.T ) {
14+ var cloudsyslogSource CloudSyslogSource
1115 resource .Test (t , resource.TestCase {
12- Providers : testAccProviders ,
16+ PreCheck : func () { testAccPreCheck (t ) },
17+ Providers : testAccProviders ,
18+ CheckDestroy : testAccCheckCloudsyslogSourceDestroy ("sumologic_cloudsyslog_source.cloudsyslog" , cloudsyslogSource ),
1319 Steps : []resource.TestStep {
1420 {
1521 Config : testAccSumologicCloudsyslogSourceConfig ,
1622 Check : resource .ComposeTestCheckFunc (
17- testAccCheckCloudSyslogSourceExists ("sumologic_cloudsyslog_source.cloudsyslog" , t ),
23+ testAccCheckCloudSyslogSourceExists ("sumologic_cloudsyslog_source.cloudsyslog" , & cloudsyslogSource , t ),
1824 resource .TestCheckResourceAttrSet ("sumologic_cloudsyslog_source.cloudsyslog" , "id" ),
25+ resource .TestCheckResourceAttr ("sumologic_cloudsyslog_source.cloudsyslog" , "name" , "test_cloudsyslog" ),
26+ resource .TestCheckResourceAttr ("sumologic_cloudsyslog_source.cloudsyslog" , "description" , "test_desc" ),
27+ resource .TestCheckResourceAttr ("sumologic_cloudsyslog_source.cloudsyslog" , "category" , "source/category" ),
28+ ),
29+ },
30+ {
31+ Config : testAccSumologicCloudsyslogSourceUpdateConfig ,
32+ Check : resource .ComposeTestCheckFunc (
33+ testAccCheckCloudSyslogSourceExists ("sumologic_cloudsyslog_source.cloudsyslog" , & cloudsyslogSource , t ),
34+ resource .TestCheckResourceAttrSet ("sumologic_cloudsyslog_source.cloudsyslog" , "id" ),
35+ resource .TestCheckResourceAttr ("sumologic_cloudsyslog_source.cloudsyslog" , "name" , "test_cloudsyslog_update" ),
36+ resource .TestCheckResourceAttr ("sumologic_cloudsyslog_source.cloudsyslog" , "description" , "test_desc_update" ),
37+ resource .TestCheckResourceAttr ("sumologic_cloudsyslog_source.cloudsyslog" , "category" , "source/category" ),
1938 ),
2039 },
2140 }})
2241}
2342
24- func testAccCheckCloudSyslogSourceExists ( n string , t * testing. T ) resource.TestCheckFunc {
43+ func testAccCheckCloudsyslogSourceDestroy ( name string , cloudsyslogSource CloudSyslogSource ) resource.TestCheckFunc {
2544 return func (s * terraform.State ) error {
45+ client := testAccProvider .Meta ().(* Client )
46+ rs , ok := s .RootModule ().Resources [name ]
47+ if ! ok {
48+ //need this so that we don't get an unused import error for strconv in some cases
49+ return fmt .Errorf ("Error = %s. CloudsyslogSource not found: %s" , strconv .FormatBool (ok ), name )
50+ }
51+ collectorID , err := strconv .Atoi (rs .Primary .Attributes ["collector_id" ])
52+ if err != nil {
53+ return fmt .Errorf ("Encountered an error: " + err .Error ())
54+ }
55+ u , err := client .GetCloudSyslogSource (collectorID , cloudsyslogSource .ID )
56+ if err != nil {
57+ return fmt .Errorf ("Encountered an error: " + err .Error ())
58+ }
59+ if u != nil {
60+ return fmt .Errorf ("FieldExtractionRule still exists" )
61+ }
62+ return nil
63+ }
64+ }
65+
66+ func testAccCheckCloudSyslogSourceExists (name string , cloudsyslogSource * CloudSyslogSource , t * testing.T ) resource.TestCheckFunc {
67+ return func (s * terraform.State ) error {
68+ rs , ok := s .RootModule ().Resources [name ]
69+ if ! ok {
70+ //need this so that we don't get an unused import error for strconv in some cases
71+ return fmt .Errorf ("Error = %s. CloudsyslogSource not found: %s" , strconv .FormatBool (ok ), name )
72+ }
73+
74+ //need this so that we don't get an unused import error for strings in some cases
75+ if strings .EqualFold (rs .Primary .ID , "" ) {
76+ return fmt .Errorf ("CloudsyslogSource, ID is not set" )
77+ }
78+
79+ id , err := strconv .Atoi (rs .Primary .ID )
80+ if err != nil {
81+ return fmt .Errorf ("Encountered an error: " + err .Error ())
82+ }
83+ collectorID , err := strconv .Atoi (rs .Primary .Attributes ["collector_id" ])
84+ if err != nil {
85+ return fmt .Errorf ("Encountered an error: " + err .Error ())
86+ }
87+ c := testAccProvider .Meta ().(* Client )
88+ newCloudsyslogSource , err := c .GetCloudSyslogSource (collectorID , id )
89+ if err != nil {
90+ return fmt .Errorf ("CloudsyslogSource, %v not found" , id )
91+ }
92+ cloudsyslogSource = newCloudsyslogSource
2693 return nil
2794 }
2895}
@@ -42,3 +109,19 @@ resource "sumologic_cloudsyslog_source" "cloudsyslog" {
42109 collector_id = "${sumologic_collector.test.id}"
43110}
44111`
112+
113+ var testAccSumologicCloudsyslogSourceUpdateConfig = `
114+
115+ resource "sumologic_collector" "test" {
116+ name = "MyCollector"
117+ description = "MyCollectorDesc"
118+ category = "Cat"
119+ }
120+
121+ resource "sumologic_cloudsyslog_source" "cloudsyslog" {
122+ name = "test_cloudsyslog_update"
123+ description = "test_desc_update"
124+ category = "source/category"
125+ collector_id = "${sumologic_collector.test.id}"
126+ }
127+ `
0 commit comments