gapic-generator 0.11.0 → 0.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +299 -0
  3. data/CONTRIBUTING.md +1 -1
  4. data/README.md +71 -37
  5. data/bin/protoc-gen-ruby_gapic +2 -2
  6. data/lib/gapic/file_formatter.rb +23 -19
  7. data/lib/gapic/formatting_utils.rb +22 -9
  8. data/lib/gapic/gem_builder.rb +15 -17
  9. data/lib/gapic/generator/version.rb +1 -1
  10. data/lib/gapic/generators/base_generator.rb +6 -4
  11. data/lib/gapic/generators/default_generator.rb +70 -34
  12. data/lib/gapic/generators/default_generator_parameters.rb +9 -3
  13. data/lib/gapic/grpc_service_config/parser.rb +2 -2
  14. data/lib/gapic/model/api_metadata.rb +173 -0
  15. data/lib/gapic/model/method/http_annotation.rb +158 -60
  16. data/lib/gapic/model/method/lro.rb +8 -5
  17. data/lib/gapic/model/method/routing.rb +3 -18
  18. data/lib/gapic/model/mixins.rb +76 -10
  19. data/lib/gapic/model/service/nonstandard_lro_provider.rb +10 -11
  20. data/lib/gapic/package_snippets.rb +159 -0
  21. data/lib/gapic/path_pattern/parser.rb +11 -2
  22. data/lib/gapic/path_pattern/pattern.rb +18 -1
  23. data/lib/gapic/path_pattern/segment.rb +11 -4
  24. data/lib/gapic/presenters/enum_presenter.rb +14 -0
  25. data/lib/gapic/presenters/enum_value_presenter.rb +4 -1
  26. data/lib/gapic/presenters/field_presenter.rb +78 -21
  27. data/lib/gapic/presenters/gem_presenter.rb +109 -35
  28. data/lib/gapic/presenters/message_presenter.rb +15 -0
  29. data/lib/gapic/presenters/method/http_binding_presenter.rb +128 -0
  30. data/lib/gapic/presenters/method/rest_pagination_info.rb +25 -16
  31. data/lib/gapic/presenters/method_presenter.rb +109 -35
  32. data/lib/gapic/presenters/method_rest_presenter.rb +70 -137
  33. data/lib/gapic/presenters/package_presenter.rb +63 -18
  34. data/lib/gapic/presenters/resource_presenter.rb +9 -3
  35. data/lib/gapic/presenters/service/lro_client_presenter.rb +14 -14
  36. data/lib/gapic/presenters/service/mixin_client_presenter.rb +89 -0
  37. data/lib/gapic/presenters/service/sub_client_presenter.rb +84 -0
  38. data/lib/gapic/presenters/service_presenter.rb +183 -31
  39. data/lib/gapic/presenters/service_rest_presenter.rb +180 -27
  40. data/lib/gapic/presenters/snippet/client_call_presenter.rb +82 -0
  41. data/lib/gapic/presenters/snippet/client_initialization_presenter.rb +87 -0
  42. data/lib/gapic/presenters/snippet/declaration_presenter.rb +91 -0
  43. data/lib/gapic/presenters/snippet/expression_presenter.rb +135 -0
  44. data/lib/gapic/presenters/snippet/iteration_presenter.rb +118 -0
  45. data/lib/gapic/presenters/snippet/parameter_presenter.rb +67 -0
  46. data/lib/gapic/presenters/snippet/request_initialization_presenters.rb +202 -0
  47. data/lib/gapic/presenters/snippet/response_handling_presenters.rb +329 -0
  48. data/lib/gapic/presenters/snippet/statement_presenter.rb +134 -0
  49. data/lib/gapic/presenters/snippet/type_presenter.rb +98 -0
  50. data/lib/gapic/presenters/snippet_presenter.rb +199 -10
  51. data/lib/gapic/presenters.rb +2 -0
  52. data/lib/gapic/runner.rb +1 -1
  53. data/lib/gapic/schema/api.rb +49 -3
  54. data/lib/gapic/schema/loader.rb +67 -22
  55. data/lib/gapic/schema/parameter_schema.rb +8 -8
  56. data/lib/gapic/schema/proto_tools.rb +193 -0
  57. data/lib/gapic/schema/request_param_parser.rb +5 -7
  58. data/lib/gapic/schema/service_config_parser.rb +38 -4
  59. data/lib/gapic/schema/wrappers.rb +192 -31
  60. data/lib/gapic/uri_template/parser.rb +15 -7
  61. data/lib/google/cloud/tools/snippetgen/configlanguage/v1/snippet_config_language_pb.rb +104 -0
  62. data/lib/google/cloud/tools/snippetgen/snippetindex/v1/snippet_index_pb.rb +58 -0
  63. data/lib/google/protobuf/compiler/plugin_pb.rb +47 -0
  64. data/templates/default/binding_override.text.erb +6 -0
  65. data/templates/default/gem/gemfile.text.erb +12 -0
  66. data/templates/default/gem/{gemspec.erb → gemspec.text.erb} +3 -11
  67. data/templates/default/gem/{readme.erb → readme.text.erb} +10 -6
  68. data/templates/default/gem/{rubocop.erb → rubocop.text.erb} +3 -0
  69. data/templates/default/gem/{test_helper.erb → test_helper.text.erb} +4 -2
  70. data/templates/default/gem/toys.text.erb +12 -0
  71. data/templates/default/helpers/default_helper.rb +33 -1
  72. data/templates/default/lib/_binding_override.text.erb +49 -0
  73. data/templates/default/lib/{_package.erb → _package.text.erb} +6 -9
  74. data/templates/default/lib/_package_rest.text.erb +24 -0
  75. data/templates/default/lib/{_service.erb → _service.text.erb} +11 -23
  76. data/templates/default/lib/package/_self_configure.text.erb +16 -0
  77. data/templates/default/lib/package/_self_configure_defaults.text.erb +13 -0
  78. data/templates/default/lib/package/self_configure/_binding_default.text.erb +15 -0
  79. data/templates/default/lib/rest/_rest.text.erb +46 -0
  80. data/templates/default/package_rest.text.erb +6 -0
  81. data/templates/default/proto_docs/_deprecated.text.erb +9 -0
  82. data/templates/default/proto_docs/{_enum.erb → _enum.text.erb} +1 -0
  83. data/templates/default/proto_docs/{_message.erb → _message.text.erb} +2 -0
  84. data/templates/default/service/client/{_client.erb → _client.text.erb} +60 -12
  85. data/templates/default/service/client/{_config.erb → _config.text.erb} +39 -8
  86. data/templates/default/service/client/{_operations.erb → _operations.text.erb} +24 -3
  87. data/templates/default/service/client/method/{_def.erb → _def.text.erb} +2 -2
  88. data/templates/default/service/client/method/def/{_options_defaults.erb → _options_defaults.text.erb} +2 -1
  89. data/templates/default/service/client/method/def/_request_normal.text.erb +18 -0
  90. data/templates/default/service/client/method/def/_request_streaming.text.erb +23 -0
  91. data/templates/default/service/client/method/def/{_response.erb → _response.text.erb} +2 -0
  92. data/templates/default/service/client/method/def/{_response_nonstandard_lro.erb → _response_nonstandard_lro.text.erb} +1 -1
  93. data/templates/default/service/client/method/def/_response_normal.text.erb +4 -0
  94. data/templates/default/service/client/method/def/{_response_normal.erb → _response_normal_lro.text.erb} +1 -3
  95. data/templates/default/service/client/method/def/{_response_paged.erb → _response_paged.text.erb} +1 -1
  96. data/templates/default/service/client/method/docs/{_request_normal.erb → _request_normal.text.erb} +1 -1
  97. data/templates/default/service/client/method/docs/_snippets.text.erb +6 -0
  98. data/templates/default/service/client/resource/_def.text.erb +7 -0
  99. data/templates/default/service/nonstandard_lro.text.erb +6 -0
  100. data/templates/default/service/rest/client/{_client.erb → _client.text.erb} +82 -13
  101. data/templates/default/service/rest/client/_config.text.erb +178 -0
  102. data/templates/default/service/rest/client/_operations.text.erb +124 -0
  103. data/templates/default/service/rest/client/method/{_def.erb → _def.text.erb} +7 -1
  104. data/templates/default/service/rest/client/method/def/{_options_defaults.erb → _options_defaults.text.erb} +8 -3
  105. data/templates/default/service/rest/client/method/def/{_response.erb → _response.text.erb} +4 -0
  106. data/templates/default/service/rest/client/method/def/{_response_nonstandard_lro.erb → _response_nonstandard_lro.text.erb} +5 -4
  107. data/templates/default/service/rest/client/method/def/_response_normal.text.erb +5 -0
  108. data/templates/default/service/rest/client/method/def/_response_normal_lro.text.erb +7 -0
  109. data/templates/default/service/rest/client/method/def/_response_paged.text.erb +7 -0
  110. data/templates/default/service/rest/client/method/def/_response_server_streaming.text.erb +11 -0
  111. data/templates/default/service/rest/client/method/docs/{_request.erb → _request.text.erb} +1 -3
  112. data/templates/default/service/rest/client/method/docs/_result.text.erb +10 -0
  113. data/templates/default/service/rest/client/method/docs/_snippets.text.erb +6 -0
  114. data/templates/default/service/{nonstandard_lro.erb → rest/nonstandard_lro.text.erb} +1 -1
  115. data/templates/default/service/rest/operations.text.erb +6 -0
  116. data/templates/default/service/rest/service_stub/_service_stub.text.erb +63 -0
  117. data/templates/default/service/rest/service_stub/grpc_transcoding_method/_def.text.erb +37 -0
  118. data/templates/default/service/rest/service_stub/method/_def.text.erb +35 -0
  119. data/templates/default/service/rest/service_stub/method/def/_response.text.erb +37 -0
  120. data/templates/default/service/rest/test/{client.erb → client.text.erb} +3 -3
  121. data/templates/default/service/rest/test/method/_assert_response.text.erb +2 -0
  122. data/templates/default/service/rest/test/method/{_configure.erb → _configure.text.erb} +3 -2
  123. data/templates/default/service/rest/test/method/_normal.text.erb +60 -0
  124. data/templates/default/service/rest/test/method/_server.text.erb +60 -0
  125. data/templates/default/service/rest/test/method/{_setup.erb → _setup.text.erb} +26 -10
  126. data/templates/default/service/test/{_resource.erb → _resource.text.erb} +1 -1
  127. data/templates/default/service/test/{client.erb → client.text.erb} +3 -2
  128. data/templates/default/service/test/client_paths.text.erb +33 -0
  129. data/templates/default/service/test/method/{_bidi.erb → _bidi.text.erb} +1 -1
  130. data/templates/default/service/test/method/{_client.erb → _client.text.erb} +1 -1
  131. data/templates/default/service/test/method/{_configure.erb → _configure.text.erb} +2 -1
  132. data/templates/default/service/test/method/{_normal.erb → _normal.text.erb} +1 -1
  133. data/templates/default/service/test/method/{_server.erb → _server.text.erb} +1 -1
  134. data/templates/default/service/test/method/{_setup.erb → _setup.text.erb} +19 -2
  135. data/templates/default/snippets/{gemfile.erb → gemfile.text.erb} +2 -2
  136. data/templates/default/snippets/snippet/_body.text.erb +24 -0
  137. data/templates/default/snippets/snippet/_inline.text.erb +11 -0
  138. data/templates/default/snippets/snippet/_standalone.text.erb +25 -0
  139. data/templates/default/snippets/{standalone.erb → standalone.text.erb} +1 -1
  140. metadata +198 -273
  141. data/lib/google/api/annotations.pb.rb +0 -39
  142. data/lib/google/api/auth.pb.rb +0 -75
  143. data/lib/google/api/backend.pb.rb +0 -59
  144. data/lib/google/api/billing.pb.rb +0 -53
  145. data/lib/google/api/client.pb.rb +0 -43
  146. data/lib/google/api/context.pb.rb +0 -47
  147. data/lib/google/api/control.pb.rb +0 -38
  148. data/lib/google/api/documentation.pb.rb +0 -56
  149. data/lib/google/api/endpoint.pb.rb +0 -42
  150. data/lib/google/api/field_behavior.pb.rb +0 -51
  151. data/lib/google/api/http.pb.rb +0 -60
  152. data/lib/google/api/label.pb.rb +0 -49
  153. data/lib/google/api/launch_stage.pb.rb +0 -37
  154. data/lib/google/api/log.pb.rb +0 -47
  155. data/lib/google/api/logging.pb.rb +0 -48
  156. data/lib/google/api/metric.pb.rb +0 -90
  157. data/lib/google/api/monitored_resource.pb.rb +0 -68
  158. data/lib/google/api/monitoring.pb.rb +0 -48
  159. data/lib/google/api/quota.pb.rb +0 -63
  160. data/lib/google/api/resource.pb.rb +0 -80
  161. data/lib/google/api/routing.pb.rb +0 -58
  162. data/lib/google/api/service.pb.rb +0 -90
  163. data/lib/google/api/source_info.pb.rb +0 -44
  164. data/lib/google/api/system_parameter.pb.rb +0 -51
  165. data/lib/google/api/usage.pb.rb +0 -47
  166. data/lib/google/cloud/extended_operations.pb.rb +0 -57
  167. data/lib/google/longrunning/operations.pb.rb +0 -115
  168. data/lib/google/protobuf/any.pb.rb +0 -40
  169. data/lib/google/protobuf/api.pb.rb +0 -69
  170. data/lib/google/protobuf/compiler/plugin.pb.rb +0 -79
  171. data/lib/google/protobuf/descriptor.pb.rb +0 -360
  172. data/lib/google/protobuf/duration.pb.rb +0 -41
  173. data/lib/google/protobuf/empty.pb.rb +0 -36
  174. data/lib/google/protobuf/source_context.pb.rb +0 -39
  175. data/lib/google/protobuf/struct.pb.rb +0 -65
  176. data/lib/google/protobuf/type.pb.rb +0 -128
  177. data/lib/google/protobuf/wrappers.pb.rb +0 -80
  178. data/lib/google/rpc/status.pb.rb +0 -46
  179. data/templates/default/gem/gemfile.erb +0 -4
  180. data/templates/default/lib/rest/_rest.erb +0 -9
  181. data/templates/default/service/client/method/def/_request_normal.erb +0 -4
  182. data/templates/default/service/client/method/def/_request_streaming.erb +0 -9
  183. data/templates/default/service/client/method/docs/_deprecated.erb +0 -5
  184. data/templates/default/service/client/method/docs/_snippets.erb +0 -6
  185. data/templates/default/service/client/resource/_def.erb +0 -6
  186. data/templates/default/service/rest/client/_config.erb +0 -122
  187. data/templates/default/service/rest/client/method/def/_response_normal.erb +0 -6
  188. data/templates/default/service/rest/client/method/def/_response_paged.erb +0 -7
  189. data/templates/default/service/rest/client/method/docs/_result.erb +0 -6
  190. data/templates/default/service/rest/service_stub/_service_stub.erb +0 -25
  191. data/templates/default/service/rest/service_stub/grpc_transcoding_method/_def.erb +0 -24
  192. data/templates/default/service/rest/service_stub/method/_def.erb +0 -20
  193. data/templates/default/service/rest/service_stub/method/def/_response.erb +0 -17
  194. data/templates/default/service/rest/test/method/_assert_response.erb +0 -2
  195. data/templates/default/service/rest/test/method/_normal.erb +0 -71
  196. data/templates/default/service/test/client_paths.erb +0 -15
  197. data/templates/default/snippets/snippet/_structure.erb +0 -71
  198. /data/gem_templates/{binary.erb → binary.text.erb} +0 -0
  199. /data/gem_templates/{dockerfile.erb → dockerfile.text.erb} +0 -0
  200. /data/gem_templates/{entrypoint.erb → entrypoint.text.erb} +0 -0
  201. /data/gem_templates/{gapic_sh.erb → gapic_sh.text.erb} +0 -0
  202. /data/gem_templates/{gemfile.erb → gemfile.text.erb} +0 -0
  203. /data/gem_templates/{gemspec.erb → gemspec.text.erb} +0 -0
  204. /data/gem_templates/{generator.erb → generator.text.erb} +0 -0
  205. /data/gem_templates/{gitignore.erb → gitignore.text.erb} +0 -0
  206. /data/gem_templates/{rakefile.erb → rakefile.text.erb} +0 -0
  207. /data/gem_templates/{readme.erb → readme.text.erb} +0 -0
  208. /data/gem_templates/{rubocop.erb → rubocop.text.erb} +0 -0
  209. /data/gem_templates/shared/{_header.erb → _header.text.erb} +0 -0
  210. /data/gem_templates/shared/{_license.erb → _license.text.erb} +0 -0
  211. /data/gem_templates/shared/{_warning.erb → _warning.text.erb} +0 -0
  212. /data/gem_templates/{test_generator.erb → test_generator.text.erb} +0 -0
  213. /data/gem_templates/{test_helper.erb → test_helper.text.erb} +0 -0
  214. /data/gem_templates/{version.erb → version.text.erb} +0 -0
  215. /data/templates/default/gem/{_version.erb → _version.text.erb} +0 -0
  216. /data/templates/default/gem/{changelog.erb → changelog.text.erb} +0 -0
  217. /data/templates/default/gem/{entrypoint.erb → entrypoint.text.erb} +0 -0
  218. /data/templates/default/gem/{gapic_metadata_json.erb → gapic_metadata_json.text.erb} +0 -0
  219. /data/templates/default/gem/{gitignore.erb → gitignore.text.erb} +0 -0
  220. /data/templates/default/gem/{license.erb → license.text.erb} +0 -0
  221. /data/templates/default/gem/{rakefile.erb → rakefile.text.erb} +0 -0
  222. /data/templates/default/gem/{version.erb → version.text.erb} +0 -0
  223. /data/templates/default/gem/{yardopts.erb → yardopts.text.erb} +0 -0
  224. /data/templates/default/layouts/{_ruby.erb → _ruby.text.erb} +0 -0
  225. /data/templates/default/{package.erb → package.text.erb} +0 -0
  226. /data/templates/default/proto_docs/{_proto_file.erb → _proto_file.text.erb} +0 -0
  227. /data/templates/default/proto_docs/{proto_file.erb → proto_file.text.erb} +0 -0
  228. /data/templates/default/proto_docs/{readme.erb → readme.text.erb} +0 -0
  229. /data/templates/default/service/{_helpers.erb → _helpers.text.erb} +0 -0
  230. /data/templates/default/service/client/{_credentials.erb → _credentials.text.erb} +0 -0
  231. /data/templates/default/service/client/{_nonstandard_lro.erb → _nonstandard_lro.text.erb} +0 -0
  232. /data/templates/default/service/client/{_paths.erb → _paths.text.erb} +0 -0
  233. /data/templates/default/service/client/{_requires.erb → _requires.text.erb} +0 -0
  234. /data/templates/default/service/client/{_resource.erb → _resource.text.erb} +0 -0
  235. /data/templates/default/service/client/{_self_configure.erb → _self_configure.text.erb} +0 -0
  236. /data/templates/default/service/client/{_self_configure_defaults.erb → _self_configure_defaults.text.erb} +0 -0
  237. /data/templates/default/service/client/method/def/{_request.erb → _request.text.erb} +0 -0
  238. /data/templates/default/service/client/method/def/{_rescue.erb → _rescue.text.erb} +0 -0
  239. /data/templates/default/service/client/method/def/{_routing_params.erb → _routing_params.text.erb} +0 -0
  240. /data/templates/default/service/client/method/docs/{_error.erb → _error.text.erb} +0 -0
  241. /data/templates/default/service/client/method/docs/{_request.erb → _request.text.erb} +0 -0
  242. /data/templates/default/service/client/method/docs/{_request_field.erb → _request_field.text.erb} +0 -0
  243. /data/templates/default/service/client/method/docs/{_request_streaming.erb → _request_streaming.text.erb} +0 -0
  244. /data/templates/default/service/client/method/docs/{_response.erb → _response.text.erb} +0 -0
  245. /data/templates/default/service/client/method/docs/{_sample.erb → _sample.text.erb} +0 -0
  246. /data/templates/default/service/client/method/docs/{_sample_response.erb → _sample_response.text.erb} +0 -0
  247. /data/templates/default/service/client/method/docs/{_samples.erb → _samples.text.erb} +0 -0
  248. /data/templates/default/service/client/method/docs/request_field/{_arg.erb → _arg.text.erb} +0 -0
  249. /data/templates/default/service/client/method/docs/request_field/{_hash.erb → _hash.text.erb} +0 -0
  250. /data/templates/default/service/client/method/docs/sample_response/{_comment.erb → _comment.text.erb} +0 -0
  251. /data/templates/default/service/client/method/docs/sample_response/{_define.erb → _define.text.erb} +0 -0
  252. /data/templates/default/service/client/method/docs/sample_response/{_loop.erb → _loop.text.erb} +0 -0
  253. /data/templates/default/service/client/method/docs/sample_response/{_print.erb → _print.text.erb} +0 -0
  254. /data/templates/default/service/client/method/docs/sample_response/{_write_file.erb → _write_file.text.erb} +0 -0
  255. /data/templates/default/service/client/resource/{_doc.erb → _doc.text.erb} +0 -0
  256. /data/templates/default/service/client/resource/{_multi.erb → _multi.text.erb} +0 -0
  257. /data/templates/default/service/client/resource/{_single.erb → _single.text.erb} +0 -0
  258. /data/templates/default/service/{client.erb → client.text.erb} +0 -0
  259. /data/templates/default/service/{credentials.erb → credentials.text.erb} +0 -0
  260. /data/templates/default/service/{operations.erb → operations.text.erb} +0 -0
  261. /data/templates/default/service/{paths.erb → paths.text.erb} +0 -0
  262. /data/templates/default/service/rest/client/method/def/{_rescue.erb → _rescue.text.erb} +0 -0
  263. /data/templates/default/service/rest/client/method/docs/{_error.erb → _error.text.erb} +0 -0
  264. /data/templates/default/service/rest/{client.erb → client.text.erb} +0 -0
  265. /data/templates/default/service/rest/{grpc_transcoding.erb → grpc_transcoding.text.erb} +0 -0
  266. /data/templates/default/service/rest/service_stub/grpc_transcoding_method/def/{_query_string_param.erb → _query_string_param.text.erb} +0 -0
  267. /data/templates/default/service/rest/service_stub/method/def/{_request.erb → _request.text.erb} +0 -0
  268. /data/templates/default/service/rest/{service_stub.erb → service_stub.text.erb} +0 -0
  269. /data/templates/default/service/{rest.erb → rest.text.erb} +0 -0
  270. /data/templates/default/service/test/{client_operations.erb → client_operations.text.erb} +0 -0
  271. /data/templates/default/service/test/method/{_assert_response.erb → _assert_response.text.erb} +0 -0
  272. /data/templates/default/service/test/{smoke.erb → smoke.text.erb} +0 -0
  273. /data/templates/default/{service.erb → service.text.erb} +0 -0
  274. /data/templates/default/shared/{_header.erb → _header.text.erb} +0 -0
  275. /data/templates/default/shared/{_license.erb → _license.text.erb} +0 -0
  276. /data/templates/default/shared/{_warning.erb → _warning.text.erb} +0 -0
