diff --git a/tencentcloud/basic_test.go b/tencentcloud/basic_test.go index 076844642d..7fdb2530e2 100644 --- a/tencentcloud/basic_test.go +++ b/tencentcloud/basic_test.go @@ -902,3 +902,11 @@ variable "cynosdb_cluster_security_group_id" { ` // End of Cynosdb + +// TSF +const ( + defaultNamespaceId = "namespace-ym9mkeza" + defaultTsfApplicationId = "application-v69bo6ev" +) + +// End of TSF diff --git a/tencentcloud/resource_tc_tsf_application_config_test.go b/tencentcloud/resource_tc_tsf_application_config_test.go new file mode 100644 index 0000000000..59888106a0 --- /dev/null +++ b/tencentcloud/resource_tc_tsf_application_config_test.go @@ -0,0 +1,108 @@ +package tencentcloud + +import ( + "context" + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" +) + +// go test -i; go test -test.run TestAccTencentCloudTsfApplicationConfigResource_basic -v +func TestAccTencentCloudTsfApplicationConfigResource_basic(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + PreCheck: func() { + testAccPreCheck(t) + }, + Providers: testAccProviders, + CheckDestroy: testAccCheckTsfApplicationConfigDestroy, + Steps: []resource.TestStep{ + { + Config: testAccTsfApplicationConfig, + Check: resource.ComposeTestCheckFunc( + testAccCheckTsfApplicationConfigExists("tencentcloud_tsf_application_config.application_config"), + resource.TestCheckResourceAttrSet("tencentcloud_tsf_application_config.application_config", "id"), + resource.TestCheckResourceAttr("tencentcloud_tsf_application_config.application_config", "config_name", "tf-test-config"), + resource.TestCheckResourceAttr("tencentcloud_tsf_application_config.application_config", "config_version", "1.0"), + resource.TestCheckResourceAttr("tencentcloud_tsf_application_config.application_config", "config_value", "name: \"name\""), + resource.TestCheckResourceAttr("tencentcloud_tsf_application_config.application_config", "config_version_desc", "version desc"), + // resource.TestCheckResourceAttr("tencentcloud_tsf_application_config.application_config", "encode_with_base64", "false"), + ), + }, + { + ResourceName: "tencentcloud_tsf_application_config.application_config", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func testAccCheckTsfApplicationConfigDestroy(s *terraform.State) error { + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + service := TsfService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + for _, rs := range s.RootModule().Resources { + if rs.Type != "tencentcloud_tsf_application_config" { + continue + } + + res, err := service.DescribeTsfApplicationConfigById(ctx, rs.Primary.ID, "") + if err != nil { + return err + } + + if res != nil { + return fmt.Errorf("tsf application config %s still exists", rs.Primary.ID) + } + } + return nil +} + +func testAccCheckTsfApplicationConfigExists(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 := TsfService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + res, err := service.DescribeTsfApplicationConfigById(ctx, rs.Primary.ID, "") + if err != nil { + return err + } + + if res == nil { + return fmt.Errorf("tsf application config %s is not found", rs.Primary.ID) + } + + return nil + } +} + +const testAccTsfApplicationConfigVar = ` +variable "application_id" { + default = "` + defaultTsfApplicationId + `" +} +` + +const testAccTsfApplicationConfig = testAccTsfApplicationConfigVar + ` + +resource "tencentcloud_tsf_application_config" "application_config" { + config_name = "tf-test-config" + config_version = "1.0" + config_value = "name: \"name\"" + application_id = var.application_id + config_version_desc = "version desc" + # config_type = "" + # encode_with_base64 = false + # program_id_list = +} + +` diff --git a/tencentcloud/resource_tc_tsf_microservice_test.go b/tencentcloud/resource_tc_tsf_microservice_test.go new file mode 100644 index 0000000000..f8759481cd --- /dev/null +++ b/tencentcloud/resource_tc_tsf_microservice_test.go @@ -0,0 +1,118 @@ +package tencentcloud + +import ( + "context" + "fmt" + "strings" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" +) + +// go test -i; go test -test.run TestAccTencentCloudTsfMicroserviceResource_basic -v +func TestAccTencentCloudTsfMicroserviceResource_basic(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + PreCheck: func() { + testAccPreCheck(t) + }, + Providers: testAccProviders, + CheckDestroy: testAccCheckTsfMicroserviceDestroy, + Steps: []resource.TestStep{ + { + Config: testAccTsfMicroservice, + Check: resource.ComposeTestCheckFunc( + testAccCheckTsfMicroserviceExists("tencentcloud_tsf_microservice.microservice"), + resource.TestCheckResourceAttrSet("tencentcloud_tsf_microservice.microservice", "id"), + resource.TestCheckResourceAttr("tencentcloud_tsf_microservice.microservice", "microservice_name", "test-microservice"), + resource.TestCheckResourceAttr("tencentcloud_tsf_microservice.microservice", "microservice_desc", "desc-microservice"), + resource.TestCheckResourceAttr("tencentcloud_tsf_microservice.microservice", "tags.createdBy", "terraform"), + ), + }, + { + ResourceName: "tencentcloud_tsf_microservice.microservice", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func testAccCheckTsfMicroserviceDestroy(s *terraform.State) error { + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + service := TsfService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + for _, rs := range s.RootModule().Resources { + if rs.Type != "tencentcloud_tsf_microservice" { + continue + } + + idSplit := strings.Split(rs.Primary.ID, FILED_SP) + if len(idSplit) != 2 { + return fmt.Errorf("id is broken,%s", rs.Primary.ID) + } + namespaceId := idSplit[0] + microserviceId := idSplit[1] + + res, err := service.DescribeTsfMicroserviceById(ctx, namespaceId, microserviceId, "") + if err != nil { + return err + } + + if res != nil { + return fmt.Errorf("tsf microservice %s still exists", rs.Primary.ID) + } + } + return nil +} + +func testAccCheckTsfMicroserviceExists(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) + } + namespaceId := idSplit[0] + microserviceId := idSplit[1] + + service := TsfService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + res, err := service.DescribeTsfMicroserviceById(ctx, namespaceId, microserviceId, "") + if err != nil { + return err + } + + if res == nil { + return fmt.Errorf("tsf microservice %s is not found", rs.Primary.ID) + } + + return nil + } +} + +const testAccTsfMicroserviceVar = ` +variable "namespace_id" { + default = "` + defaultNamespaceId + `" +} +` + +const testAccTsfMicroservice = testAccTsfMicroserviceVar + ` + +resource "tencentcloud_tsf_microservice" "microservice" { + namespace_id = var.namespace_id + microservice_name = "test-microservice" + microservice_desc = "desc-microservice" + tags = { + "createdBy" = "terraform" + } +} + +`