gooddata 1.1.0-java → 1.2.0-java

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 (285) hide show
  1. checksums.yaml +4 -4
  2. data/.document +0 -0
  3. data/.flayignore +2 -0
  4. data/.travis.yml +24 -7
  5. data/.yardopts +0 -0
  6. data/CHANGELOG.md +144 -0
  7. data/CLI.md +0 -0
  8. data/Dockerfile.jruby +7 -2
  9. data/Dockerfile.ruby +1 -1
  10. data/Gemfile +0 -0
  11. data/Guardfile +0 -0
  12. data/Rakefile +23 -9
  13. data/TODO.md +0 -0
  14. data/bin/gitflow-init.sh +8 -0
  15. data/ci.rake +3 -3
  16. data/data/2008.crt +39 -0
  17. data/data/new_ca.cer +22 -0
  18. data/dependency_decisions.yml +0 -0
  19. data/docker-compose.lcm.yml +31 -0
  20. data/docker-compose.yml +4 -2
  21. data/gooddata.gemspec +3 -3
  22. data/lcm.rake +288 -0
  23. data/lib/gooddata.rb +1 -0
  24. data/lib/gooddata/bricks/base_downloader.rb +1 -1
  25. data/lib/gooddata/bricks/brick.rb +0 -1
  26. data/lib/gooddata/bricks/middleware/aws_middleware.rb +1 -1
  27. data/lib/gooddata/bricks/middleware/logger_middleware.rb +1 -1
  28. data/lib/gooddata/bricks/pipeline.rb +67 -0
  29. data/lib/gooddata/bricks/provisioning_brick.rb +18 -0
  30. data/lib/gooddata/bricks/release_brick.rb +18 -0
  31. data/lib/gooddata/bricks/rollout_brick.rb +14 -0
  32. data/lib/gooddata/bricks/user_filters_brick.rb +13 -0
  33. data/lib/gooddata/bricks/users_brick.rb +13 -0
  34. data/lib/gooddata/core/logging.rb +1 -1
  35. data/lib/gooddata/exceptions/maql_execution.rb +1 -1
  36. data/lib/gooddata/extensions/string.rb +0 -0
  37. data/lib/gooddata/lcm/actions/associate_clients.rb +34 -8
  38. data/lib/gooddata/lcm/actions/collect_data_product.rb +8 -1
  39. data/lib/gooddata/lcm/actions/collect_segment_clients.rb +13 -23
  40. data/lib/gooddata/lcm/actions/collect_segments.rb +10 -0
  41. data/lib/gooddata/lcm/actions/synchronize_clients.rb +3 -1
  42. data/lib/gooddata/lcm/actions/synchronize_ldm.rb +61 -34
  43. data/lib/gooddata/lcm/actions/synchronize_user_filters.rb +6 -4
  44. data/lib/gooddata/lcm/actions/update_release_table.rb +4 -12
  45. data/lib/gooddata/lcm/dsl/params_dsl.rb +0 -4
  46. data/lib/gooddata/lcm/dsl/type_dsl.rb +0 -4
  47. data/lib/gooddata/lcm/helpers/check_helper.rb +1 -1
  48. data/lib/gooddata/lcm/lcm2.rb +0 -2
  49. data/lib/gooddata/lcm/types/special/enum.rb +6 -0
  50. data/lib/gooddata/lcm/types/special/enum/synchronize_ldm.rb +20 -0
  51. data/lib/gooddata/lcm/types/special/types.rb +1 -1
  52. data/lib/gooddata/mixins/is_folder.rb +0 -0
  53. data/lib/gooddata/mixins/to_json.rb +0 -0
  54. data/lib/gooddata/mixins/uri_getter.rb +0 -0
  55. data/lib/gooddata/models/project_creator.rb +38 -30
  56. data/lib/gooddata/models/user_filters/user_filter_builder.rb +1 -0
  57. data/lib/gooddata/rest/README.md +0 -0
  58. data/lib/gooddata/version.rb +1 -1
  59. data/lib/templates/bricks/brick.rb.erb +0 -0
  60. data/lib/templates/bricks/main.rb.erb +0 -0
  61. data/lib/templates/project/Goodfile.erb +0 -0
  62. data/lib/templates/project/data/commits.csv +0 -0
  63. data/lib/templates/project/data/devs.csv +0 -0
  64. data/lib/templates/project/data/repos.csv +0 -0
  65. data/lib/templates/project/model/model.rb.erb +0 -0
  66. metadata +23 -452
  67. data/lib/gooddata/lcm/actions/ensure_data_product.rb +0 -63
  68. data/spec/.rubocop.yml +0 -16
  69. data/spec/bricks/bricks_spec.rb +0 -110
  70. data/spec/bricks/default-config.json +0 -8
  71. data/spec/data/.gooddata +0 -4
  72. data/spec/data/blueprints/additional_dataset_module.json +0 -32
  73. data/spec/data/blueprints/attribute_sort_order_blueprint.json +0 -72
  74. data/spec/data/blueprints/big_blueprint_not_pruned.json +0 -2079
  75. data/spec/data/blueprints/invalid_blueprint.json +0 -103
  76. data/spec/data/blueprints/m_n_model.json +0 -104
  77. data/spec/data/blueprints/model_module.json +0 -25
  78. data/spec/data/blueprints/test_blueprint.json +0 -39
  79. data/spec/data/blueprints/test_project_model_spec.json +0 -106
  80. data/spec/data/cc/data/source/commits.csv +0 -4
  81. data/spec/data/cc/data/source/devs.csv +0 -4
  82. data/spec/data/cc/data/source/repos.csv +0 -3
  83. data/spec/data/cc/devel.prm +0 -0
  84. data/spec/data/cc/graph/graph.grf +0 -11
  85. data/spec/data/cc/workspace.prm +0 -19
  86. data/spec/data/column_based_permissions.csv +0 -7
  87. data/spec/data/column_based_permissions2.csv +0 -6
  88. data/spec/data/dynamic_schedule_params_table.csv +0 -7
  89. data/spec/data/gd_gse_data_blueprint.json +0 -1371
  90. data/spec/data/gd_gse_data_manifest.json +0 -1424
  91. data/spec/data/gd_gse_data_model.json +0 -1772
  92. data/spec/data/gooddata_version_process/gooddata_version.rb +0 -9
  93. data/spec/data/gooddata_version_process/gooddata_version.zip +0 -0
  94. data/spec/data/hello_world_process/hello_world.rb +0 -9
  95. data/spec/data/hello_world_process/hello_world.zip +0 -0
  96. data/spec/data/integration_model.json +0 -252
  97. data/spec/data/integration_policies.csv +0 -9134
  98. data/spec/data/line_based_permissions.csv +0 -3
  99. data/spec/data/manifests/test_blueprint.json +0 -32
  100. data/spec/data/manifests/test_project.json +0 -107
  101. data/spec/data/reports/left_attr_report.json +0 -108
  102. data/spec/data/reports/metric_only_one_line.json +0 -83
  103. data/spec/data/reports/report_1.json +0 -197
  104. data/spec/data/reports/top_attr_report.json +0 -108
  105. data/spec/data/ruby_params_process/ruby_params.rb +0 -9
  106. data/spec/data/ruby_process/deep_files/deep_stuff.txt +0 -1
  107. data/spec/data/ruby_process/process.rb +0 -8
  108. data/spec/data/ruby_process/stuff.txt +0 -1
  109. data/spec/data/superfluous_titles_view.json +0 -81
  110. data/spec/data/test-ci-data.csv +0 -2
  111. data/spec/data/user_filters.csv +0 -2
  112. data/spec/data/users.csv +0 -12
  113. data/spec/data/wire_models/attribute_sort_by_model.json +0 -73
  114. data/spec/data/wire_models/model_view.json +0 -1775
  115. data/spec/data/wire_models/nu_model.json +0 -3046
  116. data/spec/data/wire_models/test_blueprint.json +0 -66
  117. data/spec/data/wire_test_project.json +0 -150
  118. data/spec/data/workspace_table.csv +0 -3
  119. data/spec/environment/default.rb +0 -43
  120. data/spec/environment/development.rb +0 -32
  121. data/spec/environment/environment.rb +0 -38
  122. data/spec/environment/production.rb +0 -27
  123. data/spec/environment/staging.rb +0 -32
  124. data/spec/environment/testing.rb +0 -32
  125. data/spec/helpers/appstore_project_helper.rb +0 -221
  126. data/spec/helpers/blueprint_helper.rb +0 -27
  127. data/spec/helpers/cli_helper.rb +0 -38
  128. data/spec/helpers/connection_helper.rb +0 -43
  129. data/spec/helpers/constants.rb +0 -32
  130. data/spec/helpers/crypto_helper.rb +0 -19
  131. data/spec/helpers/csv_helper.rb +0 -20
  132. data/spec/helpers/process_helper.rb +0 -35
  133. data/spec/helpers/project_helper.rb +0 -74
  134. data/spec/helpers/schedule_helper.rb +0 -33
  135. data/spec/helpers/spec_helper.rb +0 -17
  136. data/spec/integration/ads_output_stage_spec.rb +0 -45
  137. data/spec/integration/blueprint_updates_spec.rb +0 -107
  138. data/spec/integration/blueprint_with_ca_spec.rb +0 -56
  139. data/spec/integration/blueprint_with_grain_spec.rb +0 -74
  140. data/spec/integration/channel_configuration_spec.rb +0 -67
  141. data/spec/integration/clients_spec.rb +0 -164
  142. data/spec/integration/command_datawarehouse_spec.rb +0 -45
  143. data/spec/integration/command_projects_spec.rb +0 -32
  144. data/spec/integration/commands/command_projects_spec.rb +0 -22
  145. data/spec/integration/connection_spec.rb +0 -37
  146. data/spec/integration/core/connection_spec.rb +0 -56
  147. data/spec/integration/core/logging_spec.rb +0 -132
  148. data/spec/integration/core/project_spec.rb +0 -54
  149. data/spec/integration/create_from_template_spec.rb +0 -29
  150. data/spec/integration/create_project_spec.rb +0 -27
  151. data/spec/integration/date_dim_switch_spec.rb +0 -154
  152. data/spec/integration/deprecated_load_spec.rb +0 -60
  153. data/spec/integration/full_process_schedule_spec.rb +0 -367
  154. data/spec/integration/full_project_spec.rb +0 -592
  155. data/spec/integration/helpers_spec.rb +0 -16
  156. data/spec/integration/lcm_spec.rb +0 -54
  157. data/spec/integration/mandatory_user_filter_spec.rb +0 -53
  158. data/spec/integration/mixins/id_to_uri_spec.rb +0 -56
  159. data/spec/integration/models/data_product_spec.rb +0 -71
  160. data/spec/integration/models/domain_spec.rb +0 -162
  161. data/spec/integration/models/invitation_spec.rb +0 -17
  162. data/spec/integration/models/label_spec.rb +0 -49
  163. data/spec/integration/models/membership_spec.rb +0 -127
  164. data/spec/integration/models/metadata/report_spec.rb +0 -54
  165. data/spec/integration/models/metric_spec.rb +0 -24
  166. data/spec/integration/models/params_spec.rb +0 -118
  167. data/spec/integration/models/process_spec.rb +0 -35
  168. data/spec/integration/models/profile_spec.rb +0 -210
  169. data/spec/integration/models/project_role_spec.rb +0 -94
  170. data/spec/integration/models/project_spec.rb +0 -225
  171. data/spec/integration/models/schedule_spec.rb +0 -477
  172. data/spec/integration/models/unit_project_spec.rb +0 -130
  173. data/spec/integration/over_to_user_filters_spec.rb +0 -98
  174. data/spec/integration/partial_md_export_import_spec.rb +0 -41
  175. data/spec/integration/project_spec.rb +0 -381
  176. data/spec/integration/rest_spec.rb +0 -214
  177. data/spec/integration/schedule_spec.rb +0 -611
  178. data/spec/integration/segments_spec.rb +0 -100
  179. data/spec/integration/subscription_spec.rb +0 -88
  180. data/spec/integration/urn_date_dim_spec.rb +0 -53
  181. data/spec/integration/user_filters_spec.rb +0 -310
  182. data/spec/integration/user_group_spec.rb +0 -147
  183. data/spec/integration/variables_spec.rb +0 -189
  184. data/spec/integration/vcr_cassettes/GoodData_-_logging/_logger/can_assign_a_custom_logger.yml +0 -2287
  185. data/spec/integration/vcr_cassettes/GoodData_-_logging/_logger/client_logs_when_given_custom_message.yml +0 -2287
  186. data/spec/integration/vcr_cassettes/GoodData_-_logging/_logger/has_the_request_id_logged_when_I_passed_it.yml +0 -2287
  187. data/spec/integration/vcr_cassettes/GoodData_-_logging/_logging_off/Disables_logging.yml +0 -2287
  188. data/spec/integration/vcr_cassettes/GoodData_-_logging/_logging_on/Enables_logging.yml +0 -2287
  189. data/spec/integration/vcr_cassettes/GoodData_-_project/_project/Returns_project_assigned.yml +0 -354
  190. data/spec/integration/vcr_cassettes/GoodData_-_project/_project_/Assigns_nil.yml +0 -299
  191. data/spec/integration/vcr_cassettes/GoodData_-_project/_project_/Assigns_project_directly.yml +0 -354
  192. data/spec/integration/vcr_cassettes/GoodData_-_project/_project_/Assigns_project_using_project_ID.yml +0 -354
  193. data/spec/integration/vcr_cassettes/GoodData_-_project/_project_/Assigns_project_using_project_URL.yml +0 -354
  194. data/spec/integration/vcr_cassettes/GoodData_-_project/_with_project/Uses_project_specified.yml +0 -354
  195. data/spec/integration/vcr_cassettes/GoodData_Metric/all.yml +0 -2065
  196. data/spec/integration/vcr_cassettes/GoodData_Metric/should_be_able_to_update_folders.yml +0 -119
  197. data/spec/integration/vcr_cassettes/GoodData_Mixin_MdIdToUri/all.yml +0 -9812
  198. data/spec/integration/vcr_cassettes/GoodData_Mixin_MdIdToUri/should_get_json_containing_correct_id.yml +0 -174
  199. data/spec/integration/vcr_cassettes/GoodData_Mixin_MdIdToUri/should_return_nil_for_unknown_id.yml +0 -58
  200. data/spec/integration/vcr_cassettes/GoodData_Mixin_MdIdToUri/should_throw_BadRequest_for_-1.yml +0 -63
  201. data/spec/integration/vcr_cassettes/GoodData_Rest_Connection/_connect/Connects_using_username_and_password.yml +0 -299
  202. data/spec/integration/vcr_cassettes/GoodData_Rest_Connection/_disconnect/Connects_using_username_and_password.yml +0 -299
  203. data/spec/integration/vcr_cassettes/GoodData_Rest_Connection/_generate_request_id/Generates_a_non-empty_string.yml +0 -2287
  204. data/spec/integration/vcr_cassettes/GoodData_UserGroup/_/Should_list_user_groups_as_Array.yml +0 -56
  205. data/spec/integration/vcr_cassettes/GoodData_UserGroup/_add_members/Should_add_member.yml +0 -315
  206. data/spec/integration/vcr_cassettes/GoodData_UserGroup/_members/Should_return_members_as_array.yml +0 -54
  207. data/spec/integration/vcr_cassettes/GoodData_UserGroup/_remove_members/Should_remove_existing_members.yml +0 -258
  208. data/spec/integration/vcr_cassettes/GoodData_UserGroup/_save/updates_existing_group.yml +0 -159
  209. data/spec/integration/vcr_cassettes/GoodData_UserGroup/_set_members/Should_set_new_members.yml +0 -158
  210. data/spec/integration/vcr_cassettes/GoodData_UserGroup/all.yml +0 -809
  211. data/spec/logging_in_logging_out_spec.rb +0 -91
  212. data/spec/spec_helper.rb +0 -110
  213. data/spec/unit/actions/associate_clients_spec.rb +0 -48
  214. data/spec/unit/actions/collect_client_projects_spec.rb +0 -47
  215. data/spec/unit/actions/collect_clients_spec.rb +0 -65
  216. data/spec/unit/actions/collect_data_product_spec.rb +0 -58
  217. data/spec/unit/actions/collect_dynamic_schedule_params_spec.rb +0 -56
  218. data/spec/unit/actions/collect_meta_spec.rb +0 -88
  219. data/spec/unit/actions/collect_segment_clients_spec.rb +0 -82
  220. data/spec/unit/actions/collect_tagged_objects_spec.rb +0 -126
  221. data/spec/unit/actions/collect_users_brick_users_spec.rb +0 -36
  222. data/spec/unit/actions/create_segment_masters_spec.rb +0 -65
  223. data/spec/unit/actions/ensure_data_product_spec.rb +0 -39
  224. data/spec/unit/actions/ensure_technical_users_domain_spec.rb +0 -53
  225. data/spec/unit/actions/ensure_technical_users_project_spec.rb +0 -76
  226. data/spec/unit/actions/execute_schedules_spec.rb +0 -94
  227. data/spec/unit/actions/provision_clients_spec.rb +0 -46
  228. data/spec/unit/actions/purge_clients_spec.rb +0 -47
  229. data/spec/unit/actions/rename_existing_client_projects_spec.rb +0 -54
  230. data/spec/unit/actions/segments_filter_spec.rb +0 -46
  231. data/spec/unit/actions/shared_examples_for_user_actions.rb +0 -43
  232. data/spec/unit/actions/synchronize_cas_spec.rb +0 -58
  233. data/spec/unit/actions/synchronize_clients_spec.rb +0 -71
  234. data/spec/unit/actions/synchronize_etls_in_segment_spec.rb +0 -206
  235. data/spec/unit/actions/synchronize_ldm_spec.rb +0 -70
  236. data/spec/unit/actions/synchronize_user_filters_spec.rb +0 -208
  237. data/spec/unit/actions/synchronize_user_groups_spec.rb +0 -49
  238. data/spec/unit/actions/synchronize_users_spec.rb +0 -180
  239. data/spec/unit/bricks/bricks_spec.rb +0 -34
  240. data/spec/unit/bricks/middleware/aws_middelware_spec.rb +0 -98
  241. data/spec/unit/bricks/middleware/bench_middleware_spec.rb +0 -15
  242. data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +0 -15
  243. data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +0 -15
  244. data/spec/unit/bricks/middleware/logger_middleware_spec.rb +0 -30
  245. data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +0 -15
  246. data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +0 -15
  247. data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +0 -15
  248. data/spec/unit/cli/cli_spec.rb +0 -17
  249. data/spec/unit/cli/commands/cmd_auth_spec.rb +0 -17
  250. data/spec/unit/core/nil_logger_spec.rb +0 -13
  251. data/spec/unit/extensions/hash_spec.rb +0 -22
  252. data/spec/unit/godzilla/goodzilla_spec.rb +0 -74
  253. data/spec/unit/helpers/check_helper_production_spec.rb +0 -34
  254. data/spec/unit/helpers/check_helper_spec.rb +0 -134
  255. data/spec/unit/helpers/csv_helper_spec.rb +0 -22
  256. data/spec/unit/helpers/data_helper_spec.rb +0 -67
  257. data/spec/unit/helpers/global_helpers_spec.rb +0 -264
  258. data/spec/unit/helpers_spec.rb +0 -254
  259. data/spec/unit/lcm/lcm2_spec.rb +0 -100
  260. data/spec/unit/lcm/user_bricks_helper_spec.rb +0 -58
  261. data/spec/unit/models/blueprint/attribute_sort_by_spec.rb +0 -20
  262. data/spec/unit/models/blueprint/attributes_spec.rb +0 -28
  263. data/spec/unit/models/blueprint/dataset_spec.rb +0 -120
  264. data/spec/unit/models/blueprint/label_blueprint_field_spec.rb +0 -43
  265. data/spec/unit/models/blueprint/project_blueprint_spec.rb +0 -642
  266. data/spec/unit/models/blueprint/reference_spec.rb +0 -28
  267. data/spec/unit/models/blueprint/schema_builder_spec.rb +0 -36
  268. data/spec/unit/models/blueprint/to_wire_spec.rb +0 -196
  269. data/spec/unit/models/dataset_blueprint.rb +0 -14
  270. data/spec/unit/models/execution_spec.rb +0 -109
  271. data/spec/unit/models/from_wire_spec.rb +0 -321
  272. data/spec/unit/models/metadata_spec.rb +0 -140
  273. data/spec/unit/models/metric_spec.rb +0 -129
  274. data/spec/unit/models/model_spec.rb +0 -87
  275. data/spec/unit/models/project_creator_spec.rb +0 -90
  276. data/spec/unit/models/project_spec.rb +0 -94
  277. data/spec/unit/models/report_result_data_spec.rb +0 -194
  278. data/spec/unit/models/to_manifest_spec.rb +0 -165
  279. data/spec/unit/models/user_filters/user_filter_builder_spec.rb +0 -149
  280. data/spec/unit/models/user_filters_spec.rb +0 -95
  281. data/spec/unit/models/variable_spec.rb +0 -280
  282. data/spec/unit/rest/phmap_spec.rb +0 -117
  283. data/spec/unit/rest/polling_spec.rb +0 -101
  284. data/spec/unit/rest/resource_spec.rb +0 -10
  285. data/spec/vcr_configurer.rb +0 -63