@@ -3,13 +3,13 @@
3
3
  require "helper"
4
4
  require "gapic/rest"
5
5
  require "<%= service.proto_service_require %>"
6
- require "<%= service.service_require %>"
6
+ require "<%= service.rest.service_require %>"
7
7
 
8
8
 
9
- class <%= service.client_name_full %>Test < Minitest::Test
9
+ class <%= service.rest.client_name_full %>Test < Minitest::Test
10
10
  <%= indent render(partial: "service/rest/test/method/setup"), 2 %>
11
11
 
12
- <% service.methods.each do |method| %>
12
+ <% service.rest.methods.each do |method| %>
13
13
  <%= indent render(partial: "service/rest/test/method/#{method.kind}",
14
14
  locals: { method: method }), 2 %>
15
15
 
@@ -0,0 +1,2 @@
1
+ <%- assert_locals method -%>
2
+ assert_equal http_response, response.underlying_op
@@ -4,8 +4,9 @@ def test_configure
4
4
  credentials_token = :dummy_value
5
5
 
6
6
  client = block_config = config = nil
7
- Gapic::Rest::ClientStub.stub :new, nil do
8
- client = <%= full_client_name =%>.new do |config|
7
+ dummy_stub = ClientStub.new nil
8
+ Gapic::Rest::ClientStub.stub :new, dummy_stub do
9
+ client = <%= full_client_name %>.new do |config|
9
10
  config.credentials = credentials_token
