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,71 +0,0 @@
1
- # encoding: UTF-8
2
- #
3
- # Copyright (c) 2010-2018 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
- describe GoodData::LCM2::SynchronizeClients do
8
- subject { GoodData::LCM2::SynchronizeClients }
9
- let(:failure_details) { '/link/to/details' }
10
- let(:failed_count) { 42 }
11
- let(:sync_failed_response_body) do
12
- {
13
- "synchronizationResult" => {
14
- "successfulClients" => {
15
- "count" => 0
16
- },
17
- "failedClients" => {
18
- "count" => failed_count
19
- },
20
- "links" => {
21
- "details" => failure_details
22
- }
23
- }
24
- }
25
- end
26
-
27
- let(:sync_failed_response) { double(RestClient::Response) }
28
- let(:gdc_gd_client) { double(GoodData::Rest::Client) }
29
- let(:logger) { double(Logger) }
30
- let(:organization_name) { 'big-boss-group' }
31
- let(:organization) { double(GoodData::Domain) }
32
- let(:segment) { double(GoodData::Segment) }
33
- let(:ads_client) { double(GoodData::DataWarehouse) }
34
- let(:params) do
35
- params = {
36
- gdc_gd_client: gdc_gd_client,
37
- development_client: gdc_gd_client,
38
- organization: organization_name,
39
- segments: [segment],
40
- release_table_name: 'LCM_RELEASE',
41
- ads_client: ads_client,
42
- gdc_logger: logger
43
- }
44
- GoodData::LCM2.convert_to_smart_hash(params)
45
- end
46
-
47
- before do
48
- allow(gdc_gd_client).to receive(:domain).with(organization_name)
49
- .and_return(organization)
50
- allow(organization).to receive(:segments).and_return([segment])
51
- allow(segment).to receive(:segment_id).and_return('id_of_my_segment')
52
- allow(gdc_gd_client).to receive(:projects)
53
- allow(ads_client).to receive(:execute_select).and_return([{}])
54
- allow(segment).to receive(:master_project=)
55
- allow(segment).to receive(:save)
56
- allow(sync_failed_response)
57
- .to receive(:json).and_return(sync_failed_response_body)
58
- end
59
-
60
- context 'when synchronizing client fails' do
61
- before do
62
- allow(segment)
63
- .to receive(:synchronize_clients).and_return(sync_failed_response)
64
- end
65
- it 'fails with a clear error message' do
66
- expected_error_message = "#{failed_count} clients failed to " \
67
- "synchronize. Details: #{failure_details}"
68
- expect { subject.call(params) }.to raise_error(expected_error_message)
69
- end
70
- end
71
- end
@@ -1,206 +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/lcm/lcm2'
8
- require 'gooddata/lcm/actions/synchronize_etls_in_segment'
9
-
10
- describe GoodData::LCM2::SynchronizeETLsInSegment do
11
- let(:gdc_gd_client) { double('gdc_gd_client') }
12
- let(:domain) { double('domain') }
13
- let(:segment) { double('segment') }
14
- let(:project) { double('project') }
15
- let(:result) { { syncedResult: {} } }
16
- let(:client_id) { 'foo_client' }
17
- let(:data_product) { double('data_product') }
18
- let(:params) do
19
- params = {
20
- gdc_gd_client: gdc_gd_client,
21
- organization: domain,
22
- synchronize: [{
23
- segment_id: 'some_segment_ids',
24
- to: [{ pid: 'foo', client_id: client_id }]
25
- }],
26
- data_product: data_product
27
- }
28
- GoodData::LCM2.convert_to_smart_hash(params)
29
- end
30
-
31
- before do
32
- allow(gdc_gd_client).to receive(:domain) { domain }
33
- allow(gdc_gd_client).to receive(:projects) { project }
34
- allow(project).to receive(:schedules) { [] }
35
- allow(data_product).to receive(:segments) { [segment] }
36
- allow(segment).to receive(:synchronize_processes) { result }
37
- allow(project).to receive(:set_metadata)
38
- allow(segment).to receive(:segment_id) { 'some_segment_ids' }
39
- end
40
-
41
- it 'adds GOODOT_CUSTOM_PROJECT_ID to metadata' do
42
- expect(project).to receive(:set_metadata)
43
- .with('GOODOT_CUSTOM_PROJECT_ID', client_id)
44
- subject.class.call(params)
45
- end
46
-
47
- context 'when sync processes/schedules has problem' do
48
- let(:result) do
49
- {
50
- syncedResult: {
51
- errors: [
52
- {
53
- errorId: "91a811a7-8d3a-42d2-a1ba-024933f74021",
54
- errorCode: "gdc.lcm.schedule.fatal_error",
55
- message: "Error",
56
- parameters: []
57
- }
58
- ]
59
- }
60
- }
61
- end
62
-
63
- it 'raise error' do
64
- expect { subject.class.call(params) }.to raise_error
65
- end
66
- end
67
-
68
- context 'when user passes dynamic schedule parameters' do
69
- let(:project) { double(:project) }
70
- let(:schedule1) { double(:schedule1) }
71
- let(:schedule2) { double(:schedule2) }
72
-
73
- before do
74
- allow(segment).to receive(:synchronize_processes).and_return(
75
- syncedResult: {
76
- clients: [
77
- client: {
78
- id: 'foo',
79
- project: 'bar'
80
- }
81
- ]
82
- }
83
- )
84
- allow(segment).to receive(:master_project_id)
85
- allow(schedule1).to receive(:update_hidden_params)
86
- allow(schedule1).to receive(:enable)
87
- allow(schedule1).to receive(:save)
88
- allow(schedule1).to receive(:name) { 'Schedule1' }
89
- allow(schedule2).to receive(:update_hidden_params)
90
- allow(schedule2).to receive(:enable)
91
- allow(schedule2).to receive(:save)
92
- allow(schedule2).to receive(:name) { 'Schedule2' }
93
- allow(project).to receive(:schedules) { [schedule1, schedule2] }
94
- allow(gdc_gd_client).to receive(:projects) { project }
95
- end
96
-
97
- context 'to each schedules' do
98
- let(:params) do
99
- params = {
100
- gdc_gd_client: gdc_gd_client,
101
- organization: domain,
102
- synchronize: [
103
- {
104
- segment_id: 'some_segment_ids',
105
- from: 'from project',
106
- to: [
107
- pid: '123',
108
- client_id: 'foo'
109
- ]
110
- }
111
- ],
112
- schedule_params: {
113
- all_clients: {
114
- 'Schedule1' => {
115
- 'HELLO' => 'hi'
116
- },
117
- 'Schedule2' => {
118
- 'BYE' => 'bye'
119
- }
120
- }
121
- },
122
- data_product: data_product
123
- }
124
- GoodData::LCM2.convert_to_smart_hash(params)
125
- end
126
-
127
- it 'each schedules must have different parameters' do
128
- schedule1.should_receive(:update_params).once.ordered.with('HELLO' => 'hi')
129
- schedule2.should_receive(:update_params).once.ordered.with('BYE' => 'bye')
130
- subject.class.call(params)
131
- end
132
- end
133
-
134
- context 'to all schedules' do
135
- let(:params) do
136
- params = {
137
- gdc_gd_client: gdc_gd_client,
138
- organization: domain,
139
- synchronize: [
140
- {
141
- segment_id: 'some_segment_ids',
142
- from: 'from project',
143
- to: [
144
- pid: '123',
145
- client_id: 'foo'
146
- ]
147
- }
148
- ],
149
- schedule_params: {
150
- all_clients: {
151
- all_schedules: {
152
- 'HELLO' => 'hi'
153
- }
154
- }
155
- },
156
- data_product: data_product
157
- }
158
- GoodData::LCM2.convert_to_smart_hash(params)
159
- end
160
-
161
- it 'all schedules must have the parameter' do
162
- schedule1.should_receive(:update_params).once.ordered.with('HELLO' => 'hi')
163
- schedule2.should_receive(:update_params).once.ordered.with('HELLO' => 'hi')
164
- subject.class.call(params)
165
- end
166
- end
167
-
168
- context 'to each schedules in each clients' do
169
- let(:params) do
170
- params = {
171
- gdc_gd_client: gdc_gd_client,
172
- organization: domain,
173
- synchronize: [
174
- {
175
- segment_id: 'some_segment_ids',
176
- from: 'from project',
177
- to: [
178
- pid: '123',
179
- client_id: 'foo'
180
- ]
181
- }
182
- ],
183
- schedule_params: {
184
- 'foo' => {
185
- 'Schedule1' => {
186
- 'HELLO' => 'hi'
187
- }
188
- },
189
- 'bar' => {
190
- 'Schedule2' => {
191
- 'BYE' => 'bye'
192
- }
193
- }
194
- },
195
- data_product: data_product
196
- }
197
- GoodData::LCM2.convert_to_smart_hash(params)
198
- end
199
-
200
- it 'parameters should be passed to the correct client project and schedule' do
201
- schedule1.should_receive(:update_params).once.ordered.with('HELLO' => 'hi')
202
- subject.class.call(params)
203
- end
204
- end
205
- end
206
- end
@@ -1,70 +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
- shared_examples 'a computed attributes synchronizer' do
8
- it 'diffs LDM with computed attributes' do
9
- expect(project).to receive(:blueprint).with(include_ca: true)
10
- subject.class.call(converted_params)
11
- end
12
- end
13
-
14
- describe GoodData::LCM2::SynchronizeLdm do
15
- let(:gdc_gd_client) { double(GoodData::Rest::Client) }
16
- let(:logger) { double(Logger) }
17
- let(:project) { double(GoodData::Project) }
18
- let(:target_project) { double(GoodData::Project) }
19
- let(:synchronize) do
20
- [{ from: 'from_pid', to: [{ pid: 'to_pid' }] }]
21
- end
22
- let(:basic_params) do
23
- {
24
- gdc_gd_client: gdc_gd_client,
25
- development_client: gdc_gd_client,
26
- synchronize: synchronize,
27
- gdc_logger: logger
28
- }
29
- end
30
- let(:converted_params) do
31
- GoodData::LCM2.convert_to_smart_hash(params)
32
- end
33
-
34
- before do
35
- allow(gdc_gd_client).to receive(:projects)
36
- .with('from_pid')
37
- .and_return(project)
38
- allow(gdc_gd_client).to receive(:projects)
39
- .with('to_pid')
40
- .and_return(target_project)
41
- allow(project).to receive(:title)
42
- allow(project).to receive(:pid)
43
- allow(project).to receive(:blueprint)
44
- allow(logger).to receive(:info)
45
- allow(target_project).to receive(:title)
46
- allow(target_project).to receive(:update_from_blueprint)
47
- end
48
-
49
- context 'when include_computed_attributes is true' do
50
- let(:params) { basic_params.merge(include_computed_attributes: 'true') }
51
- it_behaves_like 'a computed attributes synchronizer'
52
- end
53
-
54
- context 'when include_computed_attributes is false' do
55
- let(:params) { basic_params.merge(include_computed_attributes: 'false') }
56
- it 'diffs LDM without computed attributes' do
57
- expect(project).to receive(:blueprint).with(include_ca: false)
58
- subject.class.call(converted_params)
59
- end
60
- end
61
-
62
- context 'when exclude_fact_rule is true' do
63
- let(:params) { basic_params.merge(exclude_fact_rule: 'true') }
64
- it 'calls update_from_blueprint with exclude_fact_rule option' do
65
- expect(target_project).to receive(:update_from_blueprint)
66
- .with(any_args, hash_including(exclude_fact_rule: true))
67
- subject.class.call(converted_params)
68
- end
69
- end
70
- end
@@ -1,208 +0,0 @@
1
- require 'active_support/core_ext/hash'
2
- require 'gooddata/lcm/lcm2'
3
-
4
- require_relative 'shared_examples_for_user_actions'
5
-
6
- shared_context 'using mode with custom_id' do
7
- let(:CSV) { double('CSV') }
8
-
9
- before do
10
- allow(project).to receive(:metadata).and_return(
11
- 'GOODOT_CUSTOM_PROJECT_ID' => 'project-123'
12
- )
13
- allow(project).to receive(:uri).and_return('project-uri')
14
- allow(project).to receive(:add_data_permissions)
15
- allow(domain).to receive(:clients).and_return([])
16
- allow(data_source).to receive(:realize).and_return('filepath')
17
- end
18
- end
19
-
20
- describe GoodData::LCM2::SynchronizeUserFilters do
21
- let(:client) { double('client') }
22
- let(:user) { double('user') }
23
- let(:data_source) { double('user') }
24
- let(:domain) { double('domain') }
25
- let(:project) { double('project') }
26
- let(:organization) { double('organization') }
27
- let(:logger) { double(Logger) }
28
-
29
- before do
30
- allow(client).to receive(:projects).and_return(project)
31
- allow(client).to receive(:domain).and_return(domain)
32
- allow(organization).to receive(:project_uri)
33
- allow(project).to receive(:add_data_permissions).and_return([{}])
34
- allow(project).to receive(:pid).and_return('123456789')
35
- allow(user).to receive(:login).and_return('my_login')
36
- allow(GoodData::Helpers::DataSource).to receive(:new).and_return(data_source)
37
- allow(logger).to receive(:warn)
38
- end
39
-
40
- context 'when multiple_projects_column not specified' do
41
- before do
42
- allow(project).to receive(:metadata).and_return({})
43
- allow(project).to receive(:uri)
44
- allow(data_source).to receive(:realize)
45
- allow(organization).to receive(:id).and_return('client123')
46
- allow(organization).to receive(:project).and_return(project)
47
- end
48
- context 'when mode requires client_id' do
49
- before do
50
- allow(domain).to receive(:clients).and_return(organization)
51
- end
52
- let(:mode) { 'sync_multiple_projects_based_on_custom_id' }
53
- let(:params) do
54
- params = {
55
- GDC_GD_CLIENT: client,
56
- input_source: 'foo',
57
- domain: 'bar',
58
- filters_config: { labels: [] },
59
- sync_mode: mode,
60
- gdc_logger: logger
61
- }
62
- GoodData::LCM2.convert_to_smart_hash(params)
63
- end
64
-
65
- it_behaves_like 'a user action reading client_id' do
66
- let(:client_id) { '123456789' }
67
- end
68
-
69
- context 'when mode is sync_domain_client_workspaces' do
70
- let(:mode) { 'sync_domain_client_workspaces' }
71
- let(:clients) { [] }
72
- before do
73
- allow(domain).to receive(:clients).with(:all, nil).and_return([organization])
74
- allow(domain).to receive(:clients).with(123_456_789).and_return(organization)
75
- allow(organization).to receive(:project).and_return(project)
76
- allow(organization).to receive(:client_id).and_return(123_456_789)
77
- allow(File).to receive(:open).and_return("client_id\n123456789")
78
- allow(project).to receive(:deleted?).and_return false
79
- end
80
- it 'returns results' do
81
- result = subject.class.call(params)
82
- expect(result).to eq(results: [[{}]])
83
- end
84
-
85
- it_behaves_like 'a user action filtering segments' do
86
- let(:message_for_project) { :add_data_permissions }
87
- end
88
-
89
- context 'when dry_run param is true' do
90
- let(:params) do
91
- params = {
92
- GDC_GD_CLIENT: client,
93
- input_source: 'foo',
94
- domain: 'bar',
95
- filters_config: { labels: [] },
96
- sync_mode: mode,
97
- gdc_logger: logger,
98
- dry_run: true
99
- }
100
- GoodData::LCM2.convert_to_smart_hash(params)
101
- end
102
-
103
- it 'sets the dry_run option' do
104
- expect(project).to receive(:add_data_permissions)
105
- .with(instance_of(Array), hash_including(dry_run: true))
106
- subject.class.call(params)
107
- end
108
- end
109
- end
110
- end
111
- end
112
-
113
- context 'when using sync_one_project_based_on_custom_id mode with multiple_projects_column' do
114
- include_context 'using mode with custom_id'
115
- let(:params) do
116
- params = {
117
- GDC_GD_CLIENT: client,
118
- input_source: 'foo',
119
- domain: 'bar',
120
- filters_config: { labels: [] },
121
- multiple_projects_column: 'id_column',
122
- sync_mode: 'sync_one_project_based_on_custom_id',
123
- gdc_logger: logger
124
- }
125
- GoodData::LCM2.convert_to_smart_hash(params)
126
- end
127
-
128
- context 'when params do not match client data in domain' do
129
- before do
130
- allow(project).to receive(:metadata).and_return({})
131
- allow(project).to receive(:uri).and_return('project-uri')
132
- allow(domain).to receive(:clients).and_return([])
133
- end
134
-
135
- it 'fails when unable to get filter value for selecting filters' do
136
- expect { subject.class.call(params) }.to raise_exception(/does not contain key GOODOT_CUSTOM_PROJECT_ID/)
137
- end
138
- end
139
-
140
- context 'when params match a client in the domain' do
141
- it 'adds filters matching the client' do
142
- expect(File).to receive(:open)
143
- csv_data = [
144
- {
145
- 'id_column' => 'project-123'
146
- },
147
- {
148
- 'id_column' => 'another-project'
149
- }
150
- ]
151
- expect(CSV).to receive(:foreach).and_yield(csv_data[0]).and_yield(csv_data[1])
152
- expect(GoodData::UserFilterBuilder).to receive(:get_filters) do |filters, _|
153
- filters.each do |filter|
154
- expect(filter['id_column']).to eq 'project-123'
155
- end
156
- end
157
- subject.class.call(params)
158
- end
159
- end
160
-
161
- context 'when the input set does not contain data for the current project' do
162
- it 'does not fail and logs a warning' do
163
- expect(File).to receive(:open)
164
- expect(CSV).to receive(:foreach).and_yield({})
165
- expect(project).to receive(:add_data_permissions)
166
- expect(logger).to receive(:warn)
167
- expect { subject.class.call(params) }.to_not raise_error
168
- end
169
- end
170
- end
171
-
172
- context 'when using sync_multiple_projects_based_on_custom_id mode' do
173
- include_context 'using mode with custom_id'
174
- let(:params) do
175
- params = {
176
- input_source: 'foo',
177
- domain: 'bar',
178
- multiple_projects_column: 'id_column',
179
- sync_mode: 'sync_multiple_projects_based_on_custom_id',
180
- gdc_logger: logger,
181
- GDC_GD_CLIENT: client,
182
- filters_config: { labels: [] }
183
- }
184
- GoodData::LCM2.convert_to_smart_hash(params)
185
- end
186
- it 'fails if the MUF set is empty' do
187
- expect(File).to receive(:open)
188
- expect(CSV).to receive(:foreach)
189
- expect { subject.class.call(params) }.to raise_error(/The filter set can not be empty/)
190
- end
191
- end
192
- context 'when using unsuported sync_mode' do
193
- let(:params) do
194
- params = {
195
- filters_config: { labels: [] },
196
- GDC_GD_CLIENT: client,
197
- input_source: 'foo',
198
- domain: 'bar',
199
- multiple_projects_column: 'id_column',
200
- sync_mode: 'unsuported_sync_mode', # sync_one_project_based_on_custom_id
201
- gdc_logger: logger
202
- }
203
- GoodData::LCM2.convert_to_smart_hash(params)
204
- end
205
-
206
- it_should_behave_like 'when using unsuported sync_mode'
207
- end
208
- end