Skip to content

Commit 3239aaf

Browse files
authored
Merge pull request #134 from SumoLogic/ssain-fix-cloudsyslog-source-test
add check destroy and clean up cloudsyslog_source test
2 parents a86d051 + 8c0e26b commit 3239aaf

File tree

1 file changed

+86
-3
lines changed

1 file changed

+86
-3
lines changed

sumologic/resource_sumologic_cloudsyslog_source_test.go

Lines changed: 86 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,95 @@
11
package sumologic
22

33
import (
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

1013
func 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

Comments
 (0)