10
11
  end
11
12
  end
@@ -0,0 +1,60 @@
1
+ <%- assert_locals method -%>
2
+ <%- full_client_name = defined?(client_name_full) ? client_name_full : method.service.rest.client_name_full -%>
3
+ <%- fields = method.fields_with_first_oneof -%>
4
+ def test_<%= method.name %>
5
+ # Create test objects.
6
+ client_result = <%= method.return_type %>.new
7
+ http_response = OpenStruct.new body: client_result.to_json
8
+
9
+ call_options = {}
10
+
11
+ # Create request parameters for a unary method.
12
+ <%- fields.each do |field| -%>
13
+ <%= field.value_name %> = <%= field.default_value %>
14
+ <%- end -%>
15
+
16
+ <%= method.name %>_client_stub = ClientStub.new http_response do |_verb, uri:, body:, params:, options:, method_name:|
17
+ assert options.metadata.key? :"x-goog-api-client"
18
+ assert options.metadata[:"x-goog-api-client"].include? "rest"
19
+ refute options.metadata[:"x-goog-api-client"].include? "grpc"
20
+ end
21
+
22
+ <%= method.service.rest.service_name_full %>::<%= method.service.rest.service_stub_name %>.stub :<%= method.rest.transcoding_helper_name %>, ["", "", {}] do
23
+ Gapic::Rest::ClientStub.stub :new, <%= method.name %>_client_stub do
24
+ # Create client
25
+ client = <%= full_client_name %>.new do |config|
26
+ config.credentials = :dummy_value
27
+ end
28
+
29
+ # Use hash object
30
+ client.<%= method.name %>({ <%= fields.map(&:as_kwarg).join ", " %> }) do |_result, response|
31
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
32
+ end
33
+
34
+ <%- if fields.any? -%>
35
+ # Use named arguments
36
+ client.<%= method.name %> <%= fields.map(&:as_kwarg).join ", " %> do |_result, response|
37
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
38
+ end
39
+
40
+ <%- end -%>
41
+ # Use protobuf object
42
+ client.<%= method.name %> <%= method.request_type %>.new(<%= fields.map(&:as_kwarg).join ", " %>) do |_result, response|
43
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
44
+ end
45
+
46
+ # Use hash object with options
47
+ client.<%= method.name %>({ <%= fields.map(&:as_kwarg).join ", " %> }, call_options) do |_result, response|
48
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
49
+ end
50
+
51
+ # Use protobuf object with options
52
+ client.<%= method.name %>(<%= method.request_type %>.new(<%= fields.map(&:as_kwarg).join ", " %>), call_options) do |_result, response|
53
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
54
+ end
55
+
56
+ # Verify method calls
57
+ assert_equal <%= fields.any? ? 5 : 4 %>, <%= method.name %>_client_stub.call_count
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,60 @@
1
+ <%- assert_locals method -%>
2
+ <%- full_client_name = defined?(client_name_full) ? client_name_full : method.service.rest.client_name_full -%>
3
+ <%- fields = method.fields_with_first_oneof -%>
4
+ def test_<%= method.name %>
5
+ # Create test objects.
6
+ client_result = <%= method.return_type %>.new
7
+ http_response = OpenStruct.new body: client_result.to_json
8
+
9
+ call_options = {}
10
+
11
+ # Create request parameters for a unary method.
12
+ <%- fields.each do |field| -%>
13
+ <%= field.value_name %> = <%= field.default_value %>
14
+ <%- end -%>
15
+
16
+ <%= method.name %>_client_stub = ClientStub.new http_response do |_verb, uri:, body:, params:, options:, is_server_streaming:, method_name:|
17
+ assert options.metadata.key? :"x-goog-api-client"
18
+ assert options.metadata[:"x-goog-api-client"].include? "rest"
19
+ refute options.metadata[:"x-goog-api-client"].include? "grpc"
20
+ end
21
+
22
+ <%= method.service.rest.service_name_full %>::<%= method.service.rest.service_stub_name %>.stub :<%= method.rest.transcoding_helper_name %>, ["", "", {}] do
23
+ Gapic::Rest::ClientStub.stub :new, <%= method.name %>_client_stub do
24
+ # Create client
25
+ client = <%= full_client_name %>.new do |config|
26
+ config.credentials = :dummy_value
27
+ end
28
+
29
+ # Use hash object
30
+ client.<%= method.name %>({ <%= fields.map(&:as_kwarg).join ", " %> }) do |_result, response|
31
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
32
+ end.first
33
+
34
+ <%- if fields.any? -%>
35
+ # Use named arguments
36
+ client.<%= method.name %> <%= fields.map(&:as_kwarg).join ", " %> do |_result, response|
37
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
38
+ end.first
39
+
40
+ <%- end -%>
41
+ # Use protobuf object
42
+ client.<%= method.name %> <%= method.request_type %>.new(<%= fields.map(&:as_kwarg).join ", " %>) do |_result, response|
43
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
44
+ end.first
45
+
46
+ # Use hash object with options
47
+ client.<%= method.name %>({ <%= fields.map(&:as_kwarg).join ", " %> }, call_options) do |_result, response|
48
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
49
+ end.first
50
+
51
+ # Use protobuf object with options
52
+ client.<%= method.name %>(<%= method.request_type %>.new(<%= fields.map(&:as_kwarg).join ", " %>), call_options) do |_result, response|
53
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
54
+ end.first
55
+
56
+ # Verify method calls
57
+ assert_equal <%= fields.any? ? 5 : 4 %>, <%= method.name %>_client_stub.call_count
58
+ end
59
+ end
60
+ end
@@ -8,24 +8,24 @@ class ClientStub
8
8
  @requests = []
