diff --git a/tencentcloud/basic_test.go b/tencentcloud/basic_test.go
index 666780dd3e..d6a6072924 100644
--- a/tencentcloud/basic_test.go
+++ b/tencentcloud/basic_test.go
@@ -772,3 +772,13 @@ locals {
`
// End of MongoDB
+
+// TEO
+
+const (
+ defaultZoneName = "tf-teo-t.xyz"
+ defaultZoneId = "zone-2a1u0y616jz6"
+ defaultPolicyId = "11587"
+)
+
+// End of TEO
diff --git a/tencentcloud/data_source_tc_teo_bot_managed_rules_test.go b/tencentcloud/data_source_tc_teo_bot_managed_rules_test.go
index 8bc450dee4..8f7632c525 100644
--- a/tencentcloud/data_source_tc_teo_bot_managed_rules_test.go
+++ b/tencentcloud/data_source_tc_teo_bot_managed_rules_test.go
@@ -6,6 +6,7 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
+// go test -i; go test -test.run TestAccTencentCloudTeoBotManagedRulesDataSource -v
func TestAccTencentCloudTeoBotManagedRulesDataSource(t *testing.T) {
t.Parallel()
@@ -23,11 +24,21 @@ func TestAccTencentCloudTeoBotManagedRulesDataSource(t *testing.T) {
})
}
-const testAccDataSourceTeoBotManagedRules = `
+const testAccDataSourceTeoBotManagedRulesVar = `
+variable "zone_id" {
+ default = "` + defaultZoneId + `"
+}
+
+variable "entity" {
+ default = "` + defaultZoneName + `"
+}
+`
+
+const testAccDataSourceTeoBotManagedRules = testAccDataSourceTeoBotManagedRulesVar + `
data "tencentcloud_teo_bot_managed_rules" "bot_managed_rules" {
- zone_id = ""
- entity = ""
- }
+ zone_id = var.zone_id
+ entity = var.entity
+}
`
diff --git a/tencentcloud/data_source_tc_teo_bot_portrait_rules_test.go b/tencentcloud/data_source_tc_teo_bot_portrait_rules_test.go
index 60d4fea84d..fbec40147b 100644
--- a/tencentcloud/data_source_tc_teo_bot_portrait_rules_test.go
+++ b/tencentcloud/data_source_tc_teo_bot_portrait_rules_test.go
@@ -6,6 +6,7 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
+// go test -i; go test -test.run TestAccTencentCloudTeoBotPortraitRulesDataSource -v
func TestAccTencentCloudTeoBotPortraitRulesDataSource(t *testing.T) {
t.Parallel()
@@ -23,11 +24,21 @@ func TestAccTencentCloudTeoBotPortraitRulesDataSource(t *testing.T) {
})
}
-const testAccDataSourceTeoBotPortraitRules = `
+const testAccDataSourceTeoBotPortraitRulesVar = `
+variable "zone_id" {
+ default = "` + defaultZoneId + `"
+}
+
+variable "entity" {
+ default = "` + defaultZoneName + `"
+}
+`
+
+const testAccDataSourceTeoBotPortraitRules = testAccDataSourceTeoBotPortraitRulesVar + `
data "tencentcloud_teo_bot_portrait_rules" "bot_portrait_rules" {
- zone_id = ""
- entity = ""
- }
+ zone_id = var.zone_id
+ entity = var.entity
+}
`
diff --git a/tencentcloud/data_source_tc_teo_rule_engine_settings_test.go b/tencentcloud/data_source_tc_teo_rule_engine_settings_test.go
index d8a637cc47..4d98a359cf 100644
--- a/tencentcloud/data_source_tc_teo_rule_engine_settings_test.go
+++ b/tencentcloud/data_source_tc_teo_rule_engine_settings_test.go
@@ -6,6 +6,7 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
+// go test -i; go test -test.run TestAccTencentCloudTeoRuleEngineSettingsDataSource -v
func TestAccTencentCloudTeoRuleEngineSettingsDataSource(t *testing.T) {
t.Parallel()
@@ -26,6 +27,6 @@ func TestAccTencentCloudTeoRuleEngineSettingsDataSource(t *testing.T) {
const testAccDataSourceTeoRuleEngineSettings = `
data "tencentcloud_teo_rule_engine_settings" "rule_engine_settings" {
- }
+}
`
diff --git a/tencentcloud/data_source_tc_teo_security_policy_regions_test.go b/tencentcloud/data_source_tc_teo_security_policy_regions_test.go
index a7ff4b4b80..a228addb6e 100644
--- a/tencentcloud/data_source_tc_teo_security_policy_regions_test.go
+++ b/tencentcloud/data_source_tc_teo_security_policy_regions_test.go
@@ -6,6 +6,7 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
+// go test -i; go test -test.run TestAccTencentCloudTeoSecurityPolicyRegionsDataSource -v
func TestAccTencentCloudTeoSecurityPolicyRegionsDataSource(t *testing.T) {
t.Parallel()
@@ -26,6 +27,6 @@ func TestAccTencentCloudTeoSecurityPolicyRegionsDataSource(t *testing.T) {
const testAccDataSourceTeoSecurityPolicyRegions = `
data "tencentcloud_teo_security_policy_regions" "security_policy_regions" {
- }
+}
`
diff --git a/tencentcloud/data_source_tc_teo_waf_rule_groups_test.go b/tencentcloud/data_source_tc_teo_waf_rule_groups_test.go
index 4f4abffe5e..d9edf809fd 100644
--- a/tencentcloud/data_source_tc_teo_waf_rule_groups_test.go
+++ b/tencentcloud/data_source_tc_teo_waf_rule_groups_test.go
@@ -6,6 +6,7 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
+// go test -i; go test -test.run TestAccTencentCloudTeoWafRuleGroupsDataSource -v
func TestAccTencentCloudTeoWafRuleGroupsDataSource(t *testing.T) {
t.Parallel()
@@ -23,9 +24,21 @@ func TestAccTencentCloudTeoWafRuleGroupsDataSource(t *testing.T) {
})
}
-const testAccDataSourceTeoWafRuleGroups = `
+const testAccDataSourceTeoWafRuleGroupsVar = `
+variable "zone_id" {
+ default = "` + defaultZoneId + `"
+}
+
+variable "entity" {
+ default = "` + defaultZoneName + `"
+}
+`
+
+const testAccDataSourceTeoWafRuleGroups = testAccDataSourceTeoWafRuleGroupsVar + `
data "tencentcloud_teo_waf_rule_groups" "waf_rule_groups" {
- }
+ zone_id = var.zone_id
+ entity = var.entity
+}
`
diff --git a/tencentcloud/data_source_tc_teo_zone_available_plans_test.go b/tencentcloud/data_source_tc_teo_zone_available_plans_test.go
index 744ea9d03a..ef0606ec38 100644
--- a/tencentcloud/data_source_tc_teo_zone_available_plans_test.go
+++ b/tencentcloud/data_source_tc_teo_zone_available_plans_test.go
@@ -6,6 +6,7 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
+// go test -i; go test -test.run TestAccTencentCloudTeoZoneAvailablePlansDataSource -v
func TestAccTencentCloudTeoZoneAvailablePlansDataSource(t *testing.T) {
t.Parallel()
@@ -26,6 +27,6 @@ func TestAccTencentCloudTeoZoneAvailablePlansDataSource(t *testing.T) {
const testAccDataSourceTeoZoneAvailablePlans = `
data "tencentcloud_teo_zone_available_plans" "zone_available_plans" {
- }
+}
`
diff --git a/tencentcloud/data_source_tc_teo_zone_ddos_policy_test.go b/tencentcloud/data_source_tc_teo_zone_ddos_policy_test.go
index de1120c996..fa5f859768 100644
--- a/tencentcloud/data_source_tc_teo_zone_ddos_policy_test.go
+++ b/tencentcloud/data_source_tc_teo_zone_ddos_policy_test.go
@@ -6,6 +6,7 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
+// go test -i; go test -test.run TestAccTencentCloudTeoZoneDDoSPolicyDataSource -v
func TestAccTencentCloudTeoZoneDDoSPolicyDataSource(t *testing.T) {
t.Parallel()
@@ -23,10 +24,16 @@ func TestAccTencentCloudTeoZoneDDoSPolicyDataSource(t *testing.T) {
})
}
-const testAccDataSourceTeoZoneDDoSPolicy = `
+const testAccDataSourceTeoZoneDDoSPolicyVar = `
+variable "zone_id" {
+ default = "` + defaultZoneId + `"
+}
+`
+
+const testAccDataSourceTeoZoneDDoSPolicy = testAccDataSourceTeoZoneDDoSPolicyVar + `
data "tencentcloud_teo_zone_ddos_policy" "zone_ddos_policy" {
- zone_id = ""
+ zone_id = var.zone_id
}
`
diff --git a/tencentcloud/resource_tc_teo_application_proxy_rule_test.go b/tencentcloud/resource_tc_teo_application_proxy_rule_test.go
index 21f905db3e..5a3b68f492 100644
--- a/tencentcloud/resource_tc_teo_application_proxy_rule_test.go
+++ b/tencentcloud/resource_tc_teo_application_proxy_rule_test.go
@@ -1,26 +1,34 @@
package tencentcloud
import (
+ "context"
+ "fmt"
+ "strings"
"testing"
+ "github.com/hashicorp/terraform-plugin-sdk/terraform"
+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
-func TestAccTencentCloudNeedFixTeoApplicationProxyRule_basic(t *testing.T) {
+// go test -i; go test -test.run TestAccTencentCloudTeoApplicationProxyRule_basic -v
+func TestAccTencentCloudTeoApplicationProxyRule_basic(t *testing.T) {
t.Parallel()
-
resource.Test(t, resource.TestCase{
- PreCheck: func() { testAccPreCheck(t) },
- Providers: testAccProviders,
+ PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PRIVATE) },
+ Providers: testAccProviders,
+ CheckDestroy: testAccCheckApplicationProxyRuleDestroy,
Steps: []resource.TestStep{
{
Config: testAccTeoApplicationProxyRule,
Check: resource.ComposeTestCheckFunc(
- resource.TestCheckResourceAttrSet("tencentcloud_teo_application_proxy_rule.application_proxy_rule", "id"),
+ testAccCheckApplicationProxyRuleExists("tencentcloud_teo_application_proxy_rule.basic"),
+ //resource.TestCheckResourceAttr("tencentcloud_teo_application_proxy_rule.basic", "zone_name", "tf-teo.com"),
+ //resource.TestCheckResourceAttr("tencentcloud_teo_application_proxy_rule.basic", "plan_type", "ent_with_bot"),
),
},
{
- ResourceName: "tencentcloud_teo_application_proxy_rule.application_proxy_rule",
+ ResourceName: "tencentcloud_teo_application_proxy_rule.basic",
ImportState: true,
ImportStateVerify: true,
},
@@ -28,22 +36,89 @@ func TestAccTencentCloudNeedFixTeoApplicationProxyRule_basic(t *testing.T) {
})
}
-const testAccTeoApplicationProxyRule = `
+func testAccCheckApplicationProxyRuleDestroy(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ for _, rs := range s.RootModule().Resources {
+ if rs.Type != "tencentcloud_teo_application_proxy_rule" {
+ continue
+ }
+ idSplit := strings.Split(rs.Primary.ID, FILED_SP)
+ if len(idSplit) != 3 {
+ return fmt.Errorf("id is broken,%s", rs.Primary.ID)
+ }
+ zoneId := idSplit[0]
+ proxyId := idSplit[1]
+ ruleId := idSplit[2]
+
+ agents, err := service.DescribeTeoApplicationProxyRule(ctx, zoneId, proxyId, ruleId)
+ if agents != nil {
+ return fmt.Errorf("zone ApplicationProxyRule %s still exists", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func testAccCheckApplicationProxyRuleExists(r string) resource.TestCheckFunc {
+ return func(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+
+ rs, ok := s.RootModule().Resources[r]
+ if !ok {
+ return fmt.Errorf("resource %s is not found", r)
+ }
+
+ idSplit := strings.Split(rs.Primary.ID, FILED_SP)
+ if len(idSplit) != 3 {
+ return fmt.Errorf("id is broken,%s", rs.Primary.ID)
+ }
+ zoneId := idSplit[0]
+ proxyId := idSplit[1]
+ ruleId := idSplit[2]
+
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ agents, err := service.DescribeTeoApplicationProxyRule(ctx, zoneId, proxyId, ruleId)
+ if agents == nil {
+ return fmt.Errorf("zone ApplicationProxyRule %s is not found", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+
+ return nil
+ }
+}
+
+const testAccTeoApplicationProxyRuleVar = `
+variable "default_zone_id" {
+ default = "` + defaultZoneId + `"
+}
+variable "proxy_id" {
+ default = "` + defaultPolicyId + `"
+}
+`
-resource "tencentcloud_teo_application_proxy_rule" "application_proxy_rule" {
- zone_id = tencentcloud_teo_zone.zone.id
- proxy_id = tencentcloud_teo_application_proxy.application_proxy_rule.proxy_id
+const testAccTeoApplicationProxyRule = testAccTeoApplicationProxyRuleVar + testAccTeoApplicationProxy + `
+resource "tencentcloud_teo_application_proxy_rule" "basic" {
forward_client_ip = "TOA"
origin_type = "custom"
origin_value = [
- "1.1.1.1:80",
+ "127.0.0.1:8081",
]
- port = [
- "80",
+ port = [
+ "8083",
]
- proto = "TCP"
- session_persist = false
+ proto = "TCP"
+ proxy_id = tencentcloud_teo_application_proxy.basic.proxy_id
+ session_persist = false
+ status = "online"
+ zone_id = var.default_zone_id
}
`
diff --git a/tencentcloud/resource_tc_teo_application_proxy_test.go b/tencentcloud/resource_tc_teo_application_proxy_test.go
index 14ff2b6159..dc77aae926 100644
--- a/tencentcloud/resource_tc_teo_application_proxy_test.go
+++ b/tencentcloud/resource_tc_teo_application_proxy_test.go
@@ -1,26 +1,73 @@
package tencentcloud
import (
+ "context"
+ "fmt"
+ "strings"
"testing"
+ "github.com/hashicorp/terraform-plugin-sdk/terraform"
+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
-func TestAccTencentCloudNeedFixTeoApplicationProxy_basic(t *testing.T) {
- t.Parallel()
+func init() {
+ // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_teo_zone
+ resource.AddTestSweepers("tencentcloud_teo_application_proxy", &resource.Sweeper{
+ Name: "tencentcloud_teo_application_proxy",
+ F: testSweepApplicationProxy,
+ })
+}
+
+func testSweepApplicationProxy(region string) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+ cli, _ := sharedClientForRegion(region)
+ client := cli.(*TencentCloudClient).apiV3Conn
+ service := TeoService{client}
+
+ zoneId := defaultZoneId
+ for {
+ proxy, err := service.DescribeTeoApplicationProxy(ctx, zoneId, "")
+ if err != nil {
+ return err
+ }
+
+ if proxy == nil {
+ return nil
+ }
+
+ err = service.DeleteTeoApplicationProxyById(ctx, zoneId, *proxy.ProxyId)
+ if err != nil {
+ return err
+ }
+ }
+}
+
+// go test -i; go test -test.run TestAccTencentCloudTeoApplicationProxy_basic -v
+func TestAccTencentCloudTeoApplicationProxy_basic(t *testing.T) {
+ t.Parallel()
resource.Test(t, resource.TestCase{
- PreCheck: func() { testAccPreCheck(t) },
- Providers: testAccProviders,
+ PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PRIVATE) },
+ Providers: testAccProviders,
+ CheckDestroy: testAccCheckApplicationProxyDestroy,
Steps: []resource.TestStep{
{
Config: testAccTeoApplicationProxy,
Check: resource.ComposeTestCheckFunc(
- resource.TestCheckResourceAttrSet("tencentcloud_teo_application_proxy.application_proxy", "id"),
+ testAccCheckApplicationProxyExists("tencentcloud_teo_application_proxy.basic"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_application_proxy.basic", "zone_id", defaultZoneId),
+ resource.TestCheckResourceAttr("tencentcloud_teo_application_proxy.basic", "accelerate_type", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_application_proxy.basic", "security_type", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_application_proxy.basic", "plat_type", "domain"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_application_proxy.basic", "proxy_name", "test-instance"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_application_proxy.basic", "proxy_type", "instance"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_application_proxy.basic", "session_persist_time", "2400"),
),
},
{
- ResourceName: "tencentcloud_teo_application_proxy.application_proxy",
+ ResourceName: "tencentcloud_teo_application_proxy.basic",
ImportState: true,
ImportStateVerify: true,
},
@@ -28,17 +75,77 @@ func TestAccTencentCloudNeedFixTeoApplicationProxy_basic(t *testing.T) {
})
}
-const testAccTeoApplicationProxy = `
+func testAccCheckApplicationProxyDestroy(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ for _, rs := range s.RootModule().Resources {
+ if rs.Type != "tencentcloud_teo_application_proxy" {
+ continue
+ }
+ idSplit := strings.Split(rs.Primary.ID, FILED_SP)
+ if len(idSplit) != 2 {
+ return fmt.Errorf("id is broken,%s", rs.Primary.ID)
+ }
+ zoneId := idSplit[0]
+ proxyId := idSplit[1]
+
+ agents, err := service.DescribeTeoApplicationProxy(ctx, zoneId, proxyId)
+ if agents != nil {
+ return fmt.Errorf("zone ApplicationProxy %s still exists", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func testAccCheckApplicationProxyExists(r string) resource.TestCheckFunc {
+ return func(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+
+ rs, ok := s.RootModule().Resources[r]
+ if !ok {
+ return fmt.Errorf("resource %s is not found", r)
+ }
+
+ idSplit := strings.Split(rs.Primary.ID, FILED_SP)
+ if len(idSplit) != 2 {
+ return fmt.Errorf("id is broken,%s", rs.Primary.ID)
+ }
+ zoneId := idSplit[0]
+ proxyId := idSplit[1]
+
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ agents, err := service.DescribeTeoApplicationProxy(ctx, zoneId, proxyId)
+ if agents == nil {
+ return fmt.Errorf("zone ApplicationProxy %s is not found", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+
+ return nil
+ }
+}
+
+const testAccTeoApplicationProxyVar = `
+variable "zone_id" {
+ default = "` + defaultZoneId + `"
+}`
+
+const testAccTeoApplicationProxy = testAccTeoApplicationProxyVar + `
-resource "tencentcloud_teo_application_proxy" "application_proxy" {
- zone_id = tencentcloud_teo_zone.zone.id
- zone_name = "sfurnace.work"
+resource "tencentcloud_teo_application_proxy" "basic" {
+ zone_id = var.zone_id
accelerate_type = 1
security_type = 1
plat_type = "domain"
- proxy_name = "www.sfurnace.work"
- proxy_type = "hostname"
+ proxy_name = "test-instance"
+ proxy_type = "instance"
session_persist_time = 2400
}
diff --git a/tencentcloud/resource_tc_teo_custom_error_page_test.go b/tencentcloud/resource_tc_teo_custom_error_page_test.go
index 55f913cbcf..d6594bcfb0 100644
--- a/tencentcloud/resource_tc_teo_custom_error_page_test.go
+++ b/tencentcloud/resource_tc_teo_custom_error_page_test.go
@@ -6,35 +6,40 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
+// go test -i; go test -test.run TestAccTencentCloudTeoCustomErrorPage_basic -v
func TestAccTencentCloudTeoCustomErrorPage_basic(t *testing.T) {
t.Parallel()
-
resource.Test(t, resource.TestCase{
- PreCheck: func() { testAccPreCheck(t) },
+ PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PRIVATE) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccTeoCustomErrorPage,
Check: resource.ComposeTestCheckFunc(
- resource.TestCheckResourceAttrSet("tencentcloud_teo_custom_error_page.custom_error_page", "id"),
+ resource.TestCheckResourceAttrSet("tencentcloud_teo_custom_error_page.basic", "id"),
),
},
- {
- ResourceName: "tencentcloud_teo_custom_error_page.customErrorPage",
- ImportState: true,
- ImportStateVerify: true,
- },
},
})
}
-const testAccTeoCustomErrorPage = `
+const testAccTeoCustomErrorPageVar = `
+variable "zone_id" {
+ default = "` + defaultZoneId + `"
+}
+
+variable "zone_name" {
+ default = "` + defaultZoneName + `"
+}`
+
+const testAccTeoCustomErrorPage = testAccTeoCustomErrorPageVar + `
+
+resource "tencentcloud_teo_custom_error_page" "basic" {
+ zone_id = var.zone_id
+ entity = var.zone_name
-resource "tencentcloud_teo_custom_error_page" "custom_error_page" {
- zone_id = ""
- entity = ""
- name = ""
- content = ""
+ name = "test"
+ content = "
"
}
`
diff --git a/tencentcloud/resource_tc_teo_ddos_policy.go b/tencentcloud/resource_tc_teo_ddos_policy.go
index 35a0e71670..b2ff144174 100644
--- a/tencentcloud/resource_tc_teo_ddos_policy.go
+++ b/tencentcloud/resource_tc_teo_ddos_policy.go
@@ -60,9 +60,9 @@ resource "tencentcloud_teo_ddos_policy" "ddos_policy" {
```
Import
-teo ddos_policy can be imported using the id, e.g.
+teo ddos_policy can be imported using the id#ddosPolicy_id, e.g.
```
-$ terraform import tencentcloud_teo_ddos_policy.ddos_policy ddosPolicy_id
+$ terraform import tencentcloud_teo_ddos_policy.ddos_policy zone-2a1u0y616jz6#11587
```
*/
package tencentcloud
diff --git a/tencentcloud/resource_tc_teo_ddos_policy_test.go b/tencentcloud/resource_tc_teo_ddos_policy_test.go
index e4f2cc7ece..1f7b853f54 100644
--- a/tencentcloud/resource_tc_teo_ddos_policy_test.go
+++ b/tencentcloud/resource_tc_teo_ddos_policy_test.go
@@ -1,108 +1,195 @@
package tencentcloud
-//func TestAccTencentCloudTeoDdosPolicy_basic(t *testing.T) {
-// t.Parallel()
-//
-// resource.Test(t, resource.TestCase{
-// PreCheck: func() { testAccPreCheck(t) },
-// Providers: testAccProviders,
-// Steps: []resource.TestStep{
-// {
-// Config: testAccTeoDdosPolicy,
-// Check: resource.ComposeTestCheckFunc(
-// resource.TestCheckResourceAttrSet("tencentcloud_teo_ddos_policy.ddosPolicy", "id"),
-// ),
-// },
-// {
-// ResourceName: "tencentcloud_teo_ddos_policy.ddosPolicy",
-// ImportState: true,
-// ImportStateVerify: true,
-// },
-// },
-// })
-//}
-
-const testAccTeoDdosPolicy = `
-
-resource "tencentcloud_teo_ddos_policy" "ddosPolicy" {
- zone_id = ""
- policy_id = ""
- ddos_rule {
- switch = ""
- udp_shard_open = ""
- ddos_status_info {
- ply_level = ""
- }
- ddos_geo_ip {
- region_id = ""
- switch = ""
+import (
+ "context"
+ "fmt"
+ "log"
+ "strconv"
+ "strings"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/helper/resource"
+ "github.com/hashicorp/terraform-plugin-sdk/terraform"
+)
+
+// go test -i; go test -test.run TestAccTencentCloudTeoDdosPolicy_basic -v
+func TestAccTencentCloudTeoDdosPolicy_basic(t *testing.T) {
+ t.Parallel()
+ resource.Test(t, resource.TestCase{
+ PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PRIVATE) },
+ Providers: testAccProviders,
+ Steps: []resource.TestStep{
+ {
+ Config: testAccTeoDdosPolicy,
+ Check: resource.ComposeTestCheckFunc(
+ testAccCheckDdosPolicyExists("tencentcloud_teo_ddos_policy.basic"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "zone_id", defaultZoneId),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.switch", "on"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.acl.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.acl.0.switch", "on"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.acl.0.acls.#", "2"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.acl.0.acls.0.action", "forward"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.acl.0.acls.0.dport_end", "8080"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.acl.0.acls.0.dport_start", "8080"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.acl.0.acls.0.protocol", "tcp"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.acl.0.acls.0.sport_start", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.acl.0.acls.1.action", "drop"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.acl.0.acls.1.dport_end", "65535"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.acl.0.acls.1.dport_start", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.acl.0.acls.1.protocol", "all"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.acl.0.acls.1.sport_end", "65535"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.acl.0.acls.1.sport_start", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.allow_block.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.allow_block.0.switch", "on"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.anti_ply.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.anti_ply.0.abnormal_connect_num", "0"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.anti_ply.0.abnormal_syn_num", "0"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.anti_ply.0.abnormal_syn_ratio", "0"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.anti_ply.0.destination_connect_limit", "0"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.anti_ply.0.destination_create_limit", "0"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.anti_ply.0.drop_icmp", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.anti_ply.0.drop_other", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.anti_ply.0.drop_tcp", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.anti_ply.0.drop_udp", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.anti_ply.0.empty_connect_protect", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.anti_ply.0.source_connect_limit", "0"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.anti_ply.0.source_create_limit", "0"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.anti_ply.0.udp_shard", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.geo_ip.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.geo_ip.0.switch", "on"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.packet_filter.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.packet_filter.0.switch", "on"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.speed_limit.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.speed_limit.0.flux_limit", "0 bps"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.speed_limit.0.package_limit", "0 pps"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.status_info.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_ddos_policy.basic", "ddos_rule.0.status_info.0.ply_level", "middle"),
+ ),
+ },
+ {
+ ResourceName: "tencentcloud_teo_ddos_policy.basic",
+ ImportState: true,
+ ImportStateVerify: true,
+ },
+ },
+ })
+}
+
+func testAccCheckDdosPolicyExists(r string) resource.TestCheckFunc {
+ return func(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+
+ rs, ok := s.RootModule().Resources[r]
+ if !ok {
+ return fmt.Errorf("resource %s is not found", r)
}
- ddos_allow_block {
- switch = ""
- user_allow_block_ip {
- ip = ""
- mask = ""
- type = ""
- ip2 = ""
- mask2 = ""
- }
+
+ idSplit := strings.Split(rs.Primary.ID, FILED_SP)
+ if len(idSplit) != 2 {
+ return fmt.Errorf("id is broken,%s", rs.Primary.ID)
}
- ddos_anti_ply {
- drop_tcp = ""
- drop_udp = ""
- drop_icmp = ""
- drop_other = ""
- source_create_limit = ""
- source_connect_limit = ""
- destination_create_limit = ""
- destination_connect_limit = ""
- abnormal_connect_num = ""
- abnormal_syn_ratio = ""
- abnormal_syn_num = ""
- connect_timeout = ""
- empty_connect_protect = ""
- udp_shard = ""
+ zoneId := idSplit[0]
+ policyId := idSplit[1]
+
+ policyId64, err := strconv.ParseInt(policyId, 10, 64)
+ if err != nil {
+ log.Printf("[READ]%s read teo ddosPolicy parseInt[%v] failed, reason:%+v", logId, policyId, err)
+ return err
}
- ddos_packet_filter {
- switch = ""
- packet_filter {
- action = ""
- protocol = ""
- dport_start = ""
- dport_end = ""
- packet_min = ""
- packet_max = ""
- sport_start = ""
- sport_end = ""
- match_type = ""
- is_not = ""
- offset = ""
- depth = ""
- match_begin = ""
- str = ""
- match_type2 = ""
- is_not2 = ""
- offset2 = ""
- depth2 = ""
- match_begin2 = ""
- str2 = ""
- match_logic = ""
- }
+
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ agents, err := service.DescribeTeoDdosPolicy(ctx, zoneId, policyId64)
+ if agents == nil {
+ return fmt.Errorf("zone DdosPolicy %s is not found", rs.Primary.ID)
}
- ddos_acl {
- switch = ""
- acl {
- dport_end = ""
- dport_start = ""
- sport_end = ""
- sport_start = ""
- protocol = ""
- action = ""
- default = ""
- }
+ if err != nil {
+ return err
}
- }
+ return nil
+ }
+}
+
+const testAccTeoDdosPolicyVar = `
+variable "default_zone_id" {
+ default = "` + defaultZoneId + `"
+}
+
+variable "default_policy_id" {
+ default = ` + defaultPolicyId + `
+}`
+
+const testAccTeoDdosPolicy = testAccTeoDdosPolicyVar + `
+
+resource "tencentcloud_teo_ddos_policy" "basic" {
+ policy_id = var.default_policy_id
+ zone_id = var.default_zone_id
+
+ ddos_rule {
+ switch = "on"
+
+ acl {
+ switch = "on"
+
+ acls {
+ action = "forward"
+ dport_end = 8080
+ dport_start = 8080
+ protocol = "tcp"
+ sport_end = 65535
+ sport_start = 1
+ }
+ acls {
+ action = "drop"
+ dport_end = 65535
+ dport_start = 1
+ protocol = "all"
+ sport_end = 65535
+ sport_start = 1
+ }
+ }
+
+ allow_block {
+ switch = "on"
+ }
+
+ anti_ply {
+ abnormal_connect_num = 0
+ abnormal_syn_num = 0
+ abnormal_syn_ratio = 0
+ connect_timeout = 0
+ destination_connect_limit = 0
+ destination_create_limit = 0
+ drop_icmp = "off"
+ drop_other = "off"
+ drop_tcp = "off"
+ drop_udp = "off"
+ empty_connect_protect = "off"
+ source_connect_limit = 0
+ source_create_limit = 0
+ udp_shard = "off"
+ }
+
+ geo_ip {
+ region_ids = []
+ switch = "on"
+ }
+
+ packet_filter {
+ switch = "on"
+ }
+
+ speed_limit {
+ flux_limit = "0 bps"
+ package_limit = "0 pps"
+ }
+
+ status_info {
+ ply_level = "middle"
+ }
+ }
}
`
diff --git a/tencentcloud/resource_tc_teo_default_certificate_test.go b/tencentcloud/resource_tc_teo_default_certificate_test.go
deleted file mode 100644
index 0bd69da533..0000000000
--- a/tencentcloud/resource_tc_teo_default_certificate_test.go
+++ /dev/null
@@ -1,42 +0,0 @@
-package tencentcloud
-
-import (
- "testing"
-
- "github.com/hashicorp/terraform-plugin-sdk/helper/resource"
-)
-
-func TestAccTencentCloudNeedFixTeoDefaultCertificate_basic(t *testing.T) {
- t.Parallel()
-
- resource.Test(t, resource.TestCase{
- PreCheck: func() { testAccPreCheck(t) },
- Providers: testAccProviders,
- Steps: []resource.TestStep{
- {
- Config: testAccTeoDefaultCertificate,
- Check: resource.ComposeTestCheckFunc(
- resource.TestCheckResourceAttrSet("tencentcloud_teo_default_certificate.default_certificate", "id"),
- ),
- },
- {
- ResourceName: "tencentcloud_teo_default_certificate.defaultCertificate",
- ImportState: true,
- ImportStateVerify: true,
- },
- },
- })
-}
-
-const testAccTeoDefaultCertificate = `
-
-resource "tencentcloud_teo_default_certificate" "default_certificate" {
- zone_id = tencentcloud_teo_zone.zone.id
-
- cert_info {
- cert_id = "teo-28i46c1gtmkl"
- status = "deployed"
- }
-}
-
-`
diff --git a/tencentcloud/resource_tc_teo_dns_record_test.go b/tencentcloud/resource_tc_teo_dns_record_test.go
new file mode 100644
index 0000000000..a423b6e7fe
--- /dev/null
+++ b/tencentcloud/resource_tc_teo_dns_record_test.go
@@ -0,0 +1,147 @@
+package tencentcloud
+
+import (
+ "context"
+ "fmt"
+ "strings"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/terraform"
+
+ "github.com/hashicorp/terraform-plugin-sdk/helper/resource"
+)
+
+func init() {
+ // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_teo_dns_record
+ resource.AddTestSweepers("tencentcloud_teo_dns_record", &resource.Sweeper{
+ Name: "tencentcloud_teo_dns_record",
+ F: testSweepDnsRecord,
+ })
+}
+
+func testSweepDnsRecord(region string) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+ cli, _ := sharedClientForRegion(region)
+ client := cli.(*TencentCloudClient).apiV3Conn
+ service := TeoService{client}
+
+ zoneId := defaultZoneId
+
+ for {
+ record, err := service.DescribeTeoDnsRecord(ctx, zoneId, "")
+ if err != nil {
+ return err
+ }
+
+ if record == nil {
+ return nil
+ }
+
+ err = service.DeleteTeoDnsRecordById(ctx, zoneId, *record.DnsRecordId)
+ if err != nil {
+ return err
+ }
+ }
+}
+
+// go test -i; go test -test.run TestAccTencentCloudTeoDnsRecord_basic -v
+func TestAccTencentCloudTeoDnsRecord_basic(t *testing.T) {
+ t.Parallel()
+ resource.Test(t, resource.TestCase{
+ PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PRIVATE) },
+ Providers: testAccProviders,
+ CheckDestroy: testAccCheckDnsRecordDestroy,
+ Steps: []resource.TestStep{
+ {
+ Config: testAccTeoDnsRecord,
+ Check: resource.ComposeTestCheckFunc(
+ testAccCheckDnsRecordExists("tencentcloud_teo_dns_record.basic"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_dns_record.basic", "zone_id", defaultZoneId),
+ ),
+ },
+ {
+ ResourceName: "tencentcloud_teo_dns_record.basic",
+ ImportState: true,
+ ImportStateVerify: true,
+ },
+ },
+ })
+}
+
+func testAccCheckDnsRecordDestroy(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ for _, rs := range s.RootModule().Resources {
+ if rs.Type != "tencentcloud_teo_dns_record" {
+ continue
+ }
+ idSplit := strings.Split(rs.Primary.ID, FILED_SP)
+ if len(idSplit) != 2 {
+ return fmt.Errorf("id is broken,%s", rs.Primary.ID)
+ }
+ zoneId := idSplit[0]
+ proxyId := idSplit[1]
+
+ agents, err := service.DescribeTeoDnsRecord(ctx, zoneId, proxyId)
+ if agents != nil {
+ return fmt.Errorf("zone DnsRecord %s still exists", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func testAccCheckDnsRecordExists(r string) resource.TestCheckFunc {
+ return func(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+
+ rs, ok := s.RootModule().Resources[r]
+ if !ok {
+ return fmt.Errorf("resource %s is not found", r)
+ }
+ idSplit := strings.Split(rs.Primary.ID, FILED_SP)
+ if len(idSplit) != 2 {
+ return fmt.Errorf("id is broken,%s", rs.Primary.ID)
+ }
+ zoneId := idSplit[0]
+ proxyId := idSplit[1]
+
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ agents, err := service.DescribeTeoDnsRecord(ctx, zoneId, proxyId)
+ if agents == nil {
+ return fmt.Errorf("zone DnsRecord %s is not found", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+
+ return nil
+ }
+}
+
+const testAccTeoDnsRecordVar = `
+variable "zone_id" {
+ default = "` + defaultZoneId + `"
+}
+
+variable "zone_name" {
+ default = "www.` + defaultZoneName + `"
+}`
+
+const testAccTeoDnsRecord = testAccTeoDnsRecordVar + `
+
+resource "tencentcloud_teo_dns_record" "basic" {
+ zone_id = var.zone_id
+ type = "A"
+ name = var.zone_name
+ content = "150.109.8.2"
+ mode = "proxied"
+ ttl = "1"
+ priority = 1
+}
+`
diff --git a/tencentcloud/resource_tc_teo_dns_sec.go b/tencentcloud/resource_tc_teo_dns_sec.go
index 6d7b5b18fa..b6fabc04bb 100644
--- a/tencentcloud/resource_tc_teo_dns_sec.go
+++ b/tencentcloud/resource_tc_teo_dns_sec.go
@@ -57,6 +57,7 @@ func resourceTencentCloudTeoDnsSec() *schema.Resource {
Type: schema.TypeList,
MaxItems: 1,
Computed: true,
+ Optional: true,
Description: "DNSSEC infos.",
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
@@ -197,7 +198,9 @@ func resourceTencentCloudTeoDnsSecRead(d *schema.ResourceData, meta interface{})
dnssecMap["public_key"] = dnsSec.DnssecInfo.PublicKey
}
- _ = d.Set("dnssec", []interface{}{dnssecMap})
+ if len(dnssecMap) > 0 {
+ _ = d.Set("dnssec", []interface{}{dnssecMap})
+ }
}
if dnsSec.ModifiedOn != nil {
diff --git a/tencentcloud/resource_tc_teo_dns_sec_test.go b/tencentcloud/resource_tc_teo_dns_sec_test.go
index f6acc31a3c..e08b284ef0 100644
--- a/tencentcloud/resource_tc_teo_dns_sec_test.go
+++ b/tencentcloud/resource_tc_teo_dns_sec_test.go
@@ -1,26 +1,32 @@
package tencentcloud
import (
+ "context"
+ "fmt"
"testing"
+ "github.com/hashicorp/terraform-plugin-sdk/terraform"
+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
-func TestAccTencentCloudNeedFixTeoDnsSec_basic(t *testing.T) {
+// go test -i; go test -test.run TestAccTencentCloudTeoDnsSec_basic -v
+func TestAccTencentCloudTeoDnsSec_basic(t *testing.T) {
t.Parallel()
-
resource.Test(t, resource.TestCase{
- PreCheck: func() { testAccPreCheck(t) },
+ PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PRIVATE) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccTeoDnsSec,
Check: resource.ComposeTestCheckFunc(
- resource.TestCheckResourceAttrSet("tencentcloud_teo_dns_sec.dns_sec", "id"),
+ testAccCheckDnsSecExists("tencentcloud_teo_dns_sec.basic"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_dns_sec.basic", "zone_id", defaultZoneId),
+ resource.TestCheckResourceAttr("tencentcloud_teo_dns_sec.basic", "status", "disabled"),
),
},
{
- ResourceName: "tencentcloud_teo_dns_sec.dns_sec",
+ ResourceName: "tencentcloud_teo_dns_sec.basic",
ImportState: true,
ImportStateVerify: true,
},
@@ -28,10 +34,39 @@ func TestAccTencentCloudNeedFixTeoDnsSec_basic(t *testing.T) {
})
}
-const testAccTeoDnsSec = `
+func testAccCheckDnsSecExists(r string) resource.TestCheckFunc {
+ return func(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+
+ rs, ok := s.RootModule().Resources[r]
+ if !ok {
+ return fmt.Errorf("resource %s is not found", r)
+ }
+
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ agents, err := service.DescribeTeoDnsSec(ctx, rs.Primary.ID)
+ if agents == nil {
+ return fmt.Errorf("zone DnsSec %s is not found", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+
+ return nil
+ }
+}
+
+const testAccTeoDnsSecVar = `
+variable "zone_id" {
+ default = "` + defaultZoneId + `"
+}
+`
+
+const testAccTeoDnsSec = testAccTeoDnsSecVar + `
-resource "tencentcloud_teo_dns_sec" "dns_sec" {
- zone_id = tencentcloud_teo_zone.zone.id
+resource "tencentcloud_teo_dns_sec" "basic" {
+ zone_id = var.zone_id
status = "disabled"
}
`
diff --git a/tencentcloud/resource_tc_teo_host_certificate_test.go b/tencentcloud/resource_tc_teo_host_certificate_test.go
deleted file mode 100644
index 5a08d83f29..0000000000
--- a/tencentcloud/resource_tc_teo_host_certificate_test.go
+++ /dev/null
@@ -1,43 +0,0 @@
-package tencentcloud
-
-import (
- "testing"
-
- "github.com/hashicorp/terraform-plugin-sdk/helper/resource"
-)
-
-func TestAccTencentCloudNeedFixTeoHostCertificate_basic(t *testing.T) {
- t.Parallel()
-
- resource.Test(t, resource.TestCase{
- PreCheck: func() { testAccPreCheck(t) },
- Providers: testAccProviders,
- Steps: []resource.TestStep{
- {
- Config: testAccTeoHostCertificate,
- Check: resource.ComposeTestCheckFunc(
- resource.TestCheckResourceAttrSet("tencentcloud_teo_host_certificate.host_certificate", "id"),
- ),
- },
- {
- ResourceName: "tencentcloud_teo_host_certificate.host_certificate",
- ImportState: true,
- ImportStateVerify: true,
- },
- },
- })
-}
-
-const testAccTeoHostCertificate = `
-
-resource "tencentcloud_teo_host_certificate" "host_certificate" {
- zone_id = tencentcloud_teo_zone.zone.id
- host = tencentcloud_teo_dns_record.dns_record.name
-
- cert_info {
- cert_id = "yqWPPbs7"
- status = "deployed"
- }
-}
-
-`
diff --git a/tencentcloud/resource_tc_teo_load_balancing_test.go b/tencentcloud/resource_tc_teo_load_balancing_test.go
new file mode 100644
index 0000000000..0a59b29473
--- /dev/null
+++ b/tencentcloud/resource_tc_teo_load_balancing_test.go
@@ -0,0 +1,116 @@
+package tencentcloud
+
+import (
+ "context"
+ "fmt"
+ "strings"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/terraform"
+
+ "github.com/hashicorp/terraform-plugin-sdk/helper/resource"
+)
+
+// go test -i; go test -test.run TestAccTencentCloudTeoLoadBalancing_basic -v
+func TestAccTencentCloudTeoLoadBalancing_basic(t *testing.T) {
+ t.Parallel()
+ resource.Test(t, resource.TestCase{
+ PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PRIVATE) },
+ Providers: testAccProviders,
+ CheckDestroy: testAccCheckLoadBalancingDestroy,
+ Steps: []resource.TestStep{
+ //{
+ // Config: testAccTeoLoadBalancing,
+ // Check: resource.ComposeTestCheckFunc(
+ // testAccCheckLoadBalancingExists("tencentcloud_teo_load_balancing.basic"),
+ // resource.TestCheckResourceAttr("tencentcloud_teo_load_balancing.basic", "zone_id", defaultZoneId),
+ // resource.TestCheckResourceAttr("tencentcloud_teo_load_balancing.basic", "host", "aaa."+defaultZoneName),
+ // resource.TestCheckResourceAttr("tencentcloud_teo_load_balancing.basic", "origin_group_id", "origin-8a6e424e-47b4-11ed-8422-5254006e4802"),
+ // resource.TestCheckResourceAttr("tencentcloud_teo_load_balancing.basic", "type", "proxied"),
+ // ),
+ //},
+ //{
+ // ResourceName: "tencentcloud_teo_load_balancing.basic",
+ // ImportState: true,
+ // ImportStateVerify: true,
+ //},
+ },
+ })
+}
+
+func testAccCheckLoadBalancingDestroy(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ for _, rs := range s.RootModule().Resources {
+ if rs.Type != "tencentcloud_teo_load_balancing" {
+ continue
+ }
+ idSplit := strings.Split(rs.Primary.ID, FILED_SP)
+ if len(idSplit) != 2 {
+ return fmt.Errorf("id is broken,%s", rs.Primary.ID)
+ }
+ zoneId := idSplit[0]
+ loadBalancingId := idSplit[1]
+
+ agents, err := service.DescribeTeoLoadBalancing(ctx, zoneId, loadBalancingId)
+ if agents != nil {
+ return fmt.Errorf("zone loadBalancing %s still exists", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func testAccCheckLoadBalancingExists(r string) resource.TestCheckFunc {
+ return func(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+
+ rs, ok := s.RootModule().Resources[r]
+ if !ok {
+ return fmt.Errorf("resource %s is not found", r)
+ }
+ idSplit := strings.Split(rs.Primary.ID, FILED_SP)
+ if len(idSplit) != 2 {
+ return fmt.Errorf("id is broken,%s", rs.Primary.ID)
+ }
+ zoneId := idSplit[0]
+ loadBalancingId := idSplit[1]
+
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ loadBalancing, err := service.DescribeTeoLoadBalancing(ctx, zoneId, loadBalancingId)
+ if loadBalancing == nil {
+ return fmt.Errorf("zone loadBalancing %s is not found", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+
+ return nil
+ }
+}
+
+const testAccTeoLoadBalancingVar = `
+variable "zone_id" {
+ default = "` + defaultZoneId + `"
+}
+
+variable "zone_name" {
+ default = "aaa.` + defaultZoneName + `"
+}
+`
+
+const testAccTeoLoadBalancing = testAccTeoLoadBalancingVar + `
+
+resource "tencentcloud_teo_load_balancing" "basic" {
+ host = var.zone_name
+ origin_group_id = "origin-8a6e424e-47b4-11ed-8422-5254006e4802"
+ type = "proxied"
+ zone_id = var.zone_id
+ backup_origin_group_id = ""
+}
+
+`
diff --git a/tencentcloud/resource_tc_teo_origin_group_test.go b/tencentcloud/resource_tc_teo_origin_group_test.go
index 6ac8914bf3..cbe5da1bb5 100644
--- a/tencentcloud/resource_tc_teo_origin_group_test.go
+++ b/tencentcloud/resource_tc_teo_origin_group_test.go
@@ -1,26 +1,41 @@
package tencentcloud
import (
+ "context"
+ "fmt"
+ "strings"
"testing"
+ "github.com/hashicorp/terraform-plugin-sdk/terraform"
+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
-func TestAccTencentCloudNeedFixTeoOriginGroup_basic(t *testing.T) {
+// go test -i; go test -test.run TestAccTencentCloudTeoOriginGroup_basic -v
+func TestAccTencentCloudTeoOriginGroup_basic(t *testing.T) {
t.Parallel()
-
resource.Test(t, resource.TestCase{
- PreCheck: func() { testAccPreCheck(t) },
- Providers: testAccProviders,
+ PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PRIVATE) },
+ Providers: testAccProviders,
+ CheckDestroy: testAccCheckOriginGroupDestroy,
Steps: []resource.TestStep{
{
Config: testAccTeoOriginGroup,
Check: resource.ComposeTestCheckFunc(
- resource.TestCheckResourceAttrSet("tencentcloud_teo_origin_group.originGroup", "id"),
+ testAccCheckOriginGroupExists("tencentcloud_teo_origin_group.basic"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_origin_group.basic", "zone_id", defaultZoneId),
+ resource.TestCheckResourceAttr("tencentcloud_teo_origin_group.basic", "configuration_type", "weight"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_origin_group.basic", "origin_group_name", "keep-group-1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_origin_group.basic", "origin_type", "self"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_origin_group.basic", "origin_records.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_origin_group.basic", "origin_records.0.port", "8080"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_origin_group.basic", "origin_records.0.private", "false"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_origin_group.basic", "origin_records.0.record", defaultZoneName),
+ resource.TestCheckResourceAttr("tencentcloud_teo_origin_group.basic", "origin_records.0.weight", "100"),
),
},
{
- ResourceName: "tencentcloud_teo_origin_group.originGroup",
+ ResourceName: "tencentcloud_teo_origin_group.basic",
ImportState: true,
ImportStateVerify: true,
},
@@ -28,36 +43,84 @@ func TestAccTencentCloudNeedFixTeoOriginGroup_basic(t *testing.T) {
})
}
-const testAccTeoOriginGroup = `
+func testAccCheckOriginGroupDestroy(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ for _, rs := range s.RootModule().Resources {
+ if rs.Type != "tencentcloud_teo_origin_group" {
+ continue
+ }
+ idSplit := strings.Split(rs.Primary.ID, FILED_SP)
+ if len(idSplit) != 2 {
+ return fmt.Errorf("id is broken,%s", rs.Primary.ID)
+ }
+ zoneId := idSplit[0]
+ originGroupId := idSplit[1]
+
+ originGroup, err := service.DescribeTeoOriginGroup(ctx, zoneId, originGroupId)
+ if originGroup != nil {
+ return fmt.Errorf("zone originGroup %s still exists", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func testAccCheckOriginGroupExists(r string) resource.TestCheckFunc {
+ return func(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+
+ rs, ok := s.RootModule().Resources[r]
+ if !ok {
+ return fmt.Errorf("resource %s is not found", r)
+ }
+ idSplit := strings.Split(rs.Primary.ID, FILED_SP)
+ if len(idSplit) != 2 {
+ return fmt.Errorf("id is broken,%s", rs.Primary.ID)
+ }
+ zoneId := idSplit[0]
+ originGroupId := idSplit[1]
+
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ originGroup, err := service.DescribeTeoOriginGroup(ctx, zoneId, originGroupId)
+ if originGroup == nil {
+ return fmt.Errorf("zone originGroup %s is not found", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+
+ return nil
+ }
+}
+
+const testAccTeoOriginGroupVar = `
+variable "zone_id" {
+ default = "` + defaultZoneId + `"
+}
-locals {
- group0 = [
- {
- "record" = "1.1.1.1"
- "port" = 80
- "weight" = 30
- }, {
- "record" = "2.2.2.2"
- "port" = 443
- "weight" = 70
- }
- ]
+variable "zone_name" {
+ default = "` + defaultZoneName + `"
}
+`
+const testAccTeoOriginGroup = testAccTeoOriginGroupVar + `
-resource "tencentcloud_teo_origin_group" "origin_group" {
- zone_id = tencentcloud_teo_zone.zone.id
- origin_name = "group0"
- origin_type = "self"
- type = "weight"
+resource "tencentcloud_teo_origin_group" "basic" {
+ configuration_type = "weight"
+ origin_group_name = "keep-group-1"
+ origin_type = "self"
+ zone_id = var.zone_id
- dynamic "record" {
- for_each = local.group0
- content {
- record = record.value["record"]
- port = record.value["port"]
- weight = record.value["weight"]
- area = []
- }
+ origin_records {
+ area = []
+ port = 8080
+ private = false
+ record = var.zone_name
+ weight = 100
}
}
diff --git a/tencentcloud/resource_tc_teo_rule_engine_priority_test.go b/tencentcloud/resource_tc_teo_rule_engine_priority_test.go
index e160b02123..5f0281bb4e 100644
--- a/tencentcloud/resource_tc_teo_rule_engine_priority_test.go
+++ b/tencentcloud/resource_tc_teo_rule_engine_priority_test.go
@@ -1,26 +1,31 @@
package tencentcloud
import (
+ "context"
+ "fmt"
"testing"
+ "github.com/hashicorp/terraform-plugin-sdk/terraform"
+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
+// go test -i; go test -test.run TestAccTencentCloudTeoRuleEnginePriority_basic -v
func TestAccTencentCloudTeoRuleEnginePriority_basic(t *testing.T) {
t.Parallel()
-
resource.Test(t, resource.TestCase{
- PreCheck: func() { testAccPreCheck(t) },
+ PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PRIVATE) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccTeoRuleEnginePriority,
Check: resource.ComposeTestCheckFunc(
- resource.TestCheckResourceAttrSet("tencentcloud_teo_rule_engine_priority.rule_engine_priority", "id"),
+ testAccCheckRuleEnginePriorityExists("tencentcloud_teo_rule_engine_priority.basic"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_rule_engine_priority.basic", "zone_id", defaultZoneId),
),
},
{
- ResourceName: "tencentcloud_teo_rule_engine_priority.ruleEnginePriority",
+ ResourceName: "tencentcloud_teo_rule_engine_priority.basic",
ImportState: true,
ImportStateVerify: true,
},
@@ -28,10 +33,48 @@ func TestAccTencentCloudTeoRuleEnginePriority_basic(t *testing.T) {
})
}
-const testAccTeoRuleEnginePriority = `
+func testAccCheckRuleEnginePriorityExists(r string) resource.TestCheckFunc {
+ return func(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+
+ rs, ok := s.RootModule().Resources[r]
+ if !ok {
+ return fmt.Errorf("resource %s is not found", r)
+ }
+
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ originGroup, err := service.DescribeTeoRuleEnginePriority(ctx, rs.Primary.ID)
+ if originGroup == nil {
+ return fmt.Errorf("zone ruleEnginePriority %s is not found", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+
+ return nil
+ }
+}
+
+const testAccTeoRuleEnginePriorityVar = `
+variable "zone_id" {
+ default = "` + defaultZoneId + `"
+}
+`
+
+const testAccTeoRuleEnginePriority = testAccTeoRuleEnginePriorityVar + `
+
+resource "tencentcloud_teo_rule_engine_priority" "basic" {
+ zone_id = var.zone_id
-resource "tencentcloud_teo_rule_engine_priority" "rule_engine_priority" {
- rules_priority = ""
+ rules_priority {
+ index = 0
+ value = "rule-2a26njgck4rq"
+ }
+ rules_priority {
+ index = 1
+ value = "rule-2a26lzxhu13m"
+ }
}
`
diff --git a/tencentcloud/resource_tc_teo_rule_engine_test.go b/tencentcloud/resource_tc_teo_rule_engine_test.go
index 08a2648472..9e85b46d19 100644
--- a/tencentcloud/resource_tc_teo_rule_engine_test.go
+++ b/tencentcloud/resource_tc_teo_rule_engine_test.go
@@ -1,26 +1,37 @@
package tencentcloud
import (
+ "context"
+ "fmt"
+ "strings"
"testing"
+ "github.com/hashicorp/terraform-plugin-sdk/terraform"
+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
-func TestAccTencentCloudNeedFixTeoRuleEngine_basic(t *testing.T) {
+// go test -i; go test -test.run TestAccTencentCloudTeoRuleEngine_basic -v
+func TestAccTencentCloudTeoRuleEngine_basic(t *testing.T) {
t.Parallel()
-
resource.Test(t, resource.TestCase{
- PreCheck: func() { testAccPreCheck(t) },
- Providers: testAccProviders,
+ PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PRIVATE) },
+ Providers: testAccProviders,
+ CheckDestroy: testAccCheckRuleEngineDestroy,
Steps: []resource.TestStep{
{
Config: testAccTeoRuleEngine,
Check: resource.ComposeTestCheckFunc(
- resource.TestCheckResourceAttrSet("tencentcloud_teo_rule_engine.rule_engine", "id"),
+ testAccCheckRuleEngineExists("tencentcloud_teo_rule_engine.basic"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_rule_engine.basic", "zone_id", defaultZoneId),
+ resource.TestCheckResourceAttr("tencentcloud_teo_rule_engine.basic", "status", "enable"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_rule_engine.basic", "rules.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_rule_engine.basic", "rules.0.actions.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_rule_engine.basic", "rules.0.or.#", "1"),
),
},
{
- ResourceName: "tencentcloud_teo_rule_engine.rule_engine",
+ ResourceName: "tencentcloud_teo_rule_engine.basic",
ImportState: true,
ImportStateVerify: true,
},
@@ -28,44 +39,100 @@ func TestAccTencentCloudNeedFixTeoRuleEngine_basic(t *testing.T) {
})
}
-const testAccTeoRuleEngine = `
+func testAccCheckRuleEngineDestroy(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ for _, rs := range s.RootModule().Resources {
+ if rs.Type != "tencentcloud_teo_rule_engine" {
+ continue
+ }
+ idSplit := strings.Split(rs.Primary.ID, FILED_SP)
+ if len(idSplit) != 2 {
+ return fmt.Errorf("id is broken,%s", rs.Primary.ID)
+ }
+ zoneId := idSplit[0]
+ ruleId := idSplit[1]
+
+ originGroup, err := service.DescribeTeoRuleEngine(ctx, zoneId, ruleId)
+ if originGroup != nil {
+ return fmt.Errorf("zone ruleEngine %s still exists", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func testAccCheckRuleEngineExists(r string) resource.TestCheckFunc {
+ return func(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+
+ rs, ok := s.RootModule().Resources[r]
+ if !ok {
+ return fmt.Errorf("resource %s is not found", r)
+ }
+ idSplit := strings.Split(rs.Primary.ID, FILED_SP)
+ if len(idSplit) != 2 {
+ return fmt.Errorf("id is broken,%s", rs.Primary.ID)
+ }
+ zoneId := idSplit[0]
+ ruleId := idSplit[1]
+
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ originGroup, err := service.DescribeTeoRuleEngine(ctx, zoneId, ruleId)
+ if originGroup == nil {
+ return fmt.Errorf("zone ruleEngine %s is not found", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+
+ return nil
+ }
+}
+
+const testAccTeoRuleEngineVar = `
+variable "zone_id" {
+ default = "` + defaultZoneId + `"
+}
+`
+
+const testAccTeoRuleEngine = testAccTeoRuleEngineVar + `
-resource "tencentcloud_teo_rule_engine" "rule_engine" {
- zone_id = tencentcloud_teo_zone.zone.id
- rule_name = "rule0"
+resource "tencentcloud_teo_rule_engine" "basic" {
+ rule_name = "rule-1"
status = "enable"
+ zone_id = var.zone_id
rules {
- conditions {
- conditions {
- operator = "equal"
- target = "host"
- values = [
- "www.sfurnace.work",
- ]
- }
- }
-
actions {
- normal_action {
- action = "MaxAge"
+
+ rewrite_action {
+ action = "ResponseHeader"
parameters {
- name = "FollowOrigin"
- values = [
- "on",
- ]
- }
- parameters {
- name = "MaxAgeTime"
+ action = "set"
+ name = "project"
values = [
- "0",
+ "1111",
]
}
}
}
+
+ or {
+ and {
+ operator = "equal"
+ target = "extension"
+ values = [
+ "11",
+ ]
+ }
+ }
}
}
-
`
diff --git a/tencentcloud/resource_tc_teo_security_policy_test.go b/tencentcloud/resource_tc_teo_security_policy_test.go
index 02f4c71d08..970eccef6a 100644
--- a/tencentcloud/resource_tc_teo_security_policy_test.go
+++ b/tencentcloud/resource_tc_teo_security_policy_test.go
@@ -1,26 +1,34 @@
package tencentcloud
import (
+ "context"
+ "fmt"
+ "strings"
"testing"
+ "github.com/hashicorp/terraform-plugin-sdk/terraform"
+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
-func TestAccTencentCloudNeedFixTeoSecurityPolicy_basic(t *testing.T) {
+// go test -i; go test -test.run TestAccTencentCloudTeoSecurityPolicy_basic -v
+func TestAccTencentCloudTeoSecurityPolicy_basic(t *testing.T) {
t.Parallel()
-
resource.Test(t, resource.TestCase{
- PreCheck: func() { testAccPreCheck(t) },
+ PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PRIVATE) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccTeoSecurityPolicy,
Check: resource.ComposeTestCheckFunc(
- resource.TestCheckResourceAttrSet("tencentcloud_teo_security_policy.securityPolicy", "id"),
+ testAccCheckSecurityPolicyExists("tencentcloud_teo_security_policy.basic"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_security_policy.basic", "zone_id", defaultZoneId),
+ resource.TestCheckResourceAttr("tencentcloud_teo_security_policy.basic", "entity", "www."+defaultZoneName),
+ resource.TestCheckResourceAttr("tencentcloud_teo_security_policy.basic", "config.#", "1"),
),
},
{
- ResourceName: "tencentcloud_teo_security_policy.securityPolicy",
+ ResourceName: "tencentcloud_teo_security_policy.basic",
ImportState: true,
ImportStateVerify: true,
},
@@ -28,128 +36,102 @@ func TestAccTencentCloudNeedFixTeoSecurityPolicy_basic(t *testing.T) {
})
}
-const testAccTeoSecurityPolicy = `
+func testAccCheckSecurityPolicyExists(r string) resource.TestCheckFunc {
+ return func(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+
+ rs, ok := s.RootModule().Resources[r]
+ if !ok {
+ return fmt.Errorf("resource %s is not found", r)
+ }
+ idSplit := strings.Split(rs.Primary.ID, FILED_SP)
+ if len(idSplit) != 2 {
+ return fmt.Errorf("id is broken,%s", rs.Primary.ID)
+ }
+ zoneId := idSplit[0]
+ entity := idSplit[1]
+
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ agents, err := service.DescribeTeoSecurityPolicy(ctx, zoneId, entity)
+ if agents == nil {
+ return fmt.Errorf("zone DnsSec %s is not found", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+
+ return nil
+ }
+}
+
+const testAccTeoSecurityPolicyVar = `
+variable "zone_id" {
+ default = "` + defaultZoneId + `"
+}
+
+variable "zone_name" {
+ default = "www.` + defaultZoneName + `"
+}`
+
+const testAccTeoSecurityPolicy = testAccTeoSecurityPolicyVar + `
+
+resource "tencentcloud_teo_security_policy" "basic" {
+ entity = var.zone_name
+ zone_id = var.zone_id
-resource "tencentcloud_teo_security_policy" "securityPolicy" {
- zone_id = ""
- entity = ""
config {
- waf_config {
- switch = ""
- level = ""
- mode = ""
- waf_rules {
- switch = ""
- block_rule_i_ds = ""
- observe_rule_i_ds = ""
- }
- ai_rule {
- mode = ""
- }
+ switch_config {
+ web_switch = "on"
}
- rate_limit_config {
- switch = ""
- user_rules {
- rule_name = ""
- threshold = ""
- period = ""
- action = ""
- punish_time = ""
- punish_time_unit = ""
- rule_status = ""
- freq_fields = ""
- conditions {
- match_from = ""
- match_param = ""
- operator = ""
- match_content = ""
+
+ bot_config {
+ switch = "on"
+
+ intelligence_rule {
+ switch = "off"
+
+ items {
+ action = "drop"
+ label = "evil_bot"
}
- rule_priority = ""
- }
- template {
- mode = ""
- detail {
- mode = ""
- i_d = ""
- action = ""
- punish_time = ""
- threshold = ""
- period = ""
+ items {
+ action = "alg"
+ label = "suspect_bot"
}
- }
- intelligence {
- switch = ""
- action = ""
- }
- }
- acl_config {
- switch = ""
- user_rules {
- rule_name = ""
- action = ""
- rule_status = ""
- conditions {
- match_from = ""
- match_param = ""
- operator = ""
- match_content = ""
+ items {
+ action = "monitor"
+ label = "good_bot"
+ }
+ items {
+ action = "trans"
+ label = "normal"
}
- rule_priority = ""
- punish_time = ""
- punish_time_unit = ""
- name = ""
- page_id = ""
- redirect_url = ""
- response_code = ""
}
- }
- bot_config {
- switch = ""
+
managed_rule {
- rule_i_d = ""
- action = ""
- punish_time = ""
- punish_time_unit = ""
- name = ""
- page_id = ""
- redirect_url = ""
- response_code = ""
- trans_managed_ids = ""
- alg_managed_ids = ""
- cap_managed_ids = ""
- mon_managed_ids = ""
- drop_managed_ids = ""
+ action = "monitor"
+ alg_managed_ids = []
+ cap_managed_ids = []
+ drop_managed_ids = []
+ mon_managed_ids = [
+ 100000, 100001, 100002, 100003, 100006, 100007, 100008, 100009, 100010, 100011, 100012, 100013, 100014,
+ 100015, 100016, 100017, 100018, 100019, 100020, 100021, 100022, 10000003, 10000004, 10000005, 10000006,
+ 10000007, 10000008, 10000009,
+ ]
+ page_id = 0
+ punish_time = 0
+ response_code = 0
+ trans_managed_ids = []
}
+
portrait_rule {
- rule_i_d = ""
- alg_managed_ids = ""
- cap_managed_ids = ""
- mon_managed_ids = ""
- drop_managed_ids = ""
- switch = ""
+ alg_managed_ids = []
+ cap_managed_ids = []
+ drop_managed_ids = []
+ mon_managed_ids = []
+ switch = "off"
}
- intelligence_rule {
- switch = ""
- items {
- label = ""
- action = ""
- }
- }
- }
- switch_config {
- web_switch = ""
}
- ip_table_config {
- switch = ""
- rules {
- action = ""
- match_from = ""
- match_content = ""
- rule_i_d = ""
- }
- }
-
}
-}
-
-`
+}`
diff --git a/tencentcloud/resource_tc_teo_zone_setting_test.go b/tencentcloud/resource_tc_teo_zone_setting_test.go
index 237672d263..9fbb8fec10 100644
--- a/tencentcloud/resource_tc_teo_zone_setting_test.go
+++ b/tencentcloud/resource_tc_teo_zone_setting_test.go
@@ -1,26 +1,82 @@
package tencentcloud
import (
+ "context"
+ "fmt"
"testing"
+ "github.com/hashicorp/terraform-plugin-sdk/terraform"
+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
-func TestAccTencentCloudNeedFixTeoZoneSetting_basic(t *testing.T) {
+// go test -i; go test -test.run TestAccTencentCloudTeoZoneSetting_basic -v
+func TestAccTencentCloudTeoZoneSetting_basic(t *testing.T) {
t.Parallel()
-
resource.Test(t, resource.TestCase{
- PreCheck: func() { testAccPreCheck(t) },
+ PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PRIVATE) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccTeoZoneSetting,
Check: resource.ComposeTestCheckFunc(
- resource.TestCheckResourceAttrSet("tencentcloud_teo_zone_setting.zone_setting", "id"),
+ testAccCheckZoneSettingExists("tencentcloud_teo_zone_setting.basic"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "zone_id", defaultZoneId),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "cache.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", " cache.0.cache.#", "0"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "cache.0.follow_origin.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "cache.0.follow_origin.0.switch", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "cache.0.no_cache.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "cache.0.no_cache.0.switch", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "cache_key.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "cache_key.0.full_url_cache", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "cache_key.0.ignore_case", "on"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "cache_key.0.query_string.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "cache_key.0.query_string.0.action", "excludeCustom"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "cache_key.0.query_string.0.switch", "on"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "cache_key.0.query_string.0.value.#", "2"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "cache_prefresh.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "cache_prefresh.0.percent", "90"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "cache_prefresh.0.switch", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "client_ip_header.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "client_ip_header.0.switch", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "compression.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "compression.0.algorithms.#", "2"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "compression.0.switch", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "force_redirect.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "force_redirect.0.redirect_status_code", "302"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "force_redirect.0.switch", "on"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "https.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "https.0.hsts.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "https.0.hsts.0.include_sub_domains", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "https.0.hsts.0.preload", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "https.0.hsts.0.switch", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "https.0.http2", "on"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "https.0.ocsp_stapling", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "https.0.tls_version.#", "2"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "ipv6.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "ipv6.0.switch", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "max_age.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "max_age.0.follow_origin", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "offline_cache.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "offline_cache.0.switch", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "origin.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "origin.0.origin_pull_protocol", "follow"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "post_max_size.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "post_max_size.0.max_size", "524288000"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "post_max_size.0.switch", "on"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "quic.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "quic.0.switch", "on"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "smart_routing.0.switch", "on"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "upstream_http2.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "upstream_http2.0.switch", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "web_socket.#", "1"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "web_socket.0.switch", "off"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone_setting.basic", "web_socket.0.timeout", "30"),
),
},
{
- ResourceName: "tencentcloud_teo_zone_setting.zone_setting",
+ ResourceName: "tencentcloud_teo_zone_setting.basic",
ImportState: true,
ImportStateVerify: true,
},
@@ -28,10 +84,38 @@ func TestAccTencentCloudNeedFixTeoZoneSetting_basic(t *testing.T) {
})
}
-const testAccTeoZoneSetting = `
+func testAccCheckZoneSettingExists(r string) resource.TestCheckFunc {
+ return func(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+
+ rs, ok := s.RootModule().Resources[r]
+ if !ok {
+ return fmt.Errorf("resource %s is not found", r)
+ }
+
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ setting, err := service.DescribeTeoZoneSetting(ctx, rs.Primary.ID)
+ if setting == nil {
+ return fmt.Errorf("zone setting %s is not found", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+
+ return nil
+ }
+}
+
+const testAccTeoZoneSettingVar = `
+variable "zone_id" {
+ default = "` + defaultZoneId + `"
+}`
+
+const testAccTeoZoneSetting = testAccTeoZoneSettingVar + `
-resource "tencentcloud_teo_zone_setting" "zone_setting" {
- zone_id = tencentcloud_teo_zone.zone.id
+resource "tencentcloud_teo_zone_setting" "basic" {
+ zone_id = var.zone_id
cache {
follow_origin {
@@ -90,7 +174,7 @@ resource "tencentcloud_teo_zone_setting" "zone_setting" {
max_age {
follow_origin = "off"
- max_age_time = 600
+ max_age_time = 0
}
offline_cache {
diff --git a/tencentcloud/resource_tc_teo_zone_test.go b/tencentcloud/resource_tc_teo_zone_test.go
index 0292cbda47..28718ff24d 100644
--- a/tencentcloud/resource_tc_teo_zone_test.go
+++ b/tencentcloud/resource_tc_teo_zone_test.go
@@ -1,46 +1,134 @@
package tencentcloud
import (
+ "context"
+ "fmt"
"testing"
+ "github.com/hashicorp/terraform-plugin-sdk/terraform"
+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
-func TestAccTencentCloudNeedFixTeoZone_basic(t *testing.T) {
- t.Parallel()
+func init() {
+ // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_teo_zone
+ resource.AddTestSweepers("tencentcloud_teo_zone", &resource.Sweeper{
+ Name: "tencentcloud_teo_zone",
+ F: testSweepZone,
+ })
+}
+
+func testSweepZone(region string) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+ cli, _ := sharedClientForRegion(region)
+ client := cli.(*TencentCloudClient).apiV3Conn
+ service := TeoService{client}
+
+ zoneId := clusterPrometheusId
+ zone, err := service.DescribeTeoZone(ctx, zoneId)
+ if err != nil {
+ return err
+ }
+
+ if zone == nil {
+ return nil
+ }
+
+ err = service.DeleteTeoZoneById(ctx, zoneId)
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+// go test -i; go test -test.run TestAccTencentCloudTeoZone_basic -v
+func TestAccTencentCloudTeoZone_basic(t *testing.T) {
+ t.Parallel()
resource.Test(t, resource.TestCase{
- PreCheck: func() { testAccPreCheck(t) },
- Providers: testAccProviders,
+ PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PRIVATE) },
+ Providers: testAccProviders,
+ CheckDestroy: testAccCheckZoneDestroy,
Steps: []resource.TestStep{
{
Config: testAccTeoZone,
Check: resource.ComposeTestCheckFunc(
- resource.TestCheckResourceAttrSet("tencentcloud_teo_zone.zone", "id"),
+ testAccCheckZoneExists("tencentcloud_teo_zone.basic"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone.basic", "zone_name", "tf-teo.xyz"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone.basic", "plan_type", "ent_with_bot"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone.basic", "type", "full"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone.basic", "paused", "false"),
+ resource.TestCheckResourceAttr("tencentcloud_teo_zone.basic", "cname_speed_up", "enabled"),
+ //resource.TestCheckResourceAttr("tencentcloud_teo_zone.basic", "vanity_name_servers.0.servers", ""),
),
},
- {
- ResourceName: "tencentcloud_teo_zone.zone",
- ImportState: true,
- ImportStateVerify: true,
- },
+ //{
+ // ResourceName: "tencentcloud_teo_zone.basic",
+ // ImportState: true,
+ // ImportStateVerify: true,
+ //},
},
})
}
+func testAccCheckZoneDestroy(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ for _, rs := range s.RootModule().Resources {
+ if rs.Type != "tencentcloud_teo_zone" {
+ continue
+ }
+
+ agents, err := service.DescribeTeoZone(ctx, rs.Primary.ID)
+ if agents != nil {
+ return fmt.Errorf("zone %s still exists", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func testAccCheckZoneExists(r string) resource.TestCheckFunc {
+ return func(s *terraform.State) error {
+ logId := getLogId(contextNil)
+ ctx := context.WithValue(context.TODO(), logIdKey, logId)
+
+ rs, ok := s.RootModule().Resources[r]
+ if !ok {
+ return fmt.Errorf("resource %s is not found", r)
+ }
+
+ service := TeoService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn}
+ agents, err := service.DescribeTeoZone(ctx, rs.Primary.ID)
+ if agents == nil {
+ return fmt.Errorf("zone %s is not found", rs.Primary.ID)
+ }
+ if err != nil {
+ return err
+ }
+
+ return nil
+ }
+}
+
const testAccTeoZone = `
-resource "tencentcloud_teo_zone" "zone" {
- name = "sfurnace.work"
- plan_type = "ent_cm_with_bot"
- type = "full"
- paused = false
- cname_speed_up = "enabled"
-
- # vanity_name_servers {
- # switch = "on"
- # servers = ["2.2.2.2"]
- # }
+resource "tencentcloud_teo_zone" "basic" {
+ cname_speed_up = "enabled"
+ plan_type = "ent_with_bot"
+ paused = false
+ tags = {}
+ type = "full"
+ zone_name = "tf-teo.xyz"
+
+ #tags = {
+ # "TestKey" = "terraform"
+ #}
}
`
diff --git a/website/docs/r/teo_ddos_policy.html.markdown b/website/docs/r/teo_ddos_policy.html.markdown
index 0e25345b92..a314e15fa6 100644
--- a/website/docs/r/teo_ddos_policy.html.markdown
+++ b/website/docs/r/teo_ddos_policy.html.markdown
@@ -180,8 +180,8 @@ In addition to all arguments above, the following attributes are exported:
## Import
-teo ddos_policy can be imported using the id, e.g.
+teo ddos_policy can be imported using the id#ddosPolicy_id, e.g.
```
-$ terraform import tencentcloud_teo_ddos_policy.ddos_policy ddosPolicy_id
+$ terraform import tencentcloud_teo_ddos_policy.ddos_policy zone-2a1u0y616jz6#11587
```
diff --git a/website/docs/r/teo_dns_sec.html.markdown b/website/docs/r/teo_dns_sec.html.markdown
index c9039b7074..82929c67b3 100644
--- a/website/docs/r/teo_dns_sec.html.markdown
+++ b/website/docs/r/teo_dns_sec.html.markdown
@@ -26,22 +26,16 @@ The following arguments are supported:
* `status` - (Required, String) DNSSEC status. Valid values: `enabled`, `disabled`.
* `zone_id` - (Required, String, ForceNew) Site ID.
+* `dnssec` - (Optional, List) DNSSEC infos.
+
+The `dnssec` object supports the following:
+
## Attributes Reference
In addition to all arguments above, the following attributes are exported:
* `id` - ID of the resource.
-* `dnssec` - DNSSEC infos.
- * `algorithm` - Encryption algorithm.
- * `d_s` - DS record value.
- * `digest_algorithm` - Digest algorithm.
- * `digest_type` - Digest type.
- * `digest` - Digest message.
- * `flags` - Flag.
- * `key_tag` - Key tag.
- * `key_type` - Encryption type.
- * `public_key` - Public key.
* `modified_on` - Last modification date.