diff --git a/google/data_source_google_active_folder.go b/google/data_source_google_active_folder.go index 045005dc8c0..3d64ea2cf6f 100644 --- a/google/data_source_google_active_folder.go +++ b/google/data_source_google_active_folder.go @@ -2,6 +2,7 @@ package google import ( "fmt" + "net/url" "github.com/hashicorp/terraform/helper/schema" resourceManagerV2Beta1 "google.golang.org/api/cloudresourcemanager/v2beta1" @@ -34,7 +35,7 @@ func dataSourceGoogleActiveFolderRead(d *schema.ResourceData, meta interface{}) parent := d.Get("parent").(string) displayName := d.Get("display_name").(string) - queryString := fmt.Sprintf("lifecycleState=ACTIVE AND parent=%s AND displayName=%s", parent, displayName) + queryString := fmt.Sprintf("lifecycleState=ACTIVE AND parent=%s AND displayName=%s", parent, url.QueryEscape(displayName)) searchRequest := &resourceManagerV2Beta1.SearchFoldersRequest{ Query: queryString, } @@ -43,12 +44,12 @@ func dataSourceGoogleActiveFolderRead(d *schema.ResourceData, meta interface{}) return handleNotFoundError(err, d, fmt.Sprintf("Folder Not Found : %s", displayName)) } - folders := searchResponse.Folders - if len(folders) != 1 { - return fmt.Errorf("More than one folder found") + for _, folder := range searchResponse.Folders { + if folder.DisplayName == displayName { + d.SetId(folder.Name) + d.Set("name", folder.Name) + return nil + } } - - d.SetId(folders[0].Name) - d.Set("name", folders[0].Name) - return nil + return fmt.Errorf("Folder not found") } diff --git a/google/data_source_google_active_folder_test.go b/google/data_source_google_active_folder_test.go index de261314354..d083c77ea58 100644 --- a/google/data_source_google_active_folder_test.go +++ b/google/data_source_google_active_folder_test.go @@ -9,7 +9,7 @@ import ( "github.com/hashicorp/terraform/terraform" ) -func TestAccDataSourceGoogleActiveFolder(t *testing.T) { +func TestAccDataSourceGoogleActiveFolder_default(t *testing.T) { org := getTestOrgFromEnv(t) parent := fmt.Sprintf("organizations/%s", org) @@ -29,6 +29,26 @@ func TestAccDataSourceGoogleActiveFolder(t *testing.T) { }) } +func TestAccDataSourceGoogleActiveFolder_space(t *testing.T) { + org := getTestOrgFromEnv(t) + + parent := fmt.Sprintf("organizations/%s", org) + displayName := "terraform test " + acctest.RandString(10) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccDataSourceGoogleActiveFolderConfig(parent, displayName), + Check: resource.ComposeTestCheckFunc( + testAccDataSourceGoogleActiveFolderCheck("data.google_active_folder.my_folder", "google_folder.foobar"), + ), + }, + }, + }) +} + func testAccDataSourceGoogleActiveFolderCheck(data_source_name string, resource_name string) resource.TestCheckFunc { return func(s *terraform.State) error { ds, ok := s.RootModule().Resources[data_source_name]