9
9
  end
10
10
 
11
- def make_get_request uri:, params: {}, options: {}
12
- make_http_request :get, uri: uri, body: nil, params: params, options: options
11
+ def make_get_request uri:, params: {}, options: {}, method_name: nil
12
+ make_http_request :get, uri: uri, body: nil, params: params, options: options, method_name: method_name
13
13
  end
14
14
 
15
- def make_delete_request uri:, params: {}, options: {}
16
- make_http_request :delete, uri: uri, body: nil, params: params, options: options
15
+ def make_delete_request uri:, params: {}, options: {}, method_name: nil
16
+ make_http_request :delete, uri: uri, body: nil, params: params, options: options, method_name: method_name
17
17
  end
18
18
 
19
- def make_post_request uri:, body: nil, params: {}, options: {}
20
- make_http_request :post, uri: uri, body: body, params: params, options: options
19
+ def make_post_request uri:, body: nil, params: {}, options: {}, method_name: nil
20
+ make_http_request :post, uri: uri, body: body, params: params, options: options, method_name: method_name
21
21
  end
22
22
 
23
- def make_patch_request uri:, body:, params: {}, options: {}
24
- make_http_request :patch, uri: uri, body: body, params: params, options: options
23
+ def make_patch_request uri:, body:, params: {}, options: {}, method_name: nil
24
+ make_http_request :patch, uri: uri, body: body, params: params, options: options, method_name: method_name
25
25
  end
