@@ -60,6 +60,52 @@ func TestAccEndpointsService_grpc(t *testing.T) {
6060 })
6161}
6262
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+
63109func testAccEndpointsService_basic (serviceId , project , rev string ) string {
64110 return fmt .Sprintf (`
65111resource "google_endpoints_service" "endpoints_service" {
@@ -131,6 +177,106 @@ EOF
131177` , serviceId , project )
132178}
133179
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+
134280func testAccCheckEndpointExistsByName (t * testing.T , serviceId string ) resource.TestCheckFunc {
135281 return func (s * terraform.State ) error {
136282 config := acctest .GoogleProviderConfig (t )
0 commit comments