@@ -1,117 +0,0 @@
1
- # encoding: UTF-8
2
- #
3
- # Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
4
- # This source code is licensed under the BSD-style license found in the
5
- # LICENSE file in the root directory of this source tree.
6
-
7
- require 'gooddata/rest/phmap'
8
-
9
- PlaceholderExample = Struct.new(:name, :title, :mapped)
10
-
11
- describe GoodData::Rest::Connection do
12
- [
13
- PlaceholderExample.new('execute', '/gdc/projects/uif55z7zg9zunnsffsqu6nzyg38j20qg/execute', '/gdc/projects/{id}/execute'),
14
-
15
- PlaceholderExample.new('outputStage', '/gdc/dataload/projects/uif55z7zg9zunnsffsqu6nzyg38j20qg/outputStage', '/gdc/dataload/projects/{id}/outputStage'),
16
-
17
- PlaceholderExample.new('datawarehouse instance', '/gdc/datawarehouse/instances/c90ef89f07978760523dd409165c71f3', '/gdc/datawarehouse/instances/{id}'),
18
- PlaceholderExample.new('datawarehouse execution', '/gdc/datawarehouse/executions/exec123', '/gdc/datawarehouse/executions/{id}'),
19
-
20
- PlaceholderExample.new('dataproduct client segment', '/gdc/domains/stg2-lcm-prod/dataproducts/MY-DP/clients?segment=MY-SEG4',
21
- '/gdc/domains/{id}/dataproducts/{data_product}/clients?segment={segment}'),
22
- PlaceholderExample.new('dataproduct client', '/gdc/domains/MY_DOMAIN3/dataproducts/4_7-prod/clients/some-client1',
23
- '/gdc/domains/{id}/dataproducts/{data_product}/clients/{client}'),
24
- PlaceholderExample.new('dataproduct clients', '/gdc/domains/D_-3/dataproducts/DP_1-/clients', '/gdc/domains/{id}/dataproducts/{data_product}/clients'),
25
-
26
- PlaceholderExample.new('synchronizeClients result details', '/gdc/domains/d2/dataproducts/dp-6/segments/seg_1/synchronizeClients/results/_-res8/details?offset=0&limit=1000',
27
- '/gdc/domains/{id}/dataproducts/{data_product}/segments/{segment}/synchronizeClients/results/{result}/details?offset={offset}&limit={limit}'),
28
- PlaceholderExample.new('synchronizeClients result', '/gdc/domains/D/dataproducts/DP/segments/SEG/synchronizeClients/results/RES',
29
- '/gdc/domains/{id}/dataproducts/{data_product}/segments/{segment}/synchronizeClients/results/{result}'),
30
- PlaceholderExample.new('dataproduct segment', '/gdc/domains/D/dataproducts/DP/segments/SEG', '/gdc/domains/{id}/dataproducts/{data_product}/segments/{segment}'),
31
- PlaceholderExample.new('dataproduct segments', '/gdc/domains/D/dataproducts/DP/segments', '/gdc/domains/{id}/dataproducts/{data_product}/segments'),
32
-
33
- PlaceholderExample.new('provisionClientProjects result details', '/gdc/domains/D/dataproducts/DP/provisionClientProjects/results/RES/details?offset=7&limit=50',
34
- '/gdc/domains/{id}/dataproducts/{data_product}/provisionClientProjects/results/{result}/details?offset={offset}&limit={limit}'),
35
- PlaceholderExample.new('provisionClientProjects result', '/gdc/domains/D/dataproducts/DP/provisionClientProjects/results/RES',
36
- '/gdc/domains/{id}/dataproducts/{data_product}/provisionClientProjects/results/{result}'),
37
- PlaceholderExample.new('provisionClientProjects', '/gdc/domains/D/dataproducts/DP/provisionClientProjects',
38
- '/gdc/domains/{id}/dataproducts/{data_product}/provisionClientProjects'),
39
- PlaceholderExample.new('updateClients delet extra', '/gdc/domains/D/dataproducts/DP/updateClients?deleteExtraInSegments=SEG',
40
- '/gdc/domains/{id}/dataproducts/{data_product}/updateClients?deleteExtraInSegments={segments}'),
41
- PlaceholderExample.new('updateClients', '/gdc/domains/D/dataproducts/DP/updateClients', '/gdc/domains/{id}/dataproducts/{data_product}/updateClients'),
42
-
43
- PlaceholderExample.new('domain dataproducts', '/gdc/domains/D/dataproducts/DP', '/gdc/domains/{id}/dataproducts/{data_product}'),
44
- PlaceholderExample.new('domain dataproducts', '/gdc/domains/D/dataproducts', '/gdc/domains/{id}/dataproducts'),
45
-
46
- PlaceholderExample.new('segment synchronizeClients result details', '/gdc/domains/D/segments/SEG/synchronizeClients/results/RES/details?offset=0&limit=100',
47
- '/gdc/domains/{id}/segments/{segment}/synchronizeClients/results/{result}/details?offset={offset}&limit={limit}'),
48
- PlaceholderExample.new('segment synchronizeClients result', '/gdc/domains/D/segments/SEG/synchronizeClients/results/RES',
49
- '/gdc/domains/{id}/segments/{segment}/synchronizeClients/results/{result}'),
50
- PlaceholderExample.new('domain segment', '/gdc/domains/D/segments/SEG/', '/gdc/domains/{id}/segments/{segment}/'),
51
- PlaceholderExample.new('domain segment', '/gdc/domains/D/segments/SEG', '/gdc/domains/{id}/segments/{segment}'),
52
-
53
- PlaceholderExample.new('domain client segment', '/gdc/domains/D/clients?segment=SEG', '/gdc/domains/{id}/clients?segment={segment}'),
54
- PlaceholderExample.new('client settings title', '/gdc/domains/D/clients/C/settings/lcm.title', '/gdc/domains/{id}/clients/{client_id}/settings/lcm.title'),
55
- PlaceholderExample.new('client settings token', '/gdc/domains/D/clients/C/settings/lcm.token', '/gdc/domains/{id}/clients/{client_id}/settings/lcm.token'),
56
- PlaceholderExample.new('domain client', '/gdc/domains/D/clients/C', '/gdc/domains/{id}/clients/{client_id}'),
57
- PlaceholderExample.new('domain provisionClientProjects result details', '/gdc/domains/D/provisionClientProjects/results/R/details?offset=0&limit=100',
58
- '/gdc/domains/{id}/provisionClientProjects/results/{result}/details?offset={offset}&limit={limit}'),
59
- PlaceholderExample.new('domain provisionClientProjects result', '/gdc/domains/D/provisionClientProjects/results/R',
60
- '/gdc/domains/{id}/provisionClientProjects/results/{result}'),
61
- PlaceholderExample.new('domain provisionClientProjects', '/gdc/domains/D/provisionClientProjects', '/gdc/domains/{id}/provisionClientProjects'),
62
- PlaceholderExample.new('domain updateClients', '/gdc/domains/D/updateClients', '/gdc/domains/{id}/updateClients'),
63
- PlaceholderExample.new('domain', '/gdc/domains/D/', '/gdc/domains/{id}/'),
64
-
65
- PlaceholderExample.new('exporter result', '/gdc/exporter/result/a23f/c56', '/gdc/exporter/result/{id}/{id}'),
66
-
67
- PlaceholderExample.new('syncProcesses task', '/gdc/internal/lcm/domains/D/dataproducts/DP/segments/SEG/syncProcesses/P',
68
- '/gdc/internal/lcm/domains/{id}/dataproducts/{data_product}/segments/{segment}/syncProcesses/{process}'),
69
- PlaceholderExample.new('syncProcesses', '/gdc/internal/lcm/domains/D/dataproducts/DP/segments/SEG/syncProcesses',
70
- '/gdc/internal/lcm/domains/{id}/dataproducts/{data_product}/segments/{segment}/syncProcesses'),
71
-
72
- PlaceholderExample.new('setPermissions', '/gdc/internal/projects/PID/objects/setPermissions', '/gdc/internal/projects/{id}/objects/setPermissions'),
73
-
74
- PlaceholderExample.new('md variable', '/gdc/md/PID/variables/item/54', '/gdc/md/{id}/variables/item/{id}'),
75
- PlaceholderExample.new('md validate task', '/gdc/md/PID/validate/task/some-task56', '/gdc/md/{id}/validate/task/{id}'),
76
- PlaceholderExample.new('md using', '/gdc/md/PID/using2/456/980', '/gdc/md/{id}/using2/{id}/{id}'),
77
- PlaceholderExample.new('md using', '/gdc/md/PID/using2/456', '/gdc/md/{id}/using2/{id}'),
78
- PlaceholderExample.new('md userfilters user', '/gdc/md/PID/userfilters?users=/gdc/account/profile/rubydev+admin@goo', '/gdc/md/{id}/userfilters?users={users}'),
79
- PlaceholderExample.new('md userfilters', '/gdc/md/PID/userfilters?count=1&offset=5', '/gdc/md/{id}/userfilters?count={count}&offset={offset}'),
80
- PlaceholderExample.new('md usedby', '/gdc/md/PID/usedby2/4/5', '/gdc/md/{id}/usedby2/{id}/{id}'),
81
- PlaceholderExample.new('md usedby', '/gdc/md/PID/usedby2/4', '/gdc/md/{id}/usedby2/{id}'),
82
- PlaceholderExample.new('md task status', '/gdc/md/PID/tasks/567/status', '/gdc/md/{id}/tasks/{id}/status'),
83
- PlaceholderExample.new('md validElements', '/gdc/md/PID/obj/876/validElements', '/gdc/md/{id}/obj/{id}/validElements'),
84
- PlaceholderExample.new('md elements', '/gdc/md/PID/obj/876/elements', '/gdc/md/{id}/obj/{id}/elements'),
85
- PlaceholderExample.new('md obj', '/gdc/md/PID/obj/876', '/gdc/md/{id}/obj/{id}'),
86
- PlaceholderExample.new('md etltaks', '/gdc/md/PID/etltask/567', '/gdc/md/{id}/etltask/{id}'),
87
- PlaceholderExample.new('md dataResult', '/gdc/md/PID/dataResult/666', '/gdc/md/{id}/dataResult/{id}'),
88
- PlaceholderExample.new('md', '/gdc/md/PID', '/gdc/md/{id}'),
89
-
90
- PlaceholderExample.new('project user roles', '/gdc/projects/PID/users/UID/roles', '/gdc/projects/{id}/users/{id}/roles'),
91
- PlaceholderExample.new('project user permissions', '/gdc/projects/PID/users/UID/permissions', '/gdc/projects/{id}/users/{id}/permissions'),
92
- PlaceholderExample.new('project users', '/gdc/projects/PID/users', '/gdc/projects/{id}/users'),
93
- PlaceholderExample.new('schedule execution', '/gdc/projects/PID/schedules/SCHED/executions/EX', '/gdc/projects/{id}/schedules/{id}/executions/{id}'),
94
- PlaceholderExample.new('schedule', '/gdc/projects/PID/schedules/SCHED', '/gdc/projects/{id}/schedules/{id}'),
95
- PlaceholderExample.new('project role', '/gdc/projects/PID/roles/555', '/gdc/projects/{id}/roles/{id}'),
96
- PlaceholderExample.new('model view view', '/gdc/projects/PID/model/view/VIEW', '/gdc/projects/{id}/model/view/{id}'),
97
- PlaceholderExample.new('model view', '/gdc/projects/PID/model/view', '/gdc/projects/{id}/model/view'),
98
- PlaceholderExample.new('model diff diff', '/gdc/projects/PID/model/diff/DIFF', '/gdc/projects/{id}/model/diff/{id}'),
99
- PlaceholderExample.new('model diff', '/gdc/projects/PID/model/diff', '/gdc/projects/{id}/model/diff'),
100
- PlaceholderExample.new('dataload metadata', '/gdc/projects/PID/dataload/metadata/PID', '/gdc/projects/{id}/dataload/metadata/{project}'),
101
- PlaceholderExample.new('dataload execution', '/gdc/projects/PID/dataload/processes/PRID/executions/EX', '/gdc/projects/{id}/dataload/processes/{id}/executions/{id}'),
102
- PlaceholderExample.new('dataload process', '/gdc/projects/PID/dataload/processes/PRID', '/gdc/projects/{id}/dataload/processes/{id}'),
103
- PlaceholderExample.new('project', '/gdc/projects/PID/', '/gdc/projects/{id}/'),
104
- PlaceholderExample.new('project', '/gdc/projects/PID', '/gdc/projects/{id}'),
105
-
106
- PlaceholderExample.new('userGroup', '/gdc/userGroups/GID', '/gdc/userGroups/{id}'),
107
-
108
- PlaceholderExample.new('profile', '/gdc/account/profile/UID', '/gdc/account/profile/{id}'),
109
- PlaceholderExample.new('login', '/gdc/account/login/UID', '/gdc/account/login/{id}'),
110
- PlaceholderExample.new('domain user', '/gdc/account/domains/D/users?login=rubydev+admin@gooddata.com', '/gdc/account/domains/{id}/users?login={login}'),
111
- PlaceholderExample.new('account domain', '/gdc/account/domains/D', '/gdc/account/domains/{id}')
112
- ].each do |example|
113
- it "should map placeholders in #{example.name} API" do
114
- expect(GoodData::Rest::Connection.map_placeholders(example.title)).to eq(example.mapped)
115
- end
116
- end
117
- end
@@ -1,101 +0,0 @@
1
- # encoding: UTF-8
2
- #
3
- # Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
4
- # This source code is licensed under the BSD-style license found in the
5
- # LICENSE file in the root directory of this source tree.
6
-
7
- require 'gooddata/rest/rest'
8
-
9
- describe 'Behavior during polling and retries' do
10
- before :each do
11
- WebMock.enable!
12
-
13
- @server = GoodData::Environment::ConnectionHelper::DEFAULT_SERVER
14
- @coef = GoodData::Rest::Connection::RETRY_TIME_COEFFICIENT
15
- @init = GoodData::Rest::Connection::RETRY_TIME_INITIAL_VALUE
16
- @poll = GoodData::Rest::Client::DEFAULT_SLEEP_INTERVAL
17
-
18
- GoodData::Rest::Connection.send(:remove_const, :RETRY_TIME_COEFFICIENT) if GoodData::Rest::Connection.const_defined?(:RETRY_TIME_COEFFICIENT)
19
- GoodData::Rest::Connection.send(:remove_const, :RETRY_TIME_INITIAL_VALUE) if GoodData::Rest::Connection.const_defined?(:RETRY_TIME_INITIAL_VALUE)
20
- GoodData::Rest::Client.send(:remove_const, :DEFAULT_SLEEP_INTERVAL) if GoodData::Rest::Client.const_defined?(:DEFAULT_SLEEP_INTERVAL)
21
-
22
- GoodData::Rest::Connection.const_set(:RETRY_TIME_COEFFICIENT, 1)
23
- GoodData::Rest::Connection.const_set(:RETRY_TIME_INITIAL_VALUE, 0)
24
- GoodData::Rest::Client.const_set(:DEFAULT_SLEEP_INTERVAL, 0)
25
- stub_request(:get, "#{@server}/gdc")
26
- .to_return(
27
- :body => {
28
- 'about' => {
29
- 'links' => [{
30
- 'link' => 'https://secure-di.gooddata.com/uploads',
31
- 'summary' => 'User data staging area.',
32
- 'category' => 'uploads',
33
- 'title' => 'user-uploads'
34
- }]
35
- }
36
- }.to_json,
37
- :headers => { 'Content-Type' => 'application/json' }
38
- )
39
- stub_request(:post, "#{@server}/gdc/account/login")
40
- .to_return(:body => { :userLogin => { :profile => "/profile/123" } }.to_json, :headers => { 'Content-Type' => "application/json" })
41
- stub_request(:get, "#{@server}/gdc/account/token")
42
- .to_return(:body => {}.to_json, :headers => { 'Content-Type' => "application/json" })
43
- stub_request(:get, "#{@server}/profile/123")
44
- .to_return(:body => {}.to_json, :headers => { 'Content-Type' => "application/json" })
45
- stub_request(:get, "#{@server}/poll_test")
46
- .to_return(:body => { stuff: :aaa }.to_json, :headers => { 'Content-Type' => "application/json" })
47
- stub_request(:get, "#{@server}/too_many_reqs")
48
- .to_return(:body => {}.to_json, :status => 429, :headers => { 'Content-Type' => "application/json" })
49
- stub_request(:get, "#{@server}/out_of_service")
50
- .to_return(:body => {}.to_json, :status => 503, :headers => { 'Content-Type' => "application/json" })
51
- stub_request(:get, "#{@server}/internal_error")
52
- .to_return(:body => {}.to_json, :status => 500, :headers => { 'Content-Type' => "application/json" })
53
-
54
- @client = GoodData.connect('aaa', 'bbbb')
55
- end
56
-
57
- after :each do
58
- WebMock.disable!
59
- GoodData::Rest::Connection.send(:remove_const, :RETRY_TIME_COEFFICIENT) if GoodData::Rest::Connection.const_defined?(:RETRY_TIME_COEFFICIENT)
60
- GoodData::Rest::Connection.send(:remove_const, :RETRY_TIME_INITIAL_VALUE) if GoodData::Rest::Connection.const_defined?(:RETRY_TIME_INITIAL_VALUE)
61
- GoodData::Rest::Client.send(:remove_const, :DEFAULT_SLEEP_INTERVAL) if GoodData::Rest::Client.const_defined?(:DEFAULT_SLEEP_INTERVAL)
62
-
63
- GoodData::Rest::Connection.const_set(:RETRY_TIME_COEFFICIENT, @coef)
64
- GoodData::Rest::Connection.const_set(:RETRY_TIME_INITIAL_VALUE, @init)
65
- GoodData::Rest::Client.const_set(:DEFAULT_SLEEP_INTERVAL, @poll)
66
- end
67
-
68
- it 'should fail a poller after timelimit passes' do
69
- expect do
70
- @client.poll_on_response('/poll_test', time_limit: 0.1) { |_| true }
71
- end.to raise_error(GoodData::ExecutionLimitExceeded)
72
- end
73
-
74
- it 'should make MAX_REQUESTS when hitting 429' do
75
- expect do
76
- @client.get('/too_many_reqs')
77
- end.to raise_error(RestClient::TooManyRequests)
78
- expect(a_request(:get, "#{@server}/too_many_reqs")).to have_been_made.times(12)
79
- end
80
-
81
- it 'should make MAX_REQUESTS when hitting 503' do
82
- expect do
83
- @client.get('/out_of_service')
84
- end.to raise_error(RestClient::ServiceUnavailable)
85
- expect(a_request(:get, "#{@server}/out_of_service")).to have_been_made.times(12)
86
- end
87
-
88
- it 'should make 1 additional request when hitting 500' do
89
- expect do
90
- @client.get('/internal_error', :tries => 3)
91
- end.to raise_error(RestClient::InternalServerError)
92
- expect(a_request(:get, "#{@server}/internal_error")).to have_been_made.times(3)
93
- end
94
-
95
- it 'Number of requests can be overriden' do
96
- expect do
97
- @client.get('/internal_error', :tries => 4)
98
- end.to raise_error(RestClient::InternalServerError)
99
- expect(a_request(:get, "#{@server}/internal_error")).to have_been_made.times(4)
100
- end
101
- end
@@ -1,10 +0,0 @@
1
- # encoding: UTF-8
2
- #
3
- # Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
4
- # This source code is licensed under the BSD-style license found in the
5
- # LICENSE file in the root directory of this source tree.
6
-
7
- require 'gooddata/rest/rest'
8
-
9
- describe GoodData::Rest::Resource do
10
- end
@@ -1,63 +0,0 @@
1
- require 'vcr'
2
- require 'active_support/core_ext/string'
3
-
4
- module GoodData
5
- module Helpers
6
- # Configures VCR for integration tests
7
- class VcrConfigurer
8
- def self.name_to_placeholder(name)
9
- "<#{name.underscore.upcase}>"
10
- end
11
-
12
- def self.filter_body_field(vcr_config, part, field)
13
- placeholder = name_to_placeholder(field)
14
- vcr_config.filter_sensitive_data(placeholder) do |interaction|
15
- body_match = interaction[part].body.match(/"#{Regexp.quote(field)}":\s*"([^"]+)"/)
16
- body_match.captures.first if body_match
17
- end
18
- end
19
-
20
- def self.filter_header(vcr_config, part, header_name)
21
- placeholder = name_to_placeholder(header_name)
22
- vcr_config.filter_sensitive_data(placeholder) do |interaction|
23
- header = interaction[part].headers[header_name]
24
- header.first if header
25
- end
26
- end
27
-
28
- # custom path matcher, sanitizing the randomness of uploads dirs
29
- gdc_path_matcher = lambda do |client_request, recorded_request|
30
- client_path = client_request.parsed_uri.path
31
- recorded_path = recorded_request.parsed_uri.path
32
- uploads_regex = %r{(\/gdc\/uploads\/)[^\/]+(\/.*)}
33
- if client_path.match(uploads_regex) && recorded_path.match(uploads_regex)
34
- client_path.gsub(uploads_regex, '\1UPLOADS_TMP\2') == recorded_path.gsub(uploads_regex, '\1UPLOADS_TMP\2')
35
- else
36
- client_path == recorded_path
37
- end
38
- end
39
-
40
- VCR.configure do |vcr_config|
41
- vcr_config.cassette_library_dir = 'spec/integration/vcr_cassettes'
42
- vcr_config.hook_into :webmock
43
- vcr_config.allow_http_connections_when_no_cassette = true
44
- vcr_config.configure_rspec_metadata!
45
-
46
- vcr_config.default_cassette_options = {
47
- :decode_compressed_response => true,
48
- :match_requests_on => [gdc_path_matcher, :method, :query],
49
- # allow to set record mode from environment, see https://relishapp.com/vcr/vcr/v/3-0-3/docs/record-modes
50
- :record => (ENV['VCR_RECORD_MODE'] && ENV['VCR_RECORD_MODE'].to_sym) || :once
51
- }
52
-
53
- %w(request response).each do |part|
54
- filter_body_field(vcr_config, part, 'password')
55
- filter_body_field(vcr_config, part, 'token')
56
- filter_body_field(vcr_config, part, 'authorizationToken')
57
- filter_header(vcr_config, part, 'X-Gdc-Authsst')
58
- filter_header(vcr_config, part, 'X-Gdc-Authtt')
59
- end
60
- end
61
- end
62
- end
63
- end