26
26
 
27
- def make_put_request uri:, body:, params: {}, options: {}
28
- make_http_request :put, uri: uri, body: body, params: params, options: options
27
+ def make_put_request uri:, body:, params: {}, options: {}, method_name: nil
28
+ make_http_request :put, uri: uri, body: body, params: params, options: options, method_name: method_name
29
29
  end
30
30
 
31
31
  def make_http_request *args, **kwargs
@@ -35,4 +35,20 @@ class ClientStub
35
35
 
36
36
  @response
37
37
  end
38
+
39
+ def endpoint
40
+ "endpoint.example.com"
41
+ end
42
+
43
+ def universe_domain
44
+ "example.com"
45
+ end
46
+
47
+ def stub_logger
48
+ nil
49
+ end
50
+
51
+ def logger
52
+ nil
53
+ end
38
54
  end
@@ -3,7 +3,7 @@
3
3
  <%- full_client_name = defined?(client_name_full) ? client_name_full : service.client_name_full -%>
4
4
  def test_<%= resource.path_helper%>
5
5
  grpc_channel = ::GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure
6
- ::Gapic::ServiceStub.stub :new, nil do
6
+ ::Gapic::ServiceStub.stub :new, DummyStub.new do
7
7
  client = <%= full_client_name %>.new do |config|
