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,76 +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/actions/ensure_technical_users_project'
8
- require 'gooddata/lcm/lcm2'
9
-
10
- shared_examples 'a technical users project action' do
11
- it 'adds technical user to the project' do
12
- expect(project).to receive(:create_users).with([{ login: 'foo@bar.com', role: 'admin' }])
13
- result = subject.class.call(params)
14
- expected = [{ project: 'foo project',
15
- pid: 'abcdefg',
16
- login: 'foo@bar.com',
17
- role: 'admin',
18
- result: 'successful',
19
- message: 'yahoo!',
20
- url: '/gdc/account/foo' }]
21
- expect(result).to eq(expected)
22
- end
23
- end
24
-
25
- describe GoodData::LCM2::EnsureTechnicalUsersProject do
26
- let(:gdc_gd_client) { double(:gdc_gd_client) }
27
- let(:project) { double(:project) }
28
- let(:domain) { double(:domain) }
29
- before do
30
- allow(project).to receive(:title) { 'foo project' }
31
- allow(project).to receive(:pid) { 'abcdefg' }
32
- allow(project).to receive(:create_users) { [{ type: 'successful', message: 'yahoo!', user: '/gdc/account/foo' }] }
33
- allow(gdc_gd_client).to receive(:projects) { project }
34
- end
35
-
36
- context 'when user wants to assign an existing project to new client' do
37
- let(:params) do
38
- params = {
39
- gdc_gd_client: gdc_gd_client,
40
- technical_users: ['foo@bar.com'],
41
- synchronize: [],
42
- domain: domain,
43
- clients: [{ project: 'abcdefg' }]
44
- }
45
- GoodData::LCM2.convert_to_smart_hash(params)
46
- end
47
-
48
- it_behaves_like 'a technical users project action'
49
- end
50
-
51
- context 'when deprecated param technical_user specified' do
52
- let(:params) do
53
- params = {
54
- gdc_gd_client: gdc_gd_client,
55
- technical_user: ['foo@bar.com'],
56
- domain: domain,
57
- synchronize: [{ to: [{ pid: 'qux' }] }]
58
- }
59
- GoodData::LCM2.convert_to_smart_hash(params)
60
- end
61
- it_behaves_like 'a technical users project action'
62
- end
63
-
64
- context 'when param technical_users specified' do
65
- let(:params) do
66
- params = {
67
- gdc_gd_client: gdc_gd_client,
68
- domain: domain,
69
- technical_users: ['foo@bar.com'],
70
- synchronize: [{ to: [{ pid: 'qux' }] }]
71
- }
72
- GoodData::LCM2.convert_to_smart_hash(params)
73
- end
74
- it_behaves_like 'a technical users project action'
75
- end
76
- end
@@ -1,94 +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/execute_schedules'
9
-
10
- describe GoodData::LCM2::ExecuteSchedules do
11
- let(:client) { double(:client) }
12
- let(:logger) { double(:logger) }
13
- let(:project) { double(:project) }
14
- let(:schedule) { double(:schedule) }
15
-
16
- before do
17
- allow(logger).to receive(:info)
18
- allow(logger).to receive(:warn)
19
- allow(client).to receive(:projects).and_return([project])
20
- allow(schedule).to receive(:params).and_return('MODE' => 'foo')
21
- allow(schedule).to receive(:project).and_return(project)
22
- allow(schedule).to receive(:obj_id).and_return('id')
23
- allow(project).to receive(:schedules).and_return([schedule])
24
- allow(project).to receive(:pid)
25
- allow(project).to receive(:title)
26
- end
27
-
28
- context 'In simplest case' do
29
- let(:params) do
30
- params = {
31
- GDC_GD_CLIENT: client,
32
- list_of_modes: 'foo|bar',
33
- work_done_identificator: 'IGNORE',
34
- gdc_logger: logger
35
- }
36
- GoodData::LCM2.convert_to_smart_hash(params)
37
- end
38
-
39
- it 'execute schedules' do
40
- expect(schedule).to receive(:execute)
41
- subject.class.call(params)
42
- end
43
- end
44
-
45
- context 'when SEGMENT_LIST is specified' do
46
- let(:params) do
47
- params = {
48
- GDC_GD_CLIENT: client,
49
- list_of_modes: 'foo|bar',
50
- work_done_identificator: 'IGNORE',
51
- gdc_logger: logger,
52
- segment_list: 'A|B'
53
- }
54
- GoodData::LCM2.convert_to_smart_hash(params)
55
- end
56
-
57
- it 'throw error if DOMAIN is not filled' do
58
- expect do
59
- subject.class.call(params)
60
- end.to raise_error(/In case that you are using SEGMENT_LIST parameter, you need to fill out DOMAIN parameter/)
61
- end
62
- end
63
-
64
- context 'when SEGMENT_LIST and DOMAIN are specified' do
65
- let(:params) do
66
- params = {
67
- GDC_GD_CLIENT: client,
68
- list_of_modes: 'foo|bar',
69
- work_done_identificator: 'IGNORE',
70
- gdc_logger: logger,
71
- segment_list: 'A',
72
- domain: 'domain'
73
- }
74
- GoodData::LCM2.convert_to_smart_hash(params)
75
- end
76
-
77
- let(:domain) { double(:domain) }
78
- let(:segment) { double(:segment) }
79
- let(:segment_client) { double(:segment_client) }
80
-
81
- before do
82
- allow(client).to receive(:domain).and_return(domain)
83
- allow(domain).to receive(:segments).and_return(segment)
84
- allow(segment).to receive(:clients).and_return([segment_client])
85
- allow(project).to receive(:obj_id).and_return('id')
86
- allow(segment_client).to receive(:project).and_return(project)
87
- end
88
-
89
- it 'should work' do
90
- expect(schedule).to receive(:execute)
91
- subject.class.call(params)
92
- end
93
- end
94
- end
@@ -1,46 +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/actions/provision_clients'
8
- require 'gooddata/lcm/actions/purge_clients'
9
- require 'gooddata/lcm/lcm2'
10
-
11
- describe GoodData::LCM2::ProvisionClients do
12
- let(:gdc_gd_client) { double('gdc_gd_client') }
13
- let(:domain) { double('domain') }
14
- let(:logger) { double('logger') }
15
- let(:segment) { double('segment') }
16
- let(:data_product) { double('data_product') }
17
-
18
- before do
19
- allow(gdc_gd_client).to receive(:domain).and_return(domain)
20
- allow(logger).to receive(:debug)
21
- allow(logger).to receive(:error).and_return({})
22
- allow(segment).to receive(:segment_id).and_return({})
23
- allow(segment).to receive(:provision_client_projects).and_raise('limit reached')
24
- allow(domain).to receive(:segments) { segment }
25
- end
26
-
27
- context 'when provisioning get errors' do
28
- let(:params) do
29
- params = {
30
- gdc_gd_client: gdc_gd_client,
31
- gdc_logger: logger,
32
- segments: [
33
- segment
34
- ],
35
- domain: domain,
36
- data_product: data_product
37
- }
38
- GoodData::LCM2.convert_to_smart_hash(params)
39
- end
40
-
41
- it 'clean all zombie clients' do
42
- expect(GoodData::LCM2::PurgeClients).to receive(:call).and_return(results: [], params: { client_projects: [] })
43
- expect { subject.class.call(params) }.to raise_error('limit reached')
44
- end
45
- end
46
- end
@@ -1,47 +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/purge_clients'
9
-
10
- describe GoodData::LCM2::PurgeClients do
11
- let(:client1) { double('client1') }
12
- let(:client2) { double('client2') }
13
- let(:project) { double('project') }
14
-
15
- context "some clients which don't have project or project is deleted are existing in segment" do
16
- let(:params) do
17
- params = {
18
- client_projects: {
19
- 'client_id' => {
20
- segment_client: client1,
21
- project: project
22
- },
23
- 'delete' => {
24
- segment_client: client2
25
- }
26
- }
27
- }
28
- GoodData::LCM2.convert_to_smart_hash(params)
29
- end
30
-
31
- before do
32
- allow(client1).to receive(:project) { project }
33
- allow(client1).to receive(:client_id) { 'client_id' }
34
- allow(client2).to receive(:client_id) { 'delete' }
35
- allow(client1).to receive(:delete)
36
- allow(client2).to receive(:delete)
37
- allow(project).to receive(:pid) { '123456789' }
38
- allow(project).to receive(:deleted?) { false }
39
- end
40
-
41
- it 'purge them' do
42
- expect(client2).to receive(:delete)
43
- result = subject.class.call(params)[:results]
44
- expect(result).to eq [{ client_id: 'client_id', project: '123456789', status: 'ok - not purged' }, { client_id: 'delete', project: nil, status: 'purged' }]
45
- end
46
- end
47
- end
@@ -1,54 +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::RenameExistingClientProjects do
11
- let(:gdc_gd_client) { double('gdc_gd_client') }
12
- let(:domain) { double('domain') }
13
- let(:client) { double('client') }
14
- let(:project) { double('project') }
15
-
16
- context 'client project is existing in input source' do
17
- let(:params) do
18
- params = {
19
- gdc_gd_client: gdc_gd_client,
20
- organization: domain,
21
- clients: [
22
- {
23
- id: 'Id',
24
- settings: [
25
- {
26
- name: 'lcm.title',
27
- value: 'renamed project'
28
- }
29
- ]
30
- }
31
- ],
32
- client_projects: {
33
- 'Id' => { segment_client: client, project: project }
34
- }
35
- }
36
- GoodData::LCM2.convert_to_smart_hash(params)
37
- end
38
-
39
- before do
40
- allow(gdc_gd_client).to receive(:domain) { domain }
41
- allow(client).to receive(:project) { project }
42
- allow(project).to receive(:pid) { '123456789' }
43
- allow(project).to receive(:title) { "old project" }
44
- allow(project).to receive(:title=)
45
- allow(project).to receive(:save)
46
- end
47
-
48
- it 'rename client project title' do
49
- expect(project).to receive(:title=).with('renamed project')
50
- result = subject.class.call(params)
51
- expect(result).to eq [{ id: 'Id', pid: '123456789', old_title: 'old project', new_title: 'renamed project' }]
52
- end
53
- end
54
- end
@@ -1,46 +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/actions/segments_filter'
8
- require 'gooddata/lcm/lcm2'
9
-
10
- describe GoodData::LCM2::SegmentsFilter do
11
- context 'when segments contains duplicate segment ids' do
12
- let(:params) do
13
- params = {
14
- segments: [
15
- { segment_id: 'segment_foo' },
16
- { segment_id: 'Segment_foo' }
17
- ]
18
- }
19
- GoodData::LCM2.convert_to_smart_hash(params)
20
- end
21
-
22
- it 'raise error' do
23
- expect { subject.class.call(params) }.to raise_error(/segment_foo/, /Segment_foo/)
24
- end
25
- end
26
-
27
- context 'when passed segments' do
28
- let(:params) do
29
- params = {
30
- segments: [
31
- { segment_id: 'correct-segment' },
32
- { segment_id: 'wrong-segment' }
33
- ],
34
- segments_filter: [
35
- 'correct-segment'
36
- ]
37
- }
38
- GoodData::LCM2.convert_to_smart_hash(params)
39
- end
40
-
41
- it 'filters the segments according to segments_filter' do
42
- results = subject.class.call(params)
43
- expect(results[:results].first.segment_id).to eq 'correct-segment'
44
- end
45
- end
46
- end
@@ -1,43 +0,0 @@
1
- shared_examples 'a user action reading client_id' do
2
- before do
3
- allow(File).to receive(:open).and_return("client_id\n#{client_id}")
4
- end
5
-
6
- it 'uses client_id column' do
7
- expect(domain).to receive(:clients).with(client_id, nil)
8
- subject.class.call(params)
9
- end
10
- end
11
-
12
- shared_examples 'a user action filtering segments' do
13
- let(:organization_not_in_segment) { double('organization') }
14
- let(:project_not_in_segment) { double('project') }
15
-
16
- before do
17
- allow(organization_not_in_segment).to receive(:segment_uri).and_return('another-segment-uri')
18
- allow(organization_not_in_segment).to receive(:project).and_return(project_not_in_segment)
19
- end
20
-
21
- it 'does operation on project only from clients in segments in segments filter' do
22
- expect(project).to receive(message_for_project)
23
- expect(project_not_in_segment).not_to receive(message_for_project)
24
- subject.class.call(params)
25
- end
26
- end
27
-
28
- shared_examples 'when using unsuported sync_mode' do
29
- before do
30
- allow(project).to receive(:metadata).and_return(
31
- 'GOODOT_CUSTOM_PROJECT_ID' => 'project-123'
32
- )
33
- allow(project).to receive(:uri).and_return('project-uri')
34
- allow(data_source).to receive(:realize).and_return('filepath')
35
- allow(File).to receive(:open).and_return("client_id\n123456789")
36
- allow(project).to receive(:add_data_permissions)
37
- allow(domain).to receive(:clients).and_return([])
38
- end
39
-
40
- it 'fails' do
41
- expect { subject.class.call(params) }.to raise_error(/sync_mode/)
42
- end
43
- end
@@ -1,58 +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 'it synchronizes computed attributes' do
9
- expect(project).to receive(:execute_maql).with('expected_maql')
10
- result = subject.class.call(converted_params)
11
- expect(result).not_to be_empty
12
- end
13
- end
14
-
15
- describe GoodData::LCM2::SynchronizeComputedAttributes do
16
- let(:gdc_gd_client) { double(GoodData::Rest::Client) }
17
- let(:logger) { double(Logger) }
18
- let(:project) { double(GoodData::Project) }
19
- let(:synchronize) do
20
- [{ from: 'foo', to: [{ ca_scripts: { 'maqlDdlChunks' => ['expected_maql'] } }] }]
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).and_return(project)
36
- allow(project).to receive(:title)
37
- allow(project).to receive(:pid)
38
- allow(logger).to receive(:info)
39
- end
40
-
41
- context 'when include_computed_attributes is not specified' do
42
- let(:params) { basic_params }
43
- it_behaves_like 'a computed attributes synchronizer'
44
- end
45
-
46
- context 'when include_computed_attributes is true' do
47
- let(:params) { basic_params.merge(include_computed_attributes: 'true') }
48
- it_behaves_like 'a computed attributes synchronizer'
49
- end
50
-
51
- context 'when include_computed_attributes is false' do
52
- let(:params) { basic_params.merge(include_computed_attributes: 'false') }
53
- it 'it does not synchronize computed attributes' do
54
- result = subject.class.call(converted_params)
55
- expect(result).to be_empty
56
- end
57
- end
58
- end