@@ -60,6 +60,52 @@ func TestAccEndpointsService_grpc(t *testing.T) {
60
60
})
61
61
}
62
62
63
+ func TestAccEndpointsService_grpcNotPreComputeConfigIdByGrpcConfig (t * testing.T ) {
64
+ t .Parallel ()
65
+ prj := envvar .GetTestProjectFromEnv ()
66
+ parent := fmt .Sprintf ("projects/%s" , prj )
67
+ serviceId := "tf-test" + acctest .RandString (t , 10 )
68
+
69
+ acctest .VcrTest (t , resource.TestCase {
70
+ PreCheck : func () { acctest .AccTestPreCheck (t ) },
71
+ ProtoV5ProviderFactories : acctest .ProtoV5ProviderFactories (t ),
72
+ CheckDestroy : testAccCheckEndpointServiceDestroyProducer (t ),
73
+ Steps : []resource.TestStep {
74
+ {
75
+ Config : testAccEndpointsService_grpcNotPreComputeConfigIdByGrpcConfig (serviceId , envvar .GetTestProjectFromEnv (), parent , "1" ),
76
+ Check : testAccCheckEndpointExistsByName (t , serviceId ),
77
+ },
78
+ {
79
+ Config : testAccEndpointsService_grpcNotPreComputeConfigIdByGrpcConfig (serviceId , envvar .GetTestProjectFromEnv (), parent , "2" ),
80
+ Check : testAccCheckEndpointExistsByName (t , serviceId ),
81
+ },
82
+ },
83
+ })
84
+ }
85
+
86
+ func TestAccEndpointsService_openapiNotPreComputeConfigId (t * testing.T ) {
87
+ t .Parallel ()
88
+ prj := envvar .GetTestProjectFromEnv ()
89
+ parent := fmt .Sprintf ("projects/%s" , prj )
90
+ serviceId := "tf-test" + acctest .RandString (t , 10 )
91
+
92
+ acctest .VcrTest (t , resource.TestCase {
93
+ PreCheck : func () { acctest .AccTestPreCheck (t ) },
94
+ ProtoV5ProviderFactories : acctest .ProtoV5ProviderFactories (t ),
95
+ CheckDestroy : testAccCheckEndpointServiceDestroyProducer (t ),
96
+ Steps : []resource.TestStep {
97
+ {
98
+ Config : testAccEndpointsService_openapiNotPreComputeConfigId (serviceId , envvar .GetTestProjectFromEnv (), parent , "1" ),
99
+ Check : testAccCheckEndpointExistsByName (t , serviceId ),
100
+ },
101
+ {
102
+ Config : testAccEndpointsService_openapiNotPreComputeConfigId (serviceId , envvar .GetTestProjectFromEnv (), parent , "2" ),
103
+ Check : testAccCheckEndpointExistsByName (t , serviceId ),
104
+ },
105
+ },
106
+ })
107
+ }
108
+
63
109
func testAccEndpointsService_basic (serviceId , project , rev string ) string {
64
110
return fmt .Sprintf (`
65
111
resource "google_endpoints_service" "endpoints_service" {
@@ -131,6 +177,106 @@ EOF
131
177
` , serviceId , project )
132
178
}
133
179
180
+ func testAccEndpointsService_grpcNotPreComputeConfigIdByGrpcConfig (serviceId , project , parent , description string ) string {
181
+ return fmt .Sprintf (`
182
+ resource "google_tags_tag_key" "key1" {
183
+ parent = "%[3]s"
184
+ short_name = "endpoints-%[1]s-1"
185
+ description = "%[4]s"
186
+ }
187
+
188
+ resource "google_tags_tag_key" "key2" {
189
+ parent = "%[3]s"
190
+ short_name = "endpoints-%[1]s-2"
191
+ lifecycle {
192
+ replace_triggered_by = [google_tags_tag_key.key1.description]
193
+ }
194
+ }
195
+
196
+ resource "google_endpoints_service" "endpoints_service" {
197
+ service_name = "%[1]s.endpoints.%[2]s.cloud.goog"
198
+ project = "%[2]s"
199
+ grpc_config = <<EOF
200
+ type: google.api.Service
201
+ config_version: 3
202
+ name: %[1]s.endpoints.%[2]s.cloud.goog
203
+ title: Test ${google_tags_tag_key.key2.namespaced_name}
204
+ usage:
205
+ rules:
206
+ - selector: endpoints.examples.bookstore.Bookstore.ListShelves
207
+ allow_unregistered_calls: true
208
+ EOF
209
+
210
+ protoc_output_base64 = filebase64("test-fixtures/test_api_descriptor.pb")
211
+ }
212
+ ` , serviceId , project , parent , description )
213
+ }
214
+
215
+ func testAccEndpointsService_openapiNotPreComputeConfigId (serviceId , project , parent , description string ) string {
216
+ return fmt .Sprintf (`
217
+ resource "google_tags_tag_key" "key1" {
218
+ parent = "%[3]s"
219
+ short_name = "endpoints-%[1]s-1"
220
+ description = "%[4]s"
221
+ }
222
+
223
+ resource "google_tags_tag_key" "key2" {
224
+ parent = "%[3]s"
225
+ short_name = "endpoints-%[1]s-2"
226
+ lifecycle {
227
+ replace_triggered_by = [google_tags_tag_key.key1.description]
228
+ }
229
+ }
230
+ resource "google_endpoints_service" "endpoints_service" {
231
+ service_name = "%[1]s.endpoints.%[2]s.cloud.goog"
232
+ project = "%[2]s"
233
+ openapi_config = <<EOF
234
+ swagger: "2.0"
235
+ info:
236
+ description: "${google_tags_tag_key.key2.namespaced_name}"
237
+ title: "Endpoints Example, rev. 1"
238
+ version: "1.0.0"
239
+ host: "%[1]s.endpoints.%[2]s.cloud.goog"
240
+ basePath: "/"
241
+ consumes:
242
+ - "application/json"
243
+ produces:
244
+ - "application/json"
245
+ schemes:
246
+ - "https"
247
+ paths:
248
+ "/echo":
249
+ post:
250
+ description: "Echo back a given message."
251
+ operationId: "echo"
252
+ produces:
253
+ - "application/json"
254
+ responses:
255
+ 200:
256
+ description: "Echo"
257
+ schema:
258
+ $ref: "#/definitions/echoMessage"
259
+ parameters:
260
+ - description: "Message to echo"
261
+ in: body
262
+ name: message
263
+ required: true
264
+ schema:
265
+ $ref: "#/definitions/echoMessage"
266
+ security:
267
+ - api_key: []
268
+ definitions:
269
+ echoMessage:
270
+ properties:
271
+ message:
272
+ type: "string"
273
+ EOF
274
+
275
+ }
276
+
277
+ ` , serviceId , project , parent , description )
278
+ }
279
+
134
280
func testAccCheckEndpointExistsByName (t * testing.T , serviceId string ) resource.TestCheckFunc {
135
281
return func (s * terraform.State ) error {
136
282
config := acctest .GoogleProviderConfig (t )
0 commit comments