8
8
  config.credentials = grpc_channel
9
9
  end
@@ -15,7 +15,7 @@ class <%= service.client_name_full %>Test < Minitest::Test
15
15
  <%= indent render(partial: "service/test/method/#{method.kind}",
16
16
  locals: { method: method }), 2 %>
17
17
 
18
- <% end %>
18
+ <%- end -%>
19
19
  <%= indent render(partial: "service/test/method/configure", locals: { service: service }), 2 %>
20
20
  <%- if service.lro? -%>
21
21
 
@@ -23,7 +23,8 @@ class <%= service.client_name_full %>Test < Minitest::Test
23
23
  grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure
24
24
 
25
25
  client = nil
26
- Gapic::ServiceStub.stub :new, nil do
26
+ dummy_stub = ClientStub.new nil, nil
27
+ Gapic::ServiceStub.stub :new, dummy_stub do
27
28
  client = <%= service.client_name_full =%>.new do |config|
28
29
  config.credentials = grpc_channel
29
30
  end
@@ -0,0 +1,33 @@
1
+ <%- assert_locals service -%>
2
+ <%= render partial: "shared/header" %>
3
+ require "helper"
4
+
5
+ require "gapic/grpc/service_stub"
6
+
7
+ require "<%= service.service_require %>"
8
+
9
+ class <%= service.client_name_full %>PathsTest < Minitest::Test
10
+ class DummyStub
11
+ def endpoint
12
+ "endpoint.example.com"
13
+ end
14
+
15
+ def universe_domain
16
+ "example.com"
17
+ end
18
+
19
+ def stub_logger
20
+ nil
21
+ end
22
+
23
+ def logger
24
+ nil
25
+ end
26
+ end
27
+
28
+ <%- start_line_spacer -%>
29
+ <%- service.deduped_references.each do |resource| -%>
30
+ <%- locals = { resource: resource, service: service } -%>
31
+ <%= line_spacer %><%= indent render(partial: "service/test/resource", locals: locals), 2 %>
32
+ <%- end -%>
33
+ end
@@ -10,7 +10,7 @@ def test_<%= method.name %>
10
10
 
