github.com/pbthorste/terraform@v0.8.6-0.20170127005045-deb56bd93da2/builtin/providers/google/resource_google_project_test.go (about)

     1  package google
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"testing"
     7  
     8  	"github.com/hashicorp/terraform/helper/acctest"
     9  	"github.com/hashicorp/terraform/helper/resource"
    10  	"github.com/hashicorp/terraform/terraform"
    11  	"google.golang.org/api/cloudresourcemanager/v1"
    12  )
    13  
    14  var (
    15  	org = multiEnvSearch([]string{
    16  		"GOOGLE_ORG",
    17  	})
    18  
    19  	pname          = "Terraform Acceptance Tests"
    20  	originalPolicy *cloudresourcemanager.Policy
    21  )
    22  
    23  func multiEnvSearch(ks []string) string {
    24  	for _, k := range ks {
    25  		if v := os.Getenv(k); v != "" {
    26  			return v
    27  		}
    28  	}
    29  	return ""
    30  }
    31  
    32  // Test that a Project resource can be created and an IAM policy
    33  // associated
    34  func TestAccGoogleProject_create(t *testing.T) {
    35  	pid := "terraform-" + acctest.RandString(10)
    36  	resource.Test(t, resource.TestCase{
    37  		PreCheck:  func() { testAccPreCheck(t) },
    38  		Providers: testAccProviders,
    39  		Steps: []resource.TestStep{
    40  			// This step imports an existing project
    41  			resource.TestStep{
    42  				Config: testAccGoogleProject_create(pid, pname, org),
    43  				Check: resource.ComposeTestCheckFunc(
    44  					testAccCheckGoogleProjectExists("google_project.acceptance", pid),
    45  				),
    46  			},
    47  		},
    48  	})
    49  }
    50  
    51  func testAccCheckGoogleProjectExists(r, pid string) resource.TestCheckFunc {
    52  	return func(s *terraform.State) error {
    53  		rs, ok := s.RootModule().Resources[r]
    54  		if !ok {
    55  			return fmt.Errorf("Not found: %s", r)
    56  		}
    57  
    58  		if rs.Primary.ID == "" {
    59  			return fmt.Errorf("No ID is set")
    60  		}
    61  
    62  		if rs.Primary.ID != pid {
    63  			return fmt.Errorf("Expected project %q to match ID %q in state", pid, rs.Primary.ID)
    64  		}
    65  
    66  		return nil
    67  	}
    68  }
    69  
    70  func testAccGoogleProjectImportExisting(pid string) string {
    71  	return fmt.Sprintf(`
    72  resource "google_project" "acceptance" {
    73      project_id = "%s"
    74  
    75  }
    76  `, pid)
    77  }
    78  
    79  func testAccGoogleProjectImportExistingWithIam(pid string) string {
    80  	return fmt.Sprintf(`
    81  resource "google_project" "acceptance" {
    82      project_id = "%v"
    83      policy_data = "${data.google_iam_policy.admin.policy_data}"
    84  }
    85  data "google_iam_policy" "admin" {
    86    binding {
    87      role = "roles/storage.objectViewer"
    88      members = [
    89        "user:evanbrown@google.com",
    90      ]
    91    }
    92    binding {
    93      role = "roles/compute.instanceAdmin"
    94      members = [
    95        "user:evanbrown@google.com",
    96        "user:evandbrown@gmail.com",
    97      ]
    98    }
    99  }`, pid)
   100  }