blob: 4934d411eeabc88f1ae7693ff526aeb083bc3410 [file] [log] [blame]
// Copyright (c) HashiCorp, Inc.
package provider
import (
"fmt"
"testing"
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
"github.com/hashicorp/terraform-plugin-testing/terraform"
)
const (
bitbucketServerConnectionConfig = providerConfig + `
resource "devlake_bitbucketserver_connection" "bbserver" {
endpoint = "https://bitbucket-server.org"
name = "should_not_exist"
password = "whatever"
username = "serviceAccount"
}
`
)
func TestAccBitbucketServerConnectionResource(t *testing.T) {
resource.Test(t, resource.TestCase{
ProtoV6ProviderFactories: testAccProtoV6ProviderFactories,
Steps: []resource.TestStep{
// Create and Read testing
{
Config: bitbucketServerConnectionConfig,
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr("devlake_bitbucketserver_connection.bbserver", "endpoint", "https://bitbucket-server.org"),
resource.TestCheckResourceAttr("devlake_bitbucketserver_connection.bbserver", "name", "should_not_exist"),
resource.TestCheckResourceAttr("devlake_bitbucketserver_connection.bbserver", "password", "whatever"),
resource.TestCheckResourceAttr("devlake_bitbucketserver_connection.bbserver", "proxy", ""),
resource.TestCheckResourceAttr("devlake_bitbucketserver_connection.bbserver", "rate_limit_per_hour", "0"),
resource.TestCheckResourceAttr("devlake_bitbucketserver_connection.bbserver", "username", "serviceAccount"),
// Verify dynamic values have any value set in the state.
resource.TestCheckResourceAttrSet("devlake_bitbucketserver_connection.bbserver", "id"),
resource.TestCheckResourceAttrSet("devlake_bitbucketserver_connection.bbserver", "last_updated"),
resource.TestCheckResourceAttrSet("devlake_bitbucketserver_connection.bbserver", "created_at"),
resource.TestCheckResourceAttrSet("devlake_bitbucketserver_connection.bbserver", "updated_at"),
),
},
// ImportState testing
{
ResourceName: "devlake_bitbucketserver_connection.bbserver",
ImportState: true,
ImportStateIdFunc: func(s *terraform.State) (string, error) {
if rs, ok := s.RootModule().Resources["devlake_bitbucketserver_connection.bbserver"]; ok {
return rs.Primary.ID, nil
} else {
return "", fmt.Errorf("Resource devlake_bitbucketserver_connection.bbserver not found in state")
}
},
ImportStateVerify: true,
// The last_updated attribute does exist in the devlake API, but
// we want the terraform state here
ImportStateVerifyIgnore: []string{"password", "last_updated"},
},
// Update and Read testing
{
Config: providerConfig + `
resource "devlake_bitbucketserver_connection" "bbserver" {
endpoint = "https://bitbucket-server2.org"
name = "should_not_exist"
password = "whatever"
username = "serviceAccount"
}
`,
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr("devlake_bitbucketserver_connection.bbserver", "endpoint", "https://bitbucket-server2.org"),
resource.TestCheckResourceAttr("devlake_bitbucketserver_connection.bbserver", "name", "should_not_exist"),
resource.TestCheckResourceAttr("devlake_bitbucketserver_connection.bbserver", "password", "whatever"),
resource.TestCheckResourceAttr("devlake_bitbucketserver_connection.bbserver", "proxy", ""),
resource.TestCheckResourceAttr("devlake_bitbucketserver_connection.bbserver", "rate_limit_per_hour", "0"),
resource.TestCheckResourceAttr("devlake_bitbucketserver_connection.bbserver", "username", "serviceAccount"),
// Verify dynamic values have any value set in the state.
resource.TestCheckResourceAttrSet("devlake_bitbucketserver_connection.bbserver", "id"),
resource.TestCheckResourceAttrSet("devlake_bitbucketserver_connection.bbserver", "last_updated"),
resource.TestCheckResourceAttrSet("devlake_bitbucketserver_connection.bbserver", "created_at"),
resource.TestCheckResourceAttrSet("devlake_bitbucketserver_connection.bbserver", "updated_at"),
),
},
// Delete testing automatically occurs in TestCase
},
})
}