11
11
  # Create request parameters for a bidi streaming method.
12
12
  <%- fields.each do |field| -%>
13
- <%= field.name %> = <%= field.default_value %>
13
+ <%= field.value_name %> = <%= field.default_value %>
14
14
  <%- end -%>
15
15
 
16
16
  <%= method.name %>_client_stub = ClientStub.new [grpc_response].to_enum, grpc_operation do |name, request, options:|
@@ -10,7 +10,7 @@ def test_<%= method.name %>
10
10
 
11
11
  # Create request parameters for a client streaming method.
12
12
  <%- fields.each do |field| -%>
13
- <%= field.name %> = <%= field.default_value %>
13
+ <%= field.value_name %> = <%= field.default_value %>
14
14
  <%- end -%>
15
15
 
16
16
  <%= method.name %>_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:|
@@ -4,7 +4,8 @@ def test_configure
4
4
  grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure
5
5
 
6
6
  client = block_config = config = nil
7
- Gapic::ServiceStub.stub :new, nil do
7
+ dummy_stub = ClientStub.new nil, nil
8
+ Gapic::ServiceStub.stub :new, dummy_stub do
8
9
  client = <%= full_client_name =%>.new do |config|
9
10
  config.credentials = grpc_channel
10
11
  end
@@ -10,7 +10,7 @@ def test_<%= method.name %>
10
10
 
