Skip to content

Commit

Permalink
Add test for importing github_branch_protection
Browse files Browse the repository at this point in the history
There was an existing test for importing by <repo-name>:<pattern>,
but not a test for <repo-node-id>:<pattern>.
  • Loading branch information
tibbes committed Feb 28, 2021
1 parent 8defb41 commit e662b4f
Showing 1 changed file with 26 additions and 2 deletions.
28 changes: 26 additions & 2 deletions github/resource_github_branch_protection_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func TestAccGithubBranchProtection(t *testing.T) {
ResourceName: "github_branch_protection.test",
ImportState: true,
ImportStateVerify: true,
ImportStateIdFunc: branchProtectionImportStateIdFunc(
ImportStateIdFunc: importBranchProtectionByRepoName(
fmt.Sprintf("tf-acc-test-%s", randomID), "main",
),
},
Expand Down Expand Up @@ -122,6 +122,13 @@ func TestAccGithubBranchProtection(t *testing.T) {
Config: config,
Check: check,
},
{
ResourceName: "github_branch_protection.test",
ImportState: true,
ImportStateVerify: true,
ImportStateIdFunc: importBranchProtectionByRepoID(
"github_repository.test", "main"),
},
},
})
}
Expand Down Expand Up @@ -322,8 +329,25 @@ func TestAccGithubBranchProtection(t *testing.T) {

}

func branchProtectionImportStateIdFunc(repo, pattern string) resource.ImportStateIdFunc {
func importBranchProtectionByRepoName(repo, pattern string) resource.ImportStateIdFunc {
// test importing using an ID of the form <repo-name>:<branch-protection-pattern>
return func(s *terraform.State) (string, error) {
return fmt.Sprintf("%s:%s", repo, pattern), nil
}
}

func importBranchProtectionByRepoID(repoLogicalName, pattern string) resource.ImportStateIdFunc {
// test importing using an ID of the form <repo-node-id>:<branch-protection-pattern>
// by retrieving the GraphQL ID from the terraform.State
return func(s *terraform.State) (string, error) {
repo := s.RootModule().Resources[repoLogicalName]
if repo == nil {
return "", fmt.Errorf("Cannot find %s in terraform state", repoLogicalName)
}
repoID, found := repo.Primary.Attributes["node_id"]
if !found {
return "", fmt.Errorf("Repository %s does not have a node_id in terraform state", repo.Primary.ID)
}
return fmt.Sprintf("%s:%s", repoID, pattern), nil
}
}

0 comments on commit e662b4f

Please sign in to comment.