Skip to content

Commit 884f511

Browse files
committed
Basic unit tests for lien. Enable resource manager generated code.
1 parent c803aa9 commit 884f511

File tree

3 files changed

+112
-7
lines changed

3 files changed

+112
-7
lines changed

google/provider.go

+1
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ func Provider() terraform.ResourceProvider {
9595

9696
ResourcesMap: mergeResourceMaps(
9797
GeneratedComputeResourcesMap,
98+
GeneratedResourceManagerResourcesMap,
9899
map[string]*schema.Resource{
99100
"google_bigquery_dataset": resourceBigQueryDataset(),
100101
"google_bigquery_table": resourceBigQueryTable(),
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
package google
2+
3+
import (
4+
"fmt"
5+
"strings"
6+
"testing"
7+
8+
"github.com/hashicorp/terraform/helper/acctest"
9+
"github.com/hashicorp/terraform/helper/resource"
10+
"github.com/hashicorp/terraform/terraform"
11+
resourceManager "google.golang.org/api/cloudresourcemanager/v1"
12+
)
13+
14+
func TestAccResourceManagerLien_basic(t *testing.T) {
15+
t.Parallel()
16+
17+
projectName := fmt.Sprintf("tf-test-%s", acctest.RandString(10))
18+
org := getTestOrgFromEnv(t)
19+
var lien resourceManager.Lien
20+
21+
resource.Test(t, resource.TestCase{
22+
PreCheck: func() { testAccPreCheck(t) },
23+
Providers: testAccProviders,
24+
CheckDestroy: testAccCheckResourceManagerLienDestroy,
25+
Steps: []resource.TestStep{
26+
resource.TestStep{
27+
Config: testAccResourceManagerLien_basic(projectName, org),
28+
Check: resource.ComposeTestCheckFunc(
29+
testAccCheckResourceManagerLienExists(
30+
"google_resource_manager_lien.lien", projectName, &lien),
31+
),
32+
},
33+
resource.TestStep{
34+
ResourceName: "google_resource_manager_lien.lien",
35+
ImportState: true,
36+
ImportStateVerify: true,
37+
ImportStateIdFunc: func(_ *terraform.State) (string, error) {
38+
return fmt.Sprintf("%s/%s",
39+
projectName,
40+
strings.Split(lien.Name, "/")[1]), nil
41+
},
42+
},
43+
},
44+
})
45+
}
46+
47+
func testAccCheckResourceManagerLienExists(n, projectName string, lien *resourceManager.Lien) resource.TestCheckFunc {
48+
return func(s *terraform.State) error {
49+
rs, ok := s.RootModule().Resources[n]
50+
if !ok {
51+
return fmt.Errorf("Not found: %s", n)
52+
}
53+
54+
if rs.Primary.ID == "" {
55+
return fmt.Errorf("No ID is set")
56+
}
57+
58+
config := testAccProvider.Meta().(*Config)
59+
60+
found, err := config.clientResourceManager.Liens.List().Parent(fmt.Sprintf("projects/%s", projectName)).Do()
61+
if err != nil {
62+
return err
63+
}
64+
if len(found.Liens) != 1 {
65+
return fmt.Errorf("Lien %s not found", rs.Primary.ID)
66+
}
67+
68+
*lien = *found.Liens[0]
69+
70+
return nil
71+
}
72+
}
73+
74+
func testAccCheckResourceManagerLienDestroy(s *terraform.State) error {
75+
config := testAccProvider.Meta().(*Config)
76+
77+
for _, rs := range s.RootModule().Resources {
78+
if rs.Type != "google_resource_manager_lien" {
79+
continue
80+
}
81+
82+
_, err := config.clientResourceManager.Liens.List().Parent(fmt.Sprintf("projects/%s", rs.Primary.Attributes["parent"])).Do()
83+
if err == nil {
84+
return fmt.Errorf("Lien %s still exists", rs.Primary.ID)
85+
}
86+
}
87+
88+
return nil
89+
}
90+
91+
func testAccResourceManagerLien_basic(projectName, org string) string {
92+
return fmt.Sprintf(`
93+
resource "google_project" "project" {
94+
project_id = "%s"
95+
name = "some test project"
96+
org_id = "%s"
97+
}
98+
99+
resource "google_resource_manager_lien" "lien" {
100+
parent = "projects/${google_project.project.project_id}"
101+
restrictions = ["resourcemanager.projects.delete"]
102+
origin = "something"
103+
reason = "something else"
104+
}
105+
`, projectName, org)
106+
}

google/utils.go

+5-7
Original file line numberDiff line numberDiff line change
@@ -298,15 +298,13 @@ func mergeSchemas(a, b map[string]*schema.Schema) map[string]*schema.Schema {
298298
return merged
299299
}
300300

301-
func mergeResourceMaps(a, b map[string]*schema.Resource) map[string]*schema.Resource {
301+
func mergeResourceMaps(ms ...map[string]*schema.Resource) map[string]*schema.Resource {
302302
merged := make(map[string]*schema.Resource)
303303

304-
for k, v := range a {
305-
merged[k] = v
306-
}
307-
308-
for k, v := range b {
309-
merged[k] = v
304+
for _, m := range ms {
305+
for k, v := range m {
306+
merged[k] = v
307+
}
310308
}
311309

312310
return merged

0 commit comments

Comments
 (0)