11
11
  # Create request parameters for a unary method.
12
12
  <%- fields.each do |field| -%>
13
- <%= field.name %> = <%= field.default_value %>
13
+ <%= field.value_name %> = <%= field.default_value %>
14
14
  <%- end -%>
15
15
 
16
16
  <%= method.name %>_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:|
@@ -10,7 +10,7 @@ def test_<%= method.name %>
10
10
 
11
11
  # Create request parameters for a server streaming method.
12
12
  <%- fields.each do |field| -%>
13
- <%= field.name %> = <%= field.default_value %>
13
+ <%= field.value_name %> = <%= field.default_value %>
14
14
  <%- end -%>
15
15
 
16
16
  <%= method.name %>_client_stub = ClientStub.new [grpc_response].to_enum, grpc_operation do |name, request, options:|
@@ -14,8 +14,25 @@ class ClientStub
14
14
 
15
15
  @requests << @block&.call(*args, **kwargs)
16
16
 
17
- yield @response, @operation if block_given?
17
+ catch :response do
18
+ yield @response, @operation if block_given?
19
+ @response
20
+ end
21
+ end
22
+
23
+ def endpoint
24
+ "endpoint.example.com"
25
+ end
26
+
27
+ def universe_domain
28
+ "example.com"
29
+ end
30
+
31
+ def stub_logger
32
+ nil
33
+ end
18
34
 
19
- @response
35
+ def logger
36
+ nil
20
37
  end
21
38
  end
@@ -10,8 +10,8 @@ else
10
10
  end
11
11
 
12
12
  group :test do
13
- gem "google-style", "~> 1.25.1"
14
- gem "minitest", "~> 5.14"
13
+ gem "google-style", "~> 1.26.1"
14
+ gem "minitest", "~> 5.16"
15
15
  gem "minitest-focus", "~> 1.1"
16
16
  gem "minitest-hooks", "~> 1.5"
17
17
  end
@@ -0,0 +1,24 @@
1
+ <%- assert_locals snippet -%>
2
+ <%- unless snippet.client_initialization.render.empty? -%>
3
+ <%= snippet.client_initialization.render %>
4
+
5
+ <%- end -%>
6
+ <%- unless snippet.request_initialization.render_precall.empty? -%>
7
+ <%= snippet.request_initialization.render_precall %>
8
+
9
+ <%- end -%>
10
+ <%= snippet.client_call.render %>
11
+ <%- unless snippet.request_initialization.render_postcall.empty? -%>
12
+
13
+ <%= snippet.request_initialization.render_postcall %>
14
+ <%- end -%>
15
+ <%- unless snippet.response_handling.render.empty? -%>
16
+
17
+ <%= snippet.response_handling.render %>
18
+ <%- end -%>
19
+ <%- unless snippet.final_statements.empty? -%>
20
+
21
+ <%- snippet.final_statements.each do |statement| -%>
22
+ <%= statement.render %>
23
+ <%- end -%>
24
+ <%- end -%>
@@ -0,0 +1,11 @@
1
+ <%- assert_locals snippet -%>
2
+ require "<%= snippet.require_path %>"
3
+ <%- snippet.snippet_method_parameters.each do |param| -%>
4
+
5
+ <%- if param.description -%>
6
+ <%= indent wrap(param.description, 78), "# " %>
7
+ <%- end -%>
8
+ # <%= param.name %> = <%= param.example.exist? ? param.example.render : "..." %>
9
+ <%- end -%>
10
+
11
+ <%= render partial: "snippets/snippet/body", locals: { snippet: snippet} -%>
@@ -0,0 +1,25 @@
1
+ <%- assert_locals snippet -%>
2
+ require "<%= snippet.require_path %>"
3
+
4
+ ##
5
+ # <%= snippet.snippet_name %>
6
+ #
7
+ <%= indent wrap(snippet.disclaimer, 78), "# " %>
8
+ #
9
+ <%= indent wrap(snippet.description, 78), "# " %>
10
+ <%- unless snippet.snippet_method_parameters.empty? -%>
11
+ #
12
+ <%- end -%>
13
+ <%- snippet.snippet_method_parameters.each do |param| -%>
14
+ # @param <%= param.name %> [<%= param.type.render %>]
15
+ <%- if param.description -%>
16
+ <%= indent wrap(param.description, 74), "# " %>
17
+ <%- end -%>
18
+ <%- if param.example.exist? -%>
19
+ # (Example: `<%= param.example.render %>`)
20
+ <%- end -%>
21
+ <%- end -%>
22
+ #
23
+ def <%= snippet.snippet_method_name %><%= snippet.snippet_method_parameters_render %>
24
+ <%= indent render(partial: "snippets/snippet/body", locals: { snippet: snippet }), " " %>
25
+ end
@@ -2,5 +2,5 @@
2
2
  <%= render partial: "shared/header" -%>
3
3
 
4
4
  # [START <%= snippet.region_tag %>]
5
- <%= render partial: "snippets/snippet/structure", locals: { snippet: snippet} -%>
5
+ <%= render partial: "snippets/snippet/standalone", locals: { snippet: snippet} -%>
6
6
  # [END <%= snippet.region_tag %>]