11package tencentcloud
22
33import (
4+ "context"
5+ "fmt"
46 "testing"
57
8+ "github.com/hashicorp/terraform-plugin-sdk/terraform"
9+
610 "github.com/hashicorp/terraform-plugin-sdk/helper/resource"
711)
812
13+ const Domain = "terraformer.com"
14+
15+ func init () {
16+ // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_dnspod_domain_instance
17+ resource .AddTestSweepers ("tencentcloud_dnspod_domain_instance" , & resource.Sweeper {
18+ Name : "tencentcloud_dnspod_domain_instance" ,
19+ F : testSweepDnspodDoamin ,
20+ })
21+ }
22+ func testSweepDnspodDoamin (region string ) error {
23+ logId := getLogId (contextNil )
24+ ctx := context .WithValue (context .TODO (), logIdKey , logId )
25+ cli , _ := sharedClientForRegion (region )
26+ client := cli .(* TencentCloudClient ).apiV3Conn
27+ service := DnspodService {client }
28+
29+ response , err := service .DescribeDomain (ctx , Domain )
30+ if err != nil {
31+ return err
32+ }
33+
34+ domainInfo := response .Response .DomainInfo
35+ if domainInfo == nil {
36+ return nil
37+ }
38+
39+ err = service .DeleteDomain (ctx , Domain )
40+ if err != nil {
41+ return err
42+ }
43+
44+ return nil
45+ }
46+
47+ // go test -i; go test -test.run TestAccTencentCloudDnspodDoamin -v
948func TestAccTencentCloudDnspodDoamin (t * testing.T ) {
1049 t .Parallel ()
1150 resource .Test (t , resource.TestCase {
12- Providers : testAccProviders ,
51+ PreCheck : func () { testAccPreCheckCommon (t , ACCOUNT_TYPE_COMMON ) },
52+ Providers : testAccProviders ,
53+ CheckDestroy : testAccCheckDnspodDomainDestroy ,
1354 Steps : []resource.TestStep {
1455 {
1556 Config : testAccTencentCloudDnspodDomain ,
1657 Check : resource .ComposeTestCheckFunc (
58+ testAccCheckDnspodDomainExists ("tencentcloud_dnspod_domain_instance.domain" ),
1759 resource .TestCheckResourceAttr ("tencentcloud_dnspod_domain_instance.domain" , "domain" , "terraformer.com" ),
1860 resource .TestCheckResourceAttr ("tencentcloud_dnspod_domain_instance.domain" , "is_mark" , "no" ),
1961 ),
@@ -22,9 +64,55 @@ func TestAccTencentCloudDnspodDoamin(t *testing.T) {
2264 })
2365}
2466
67+ func testAccCheckDnspodDomainDestroy (s * terraform.State ) error {
68+ logId := getLogId (contextNil )
69+ ctx := context .WithValue (context .TODO (), logIdKey , logId )
70+ dnspodService := DnspodService {client : testAccProvider .Meta ().(* TencentCloudClient ).apiV3Conn }
71+ for _ , rs := range s .RootModule ().Resources {
72+ if rs .Type != "tencentcloud_dnspod_domain_instance" {
73+ continue
74+ }
75+
76+ response , err := dnspodService .DescribeDomain (ctx , rs .Primary .ID )
77+ if err != nil {
78+ return nil
79+ }
80+ if response .Response .DomainInfo != nil {
81+ return fmt .Errorf ("record rule %s still exists" , rs .Primary .ID )
82+ }
83+ }
84+ return nil
85+ }
86+
87+ func testAccCheckDnspodDomainExists (r string ) resource.TestCheckFunc {
88+ return func (s * terraform.State ) error {
89+ logId := getLogId (contextNil )
90+ ctx := context .WithValue (context .TODO (), logIdKey , logId )
91+
92+ rs , ok := s .RootModule ().Resources [r ]
93+ if ! ok {
94+ return fmt .Errorf ("resource %s is not found" , r )
95+ }
96+ if rs .Primary .ID == "" {
97+ return fmt .Errorf ("domain id is not set" )
98+ }
99+
100+ dnspodService := DnspodService {client : testAccProvider .Meta ().(* TencentCloudClient ).apiV3Conn }
101+ response , err := dnspodService .DescribeDomain (ctx , rs .Primary .ID )
102+ if err != nil {
103+ return err
104+ }
105+ if response .Response .DomainInfo == nil {
106+ return fmt .Errorf ("dnspod domain %s is not found" , rs .Primary .ID )
107+ }
108+
109+ return nil
110+ }
111+ }
112+
25113const testAccTencentCloudDnspodDomain = `
26114resource "tencentcloud_dnspod_domain_instance" "domain" {
27- domain = "terraformer.com "
115+ domain = "` + Domain + ` "
28116 is_mark = "no"
29117}
30118`
0 commit comments