@@ -2,6 +2,7 @@ package google
2
2
3
3
import (
4
4
"fmt"
5
+ "regexp"
5
6
"testing"
6
7
7
8
"github.com/hashicorp/terraform/helper/acctest"
@@ -63,6 +64,46 @@ func TestAccProjectService_basic(t *testing.T) {
63
64
})
64
65
}
65
66
67
+ func TestAccProjectService_disableDependentServices (t * testing.T ) {
68
+ t .Parallel ()
69
+
70
+ org := getTestOrgFromEnv (t )
71
+ pid := "terraform-" + acctest .RandString (10 )
72
+ services := []string {"cloudbuild.googleapis.com" , "containerregistry.googleapis.com" }
73
+ resource .Test (t , resource.TestCase {
74
+ PreCheck : func () { testAccPreCheck (t ) },
75
+ Providers : testAccProviders ,
76
+ Steps : []resource.TestStep {
77
+ {
78
+ Config : testAccProjectService_disableDependentServices (services , pid , pname , org , "false" ),
79
+ },
80
+ {
81
+ ResourceName : "google_project_service.test" ,
82
+ ImportState : true ,
83
+ ImportStateVerify : true ,
84
+ ImportStateVerifyIgnore : []string {"disable_on_destroy" },
85
+ },
86
+ {
87
+ Config : testAccProjectService_dependencyRemoved (services , pid , pname , org ),
88
+ ExpectError : regexp .MustCompile ("Please specify disable_dependent_services=true if you want to proceed with disabling all services." ),
89
+ },
90
+ {
91
+ Config : testAccProjectService_disableDependentServices (services , pid , pname , org , "true" ),
92
+ },
93
+ {
94
+ ResourceName : "google_project_service.test" ,
95
+ ImportState : true ,
96
+ ImportStateVerify : true ,
97
+ ImportStateVerifyIgnore : []string {"disable_on_destroy" },
98
+ },
99
+ {
100
+ Config : testAccProjectService_dependencyRemoved (services , pid , pname , org ),
101
+ ExpectNonEmptyPlan : true ,
102
+ },
103
+ },
104
+ })
105
+ }
106
+
66
107
func TestAccProjectService_handleNotFound (t * testing.T ) {
67
108
t .Parallel ()
68
109
@@ -136,6 +177,42 @@ resource "google_project_service" "test2" {
136
177
` , pid , name , org , services [0 ], services [1 ])
137
178
}
138
179
180
+ func testAccProjectService_disableDependentServices (services []string , pid , name , org , disableDependentServices string ) string {
181
+ return fmt .Sprintf (`
182
+ resource "google_project" "acceptance" {
183
+ project_id = "%s"
184
+ name = "%s"
185
+ org_id = "%s"
186
+ }
187
+
188
+ resource "google_project_service" "test" {
189
+ project = "${google_project.acceptance.project_id}"
190
+ service = "%s"
191
+ }
192
+
193
+ resource "google_project_service" "test2" {
194
+ project = "${google_project.acceptance.project_id}"
195
+ service = "%s"
196
+ disable_dependent_services = %s
197
+ }
198
+ ` , pid , name , org , services [0 ], services [1 ], disableDependentServices )
199
+ }
200
+
201
+ func testAccProjectService_dependencyRemoved (services []string , pid , name , org string ) string {
202
+ return fmt .Sprintf (`
203
+ resource "google_project" "acceptance" {
204
+ project_id = "%s"
205
+ name = "%s"
206
+ org_id = "%s"
207
+ }
208
+
209
+ resource "google_project_service" "test" {
210
+ project = "${google_project.acceptance.project_id}"
211
+ service = "%s"
212
+ }
213
+ ` , pid , name , org , services [0 ])
214
+ }
215
+
139
216
func testAccProjectService_noDisable (services []string , pid , name , org string ) string {
140
217
return fmt .Sprintf (`
141
218
resource "google_project" "acceptance" {
0 commit comments