gooddata 1.0.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 (517) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/.editorconfig +12 -0
  4. data/.flayignore +6 -0
  5. data/.gitignore +38 -0
  6. data/.pronto.yml +3 -0
  7. data/.rspec +5 -0
  8. data/.rubocop.yml +101 -0
  9. data/.travis.yml +9 -0
  10. data/.yardopts +22 -0
  11. data/CHANGELOG.md +272 -0
  12. data/CLI.md +435 -0
  13. data/CONTRIBUTING.md +38 -0
  14. data/DEPENDENCIES.md +880 -0
  15. data/Dockerfile.jruby +17 -0
  16. data/Dockerfile.ruby +19 -0
  17. data/Gemfile +4 -0
  18. data/Guardfile +5 -0
  19. data/LICENSE +22 -0
  20. data/LICENSE.rb +5 -0
  21. data/README.md +78 -0
  22. data/Rakefile +204 -0
  23. data/TODO.md +32 -0
  24. data/authors.sh +4 -0
  25. data/bin/gooddata +7 -0
  26. data/ci.rake +47 -0
  27. data/dependency_decisions.yml +104 -0
  28. data/docker-compose.yml +34 -0
  29. data/gooddata +9 -0
  30. data/gooddata.gemspec +72 -0
  31. data/lib/gooddata.rb +34 -0
  32. data/lib/gooddata/app/app.rb +16 -0
  33. data/lib/gooddata/bricks/base_downloader.rb +86 -0
  34. data/lib/gooddata/bricks/brick.rb +37 -0
  35. data/lib/gooddata/bricks/bricks.rb +17 -0
  36. data/lib/gooddata/bricks/middleware/aws_middleware.rb +41 -0
  37. data/lib/gooddata/bricks/middleware/base_middleware.rb +57 -0
  38. data/lib/gooddata/bricks/middleware/bench_middleware.rb +25 -0
  39. data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +37 -0
  40. data/lib/gooddata/bricks/middleware/decode_params_middleware.rb +21 -0
  41. data/lib/gooddata/bricks/middleware/dwh_middleware.rb +41 -0
  42. data/lib/gooddata/bricks/middleware/fs_download_middleware.rb +48 -0
  43. data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +36 -0
  44. data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +112 -0
  45. data/lib/gooddata/bricks/middleware/logger_middleware.rb +33 -0
  46. data/lib/gooddata/bricks/middleware/middleware.rb +12 -0
  47. data/lib/gooddata/bricks/middleware/restforce_middleware.rb +58 -0
  48. data/lib/gooddata/bricks/middleware/stdout_middleware.rb +23 -0
  49. data/lib/gooddata/bricks/middleware/twitter_middleware.rb +29 -0
  50. data/lib/gooddata/bricks/middleware/undot_params_middleware.rb +37 -0
  51. data/lib/gooddata/bricks/pipeline.rb +25 -0
  52. data/lib/gooddata/bricks/utils.rb +18 -0
  53. data/lib/gooddata/cli/cli.rb +27 -0
  54. data/lib/gooddata/cli/commands/auth_cmd.rb +29 -0
  55. data/lib/gooddata/cli/commands/domain_cmd.rb +28 -0
  56. data/lib/gooddata/cli/commands/project_cmd.rb +28 -0
  57. data/lib/gooddata/cli/hooks.rb +56 -0
  58. data/lib/gooddata/cli/shared.rb +66 -0
  59. data/lib/gooddata/cli/terminal.rb +20 -0
  60. data/lib/gooddata/client.rb +67 -0
  61. data/lib/gooddata/commands/api.rb +64 -0
  62. data/lib/gooddata/commands/auth.rb +107 -0
  63. data/lib/gooddata/commands/base.rb +12 -0
  64. data/lib/gooddata/commands/commands.rb +12 -0
  65. data/lib/gooddata/commands/datasets.rb +148 -0
  66. data/lib/gooddata/commands/datawarehouse.rb +20 -0
  67. data/lib/gooddata/commands/domain.rb +40 -0
  68. data/lib/gooddata/commands/process.rb +67 -0
  69. data/lib/gooddata/commands/project.rb +144 -0
  70. data/lib/gooddata/commands/projects.rb +20 -0
  71. data/lib/gooddata/commands/role.rb +36 -0
  72. data/lib/gooddata/commands/runners.rb +47 -0
  73. data/lib/gooddata/commands/scaffold.rb +69 -0
  74. data/lib/gooddata/commands/user.rb +39 -0
  75. data/lib/gooddata/connection.rb +127 -0
  76. data/lib/gooddata/core/core.rb +12 -0
  77. data/lib/gooddata/core/logging.rb +105 -0
  78. data/lib/gooddata/core/nil_logger.rb +32 -0
  79. data/lib/gooddata/core/project.rb +74 -0
  80. data/lib/gooddata/core/rest.rb +149 -0
  81. data/lib/gooddata/core/user.rb +20 -0
  82. data/lib/gooddata/data/data.rb +12 -0
  83. data/lib/gooddata/data/guesser.rb +122 -0
  84. data/lib/gooddata/exceptions/attr_element_not_found.rb +16 -0
  85. data/lib/gooddata/exceptions/command_failed.rb +11 -0
  86. data/lib/gooddata/exceptions/exceptions.rb +12 -0
  87. data/lib/gooddata/exceptions/execution_limit_exceeded.rb +13 -0
  88. data/lib/gooddata/exceptions/export_clone.rb +4 -0
  89. data/lib/gooddata/exceptions/filter_maqlization.rb +16 -0
  90. data/lib/gooddata/exceptions/import_clone.rb +4 -0
  91. data/lib/gooddata/exceptions/malformed_user.rb +15 -0
  92. data/lib/gooddata/exceptions/maql_execution.rb +16 -0
  93. data/lib/gooddata/exceptions/no_project_error.rb +19 -0
  94. data/lib/gooddata/exceptions/object_migration.rb +32 -0
  95. data/lib/gooddata/exceptions/project_not_found.rb +13 -0
  96. data/lib/gooddata/exceptions/segment_not_empty.rb +18 -0
  97. data/lib/gooddata/exceptions/uncomputable_report.rb +13 -0
  98. data/lib/gooddata/exceptions/user_in_different_domain.rb +15 -0
  99. data/lib/gooddata/exceptions/validation_error.rb +16 -0
  100. data/lib/gooddata/extensions/big_decimal.rb +17 -0
  101. data/lib/gooddata/extensions/class.rb +11 -0
  102. data/lib/gooddata/extensions/enumerable.rb +39 -0
  103. data/lib/gooddata/extensions/extensions.rb +10 -0
  104. data/lib/gooddata/extensions/false.rb +23 -0
  105. data/lib/gooddata/extensions/hash.rb +49 -0
  106. data/lib/gooddata/extensions/integer.rb +5 -0
  107. data/lib/gooddata/extensions/nil.rb +19 -0
  108. data/lib/gooddata/extensions/numeric.rb +15 -0
  109. data/lib/gooddata/extensions/object.rb +31 -0
  110. data/lib/gooddata/extensions/string.rb +7 -0
  111. data/lib/gooddata/extensions/symbol.rb +15 -0
  112. data/lib/gooddata/extensions/true.rb +23 -0
  113. data/lib/gooddata/extract.rb +21 -0
  114. data/lib/gooddata/goodzilla/goodzilla.rb +160 -0
  115. data/lib/gooddata/helpers/auth_helpers.rb +75 -0
  116. data/lib/gooddata/helpers/csv_helper.rb +61 -0
  117. data/lib/gooddata/helpers/data_helper.rb +129 -0
  118. data/lib/gooddata/helpers/erb_helper.rb +23 -0
  119. data/lib/gooddata/helpers/global_helpers.rb +266 -0
  120. data/lib/gooddata/helpers/global_helpers_params.rb +292 -0
  121. data/lib/gooddata/helpers/helpers.rb +10 -0
  122. data/lib/gooddata/lcm/actions/actions.rb +12 -0
  123. data/lib/gooddata/lcm/actions/apply_custom_maql.rb +80 -0
  124. data/lib/gooddata/lcm/actions/associate_clients.rb +87 -0
  125. data/lib/gooddata/lcm/actions/base_action.rb +23 -0
  126. data/lib/gooddata/lcm/actions/collect_ca_metrics.rb +53 -0
  127. data/lib/gooddata/lcm/actions/collect_client_projects.rb +78 -0
  128. data/lib/gooddata/lcm/actions/collect_clients.rb +128 -0
  129. data/lib/gooddata/lcm/actions/collect_data_product.rb +57 -0
  130. data/lib/gooddata/lcm/actions/collect_dynamic_schedule_params.rb +62 -0
  131. data/lib/gooddata/lcm/actions/collect_ldm_objects.rb +56 -0
  132. data/lib/gooddata/lcm/actions/collect_meta.rb +88 -0
  133. data/lib/gooddata/lcm/actions/collect_segment_clients.rb +113 -0
  134. data/lib/gooddata/lcm/actions/collect_segments.rb +72 -0
  135. data/lib/gooddata/lcm/actions/collect_tagged_objects.rb +80 -0
  136. data/lib/gooddata/lcm/actions/collect_users_brick_users.rb +46 -0
  137. data/lib/gooddata/lcm/actions/create_segment_masters.rb +160 -0
  138. data/lib/gooddata/lcm/actions/ensure_data_product.rb +53 -0
  139. data/lib/gooddata/lcm/actions/ensure_release_table.rb +53 -0
  140. data/lib/gooddata/lcm/actions/ensure_segments.rb +32 -0
  141. data/lib/gooddata/lcm/actions/ensure_technical_users_domain.rb +70 -0
  142. data/lib/gooddata/lcm/actions/ensure_technical_users_project.rb +83 -0
  143. data/lib/gooddata/lcm/actions/execute_schedules.rb +128 -0
  144. data/lib/gooddata/lcm/actions/hello_world.rb +41 -0
  145. data/lib/gooddata/lcm/actions/import_object_collections.rb +60 -0
  146. data/lib/gooddata/lcm/actions/print_actions.rb +58 -0
  147. data/lib/gooddata/lcm/actions/print_modes.rb +69 -0
  148. data/lib/gooddata/lcm/actions/print_types.rb +52 -0
  149. data/lib/gooddata/lcm/actions/provision_clients.rb +89 -0
  150. data/lib/gooddata/lcm/actions/purge_clients.rb +58 -0
  151. data/lib/gooddata/lcm/actions/rename_existing_client_projects.rb +70 -0
  152. data/lib/gooddata/lcm/actions/segments_filter.rb +50 -0
  153. data/lib/gooddata/lcm/actions/synchronize_attribute_drillpaths.rb +64 -0
  154. data/lib/gooddata/lcm/actions/synchronize_cas.rb +72 -0
  155. data/lib/gooddata/lcm/actions/synchronize_clients.rb +94 -0
  156. data/lib/gooddata/lcm/actions/synchronize_color_palette.rb +67 -0
  157. data/lib/gooddata/lcm/actions/synchronize_etls_in_segment.rb +155 -0
  158. data/lib/gooddata/lcm/actions/synchronize_label_types.rb +64 -0
  159. data/lib/gooddata/lcm/actions/synchronize_ldm.rb +82 -0
  160. data/lib/gooddata/lcm/actions/synchronize_meta.rb +52 -0
  161. data/lib/gooddata/lcm/actions/synchronize_new_segments.rb +61 -0
  162. data/lib/gooddata/lcm/actions/synchronize_processes.rb +66 -0
  163. data/lib/gooddata/lcm/actions/synchronize_schedules.rb +91 -0
  164. data/lib/gooddata/lcm/actions/synchronize_tag_objects.rb +64 -0
  165. data/lib/gooddata/lcm/actions/synchronize_user_filters.rb +210 -0
  166. data/lib/gooddata/lcm/actions/synchronize_user_groups.rb +53 -0
  167. data/lib/gooddata/lcm/actions/synchronize_users.rb +336 -0
  168. data/lib/gooddata/lcm/actions/update_release_table.rb +77 -0
  169. data/lib/gooddata/lcm/data/create_lcm_release.sql.erb +6 -0
  170. data/lib/gooddata/lcm/data/insert_into_lcm_release.sql.erb +11 -0
  171. data/lib/gooddata/lcm/data/select_from_lcm_release.sql.erb +8 -0
  172. data/lib/gooddata/lcm/data/update_lcm_release.sql.erb +7 -0
  173. data/lib/gooddata/lcm/dsl/dsl.rb +50 -0
  174. data/lib/gooddata/lcm/dsl/params_dsl.rb +61 -0
  175. data/lib/gooddata/lcm/dsl/type_dsl.rb +62 -0
  176. data/lib/gooddata/lcm/helpers/check_helper.rb +41 -0
  177. data/lib/gooddata/lcm/helpers/helpers.rb +12 -0
  178. data/lib/gooddata/lcm/helpers/tags_helper.rb +36 -0
  179. data/lib/gooddata/lcm/lcm.rb +325 -0
  180. data/lib/gooddata/lcm/lcm2.rb +400 -0
  181. data/lib/gooddata/lcm/types/base_type.rb +29 -0
  182. data/lib/gooddata/lcm/types/class/ads_client.rb +35 -0
  183. data/lib/gooddata/lcm/types/class/class.rb +21 -0
  184. data/lib/gooddata/lcm/types/class/gd_client.rb +35 -0
  185. data/lib/gooddata/lcm/types/class/types.rb +12 -0
  186. data/lib/gooddata/lcm/types/complex/complex.rb +33 -0
  187. data/lib/gooddata/lcm/types/complex/release_query.rb +35 -0
  188. data/lib/gooddata/lcm/types/complex/segment.rb +40 -0
  189. data/lib/gooddata/lcm/types/complex/synchronization_info.rb +35 -0
  190. data/lib/gooddata/lcm/types/complex/tokens.rb +31 -0
  191. data/lib/gooddata/lcm/types/complex/types.rb +12 -0
  192. data/lib/gooddata/lcm/types/complex/update_preference.rb +38 -0
  193. data/lib/gooddata/lcm/types/complex/users_brick_config.rb +32 -0
  194. data/lib/gooddata/lcm/types/param.rb +16 -0
  195. data/lib/gooddata/lcm/types/scalar/bool.rb +22 -0
  196. data/lib/gooddata/lcm/types/scalar/hash.rb +22 -0
  197. data/lib/gooddata/lcm/types/scalar/integer.rb +22 -0
  198. data/lib/gooddata/lcm/types/scalar/object.rb +22 -0
  199. data/lib/gooddata/lcm/types/scalar/string.rb +22 -0
  200. data/lib/gooddata/lcm/types/scalar/types.rb +12 -0
  201. data/lib/gooddata/lcm/types/special/array.rb +33 -0
  202. data/lib/gooddata/lcm/types/special/enum.rb +15 -0
  203. data/lib/gooddata/lcm/types/special/types.rb +12 -0
  204. data/lib/gooddata/lcm/types/types.rb +12 -0
  205. data/lib/gooddata/lcm/user_bricks_helper.rb +32 -0
  206. data/lib/gooddata/mixins/author.rb +26 -0
  207. data/lib/gooddata/mixins/content_getter.rb +15 -0
  208. data/lib/gooddata/mixins/content_property_reader.rb +17 -0
  209. data/lib/gooddata/mixins/content_property_writer.rb +17 -0
  210. data/lib/gooddata/mixins/contributor.rb +20 -0
  211. data/lib/gooddata/mixins/data_getter.rb +15 -0
  212. data/lib/gooddata/mixins/data_property_reader.rb +19 -0
  213. data/lib/gooddata/mixins/data_property_writer.rb +19 -0
  214. data/lib/gooddata/mixins/inspector.rb +53 -0
  215. data/lib/gooddata/mixins/is_attribute.rb +17 -0
  216. data/lib/gooddata/mixins/is_dimension.rb +17 -0
  217. data/lib/gooddata/mixins/is_fact.rb +17 -0
  218. data/lib/gooddata/mixins/is_folder.rb +11 -0
  219. data/lib/gooddata/mixins/is_label.rb +19 -0
  220. data/lib/gooddata/mixins/links.rb +15 -0
  221. data/lib/gooddata/mixins/md_finders.rb +79 -0
  222. data/lib/gooddata/mixins/md_grantees.rb +42 -0
  223. data/lib/gooddata/mixins/md_id_to_uri.rb +39 -0
  224. data/lib/gooddata/mixins/md_json.rb +15 -0
  225. data/lib/gooddata/mixins/md_lock.rb +87 -0
  226. data/lib/gooddata/mixins/md_object_id.rb +15 -0
  227. data/lib/gooddata/mixins/md_object_indexer.rb +74 -0
  228. data/lib/gooddata/mixins/md_object_query.rb +134 -0
  229. data/lib/gooddata/mixins/md_relations.rb +43 -0
  230. data/lib/gooddata/mixins/meta_getter.rb +17 -0
  231. data/lib/gooddata/mixins/meta_property_reader.rb +19 -0
  232. data/lib/gooddata/mixins/meta_property_writer.rb +19 -0
  233. data/lib/gooddata/mixins/mixins.rb +19 -0
  234. data/lib/gooddata/mixins/not_attribute.rb +17 -0
  235. data/lib/gooddata/mixins/not_exportable.rb +15 -0
  236. data/lib/gooddata/mixins/not_fact.rb +17 -0
  237. data/lib/gooddata/mixins/not_group.rb +17 -0
  238. data/lib/gooddata/mixins/not_label.rb +19 -0
  239. data/lib/gooddata/mixins/not_metric.rb +19 -0
  240. data/lib/gooddata/mixins/obj_id.rb +15 -0
  241. data/lib/gooddata/mixins/rest_getters.rb +17 -0
  242. data/lib/gooddata/mixins/rest_resource.rb +47 -0
  243. data/lib/gooddata/mixins/root_key_getter.rb +15 -0
  244. data/lib/gooddata/mixins/root_key_setter.rb +15 -0
  245. data/lib/gooddata/mixins/timestamps.rb +19 -0
  246. data/lib/gooddata/mixins/to_json.rb +11 -0
  247. data/lib/gooddata/mixins/uri_getter.rb +9 -0
  248. data/lib/gooddata/models/ads_output_stage.rb +85 -0
  249. data/lib/gooddata/models/automated_data_distribution.rb +36 -0
  250. data/lib/gooddata/models/blueprint/anchor_field.rb +65 -0
  251. data/lib/gooddata/models/blueprint/attribute_field.rb +45 -0
  252. data/lib/gooddata/models/blueprint/blueprint.rb +11 -0
  253. data/lib/gooddata/models/blueprint/blueprint_field.rb +70 -0
  254. data/lib/gooddata/models/blueprint/dashboard_builder.rb +30 -0
  255. data/lib/gooddata/models/blueprint/dataset_blueprint.rb +455 -0
  256. data/lib/gooddata/models/blueprint/date_dimension.rb +20 -0
  257. data/lib/gooddata/models/blueprint/fact_field.rb +20 -0
  258. data/lib/gooddata/models/blueprint/label_field.rb +47 -0
  259. data/lib/gooddata/models/blueprint/project_blueprint.rb +791 -0
  260. data/lib/gooddata/models/blueprint/project_builder.rb +103 -0
  261. data/lib/gooddata/models/blueprint/reference_field.rb +43 -0
  262. data/lib/gooddata/models/blueprint/schema_blueprint.rb +160 -0
  263. data/lib/gooddata/models/blueprint/schema_builder.rb +89 -0
  264. data/lib/gooddata/models/blueprint/to_manifest.rb +185 -0
  265. data/lib/gooddata/models/blueprint/to_wire.rb +173 -0
  266. data/lib/gooddata/models/channel_configuration.rb +112 -0
  267. data/lib/gooddata/models/client.rb +236 -0
  268. data/lib/gooddata/models/client_synchronization_result.rb +31 -0
  269. data/lib/gooddata/models/client_synchronization_result_details.rb +41 -0
  270. data/lib/gooddata/models/data_product.rb +149 -0
  271. data/lib/gooddata/models/datawarehouse.rb +114 -0
  272. data/lib/gooddata/models/domain.rb +505 -0
  273. data/lib/gooddata/models/execution.rb +115 -0
  274. data/lib/gooddata/models/execution_detail.rb +81 -0
  275. data/lib/gooddata/models/from_wire.rb +173 -0
  276. data/lib/gooddata/models/invitation.rb +75 -0
  277. data/lib/gooddata/models/links.rb +50 -0
  278. data/lib/gooddata/models/membership.rb +441 -0
  279. data/lib/gooddata/models/metadata.rb +324 -0
  280. data/lib/gooddata/models/metadata/attribute.rb +155 -0
  281. data/lib/gooddata/models/metadata/dashboard.rb +120 -0
  282. data/lib/gooddata/models/metadata/dashboard/dashboard_item.rb +76 -0
  283. data/lib/gooddata/models/metadata/dashboard/filter_apply_item.rb +37 -0
  284. data/lib/gooddata/models/metadata/dashboard/filter_item.rb +64 -0
  285. data/lib/gooddata/models/metadata/dashboard/geo_chart_item.rb +56 -0
  286. data/lib/gooddata/models/metadata/dashboard/headline_item.rb +56 -0
  287. data/lib/gooddata/models/metadata/dashboard/iframe_item.rb +46 -0
  288. data/lib/gooddata/models/metadata/dashboard/report_item.rb +92 -0
  289. data/lib/gooddata/models/metadata/dashboard/text_item.rb +55 -0
  290. data/lib/gooddata/models/metadata/dashboard_tab.rb +141 -0
  291. data/lib/gooddata/models/metadata/dataset.rb +67 -0
  292. data/lib/gooddata/models/metadata/dimension.rb +57 -0
  293. data/lib/gooddata/models/metadata/fact.rb +51 -0
  294. data/lib/gooddata/models/metadata/folder.rb +49 -0
  295. data/lib/gooddata/models/metadata/label.rb +128 -0
  296. data/lib/gooddata/models/metadata/metadata.rb +12 -0
  297. data/lib/gooddata/models/metadata/metric.rb +206 -0
  298. data/lib/gooddata/models/metadata/report.rb +268 -0
  299. data/lib/gooddata/models/metadata/report_definition.rb +272 -0
  300. data/lib/gooddata/models/metadata/scheduled_mail.rb +277 -0
  301. data/lib/gooddata/models/metadata/scheduled_mail/dashboard_attachment.rb +62 -0
  302. data/lib/gooddata/models/metadata/scheduled_mail/report_attachment.rb +64 -0
  303. data/lib/gooddata/models/metadata/variable.rb +96 -0
  304. data/lib/gooddata/models/model.rb +293 -0
  305. data/lib/gooddata/models/models.rb +12 -0
  306. data/lib/gooddata/models/module_constants.rb +31 -0
  307. data/lib/gooddata/models/notification_rule.rb +113 -0
  308. data/lib/gooddata/models/process.rb +371 -0
  309. data/lib/gooddata/models/profile.rb +451 -0
  310. data/lib/gooddata/models/project.rb +2030 -0
  311. data/lib/gooddata/models/project_creator.rb +209 -0
  312. data/lib/gooddata/models/project_log_formatter.rb +204 -0
  313. data/lib/gooddata/models/project_metadata.rb +67 -0
  314. data/lib/gooddata/models/project_role.rb +79 -0
  315. data/lib/gooddata/models/report_data_result.rb +270 -0
  316. data/lib/gooddata/models/schedule.rb +538 -0
  317. data/lib/gooddata/models/segment.rb +274 -0
  318. data/lib/gooddata/models/style_setting.rb +62 -0
  319. data/lib/gooddata/models/subscription.rb +188 -0
  320. data/lib/gooddata/models/tab_builder.rb +27 -0
  321. data/lib/gooddata/models/user_filters/mandatory_user_filter.rb +76 -0
  322. data/lib/gooddata/models/user_filters/user_filter.rb +101 -0
  323. data/lib/gooddata/models/user_filters/user_filter_builder.rb +553 -0
  324. data/lib/gooddata/models/user_filters/user_filters.rb +13 -0
  325. data/lib/gooddata/models/user_filters/variable_user_filter.rb +33 -0
  326. data/lib/gooddata/models/user_group.rb +250 -0
  327. data/lib/gooddata/rest/README.md +37 -0
  328. data/lib/gooddata/rest/client.rb +396 -0
  329. data/lib/gooddata/rest/connection.rb +776 -0
  330. data/lib/gooddata/rest/object.rb +69 -0
  331. data/lib/gooddata/rest/object_factory.rb +51 -0
  332. data/lib/gooddata/rest/resource.rb +27 -0
  333. data/lib/gooddata/rest/rest.rb +24 -0
  334. data/lib/gooddata/version.rb +23 -0
  335. data/lib/templates/bricks/brick.rb.erb +7 -0
  336. data/lib/templates/bricks/main.rb.erb +5 -0
  337. data/lib/templates/project/Goodfile.erb +4 -0
  338. data/lib/templates/project/data/commits.csv +4 -0
  339. data/lib/templates/project/data/devs.csv +4 -0
  340. data/lib/templates/project/data/repos.csv +3 -0
  341. data/lib/templates/project/model/model.rb.erb +20 -0
  342. data/spec/.rubocop.yml +16 -0
  343. data/spec/bricks/bricks_spec.rb +110 -0
  344. data/spec/bricks/default-config.json +8 -0
  345. data/spec/data/.gooddata +4 -0
  346. data/spec/data/blueprints/additional_dataset_module.json +32 -0
  347. data/spec/data/blueprints/attribute_sort_order_blueprint.json +72 -0
  348. data/spec/data/blueprints/big_blueprint_not_pruned.json +2079 -0
  349. data/spec/data/blueprints/invalid_blueprint.json +103 -0
  350. data/spec/data/blueprints/m_n_model.json +104 -0
  351. data/spec/data/blueprints/model_module.json +25 -0
  352. data/spec/data/blueprints/test_blueprint.json +39 -0
  353. data/spec/data/blueprints/test_project_model_spec.json +106 -0
  354. data/spec/data/cc/data/source/commits.csv +4 -0
  355. data/spec/data/cc/data/source/devs.csv +4 -0
  356. data/spec/data/cc/data/source/repos.csv +3 -0
  357. data/spec/data/cc/devel.prm +0 -0
  358. data/spec/data/cc/graph/graph.grf +11 -0
  359. data/spec/data/cc/workspace.prm +19 -0
  360. data/spec/data/column_based_permissions.csv +7 -0
  361. data/spec/data/column_based_permissions2.csv +6 -0
  362. data/spec/data/dynamic_schedule_params_table.csv +7 -0
  363. data/spec/data/gd_gse_data_blueprint.json +1371 -0
  364. data/spec/data/gd_gse_data_manifest.json +1424 -0
  365. data/spec/data/gd_gse_data_model.json +1772 -0
  366. data/spec/data/gooddata_version_process/gooddata_version.rb +9 -0
  367. data/spec/data/gooddata_version_process/gooddata_version.zip +0 -0
  368. data/spec/data/hello_world_process/hello_world.rb +9 -0
  369. data/spec/data/hello_world_process/hello_world.zip +0 -0
  370. data/spec/data/line_based_permissions.csv +3 -0
  371. data/spec/data/manifests/test_blueprint.json +32 -0
  372. data/spec/data/manifests/test_project.json +107 -0
  373. data/spec/data/reports/left_attr_report.json +108 -0
  374. data/spec/data/reports/metric_only_one_line.json +83 -0
  375. data/spec/data/reports/report_1.json +197 -0
  376. data/spec/data/reports/top_attr_report.json +108 -0
  377. data/spec/data/ruby_params_process/ruby_params.rb +9 -0
  378. data/spec/data/ruby_process/deep_files/deep_stuff.txt +1 -0
  379. data/spec/data/ruby_process/process.rb +8 -0
  380. data/spec/data/ruby_process/stuff.txt +1 -0
  381. data/spec/data/superfluous_titles_view.json +81 -0
  382. data/spec/data/test-ci-data.csv +2 -0
  383. data/spec/data/users.csv +12 -0
  384. data/spec/data/wire_models/attribute_sort_by_model.json +73 -0
  385. data/spec/data/wire_models/model_view.json +1775 -0
  386. data/spec/data/wire_models/nu_model.json +3046 -0
  387. data/spec/data/wire_models/test_blueprint.json +66 -0
  388. data/spec/data/wire_test_project.json +150 -0
  389. data/spec/data/workspace_table.csv +3 -0
  390. data/spec/environment/default.rb +43 -0
  391. data/spec/environment/development.rb +32 -0
  392. data/spec/environment/environment.rb +38 -0
  393. data/spec/environment/production.rb +27 -0
  394. data/spec/environment/staging.rb +33 -0
  395. data/spec/environment/testing.rb +32 -0
  396. data/spec/helpers/blueprint_helper.rb +27 -0
  397. data/spec/helpers/cli_helper.rb +38 -0
  398. data/spec/helpers/connection_helper.rb +43 -0
  399. data/spec/helpers/crypto_helper.rb +19 -0
  400. data/spec/helpers/csv_helper.rb +20 -0
  401. data/spec/helpers/process_helper.rb +35 -0
  402. data/spec/helpers/project_helper.rb +74 -0
  403. data/spec/helpers/schedule_helper.rb +33 -0
  404. data/spec/helpers/spec_helper.rb +17 -0
  405. data/spec/integration/ads_output_stage_spec.rb +45 -0
  406. data/spec/integration/blueprint_updates_spec.rb +107 -0
  407. data/spec/integration/blueprint_with_ca_spec.rb +56 -0
  408. data/spec/integration/blueprint_with_grain_spec.rb +74 -0
  409. data/spec/integration/channel_configuration_spec.rb +67 -0
  410. data/spec/integration/clients_spec.rb +164 -0
  411. data/spec/integration/command_datawarehouse_spec.rb +45 -0
  412. data/spec/integration/command_projects_spec.rb +32 -0
  413. data/spec/integration/commands/command_projects_spec.rb +22 -0
  414. data/spec/integration/core/connection_spec.rb +56 -0
  415. data/spec/integration/core/logging_spec.rb +130 -0
  416. data/spec/integration/core/project_spec.rb +54 -0
  417. data/spec/integration/create_from_template_spec.rb +29 -0
  418. data/spec/integration/create_project_spec.rb +27 -0
  419. data/spec/integration/date_dim_switch_spec.rb +150 -0
  420. data/spec/integration/deprecated_load_spec.rb +60 -0
  421. data/spec/integration/full_process_schedule_spec.rb +367 -0
  422. data/spec/integration/full_project_spec.rb +592 -0
  423. data/spec/integration/helpers_spec.rb +16 -0
  424. data/spec/integration/lcm_spec.rb +54 -0
  425. data/spec/integration/mixins/id_to_uri_spec.rb +44 -0
  426. data/spec/integration/models/data_product_spec.rb +71 -0
  427. data/spec/integration/models/domain_spec.rb +162 -0
  428. data/spec/integration/models/invitation_spec.rb +17 -0
  429. data/spec/integration/models/membership_spec.rb +127 -0
  430. data/spec/integration/models/metadata/report_spec.rb +54 -0
  431. data/spec/integration/models/params_spec.rb +118 -0
  432. data/spec/integration/models/profile_spec.rb +210 -0
  433. data/spec/integration/models/project_role_spec.rb +94 -0
  434. data/spec/integration/models/project_spec.rb +225 -0
  435. data/spec/integration/models/schedule_spec.rb +485 -0
  436. data/spec/integration/models/unit_project_spec.rb +130 -0
  437. data/spec/integration/over_to_user_filters_spec.rb +98 -0
  438. data/spec/integration/partial_md_export_import_spec.rb +41 -0
  439. data/spec/integration/project_spec.rb +381 -0
  440. data/spec/integration/rest_spec.rb +214 -0
  441. data/spec/integration/schedule_spec.rb +613 -0
  442. data/spec/integration/segments_spec.rb +100 -0
  443. data/spec/integration/subscription_spec.rb +88 -0
  444. data/spec/integration/urn_date_dim_spec.rb +53 -0
  445. data/spec/integration/user_filters_spec.rb +306 -0
  446. data/spec/integration/user_group_spec.rb +147 -0
  447. data/spec/integration/variables_spec.rb +189 -0
  448. data/spec/logging_in_logging_out_spec.rb +91 -0
  449. data/spec/spec_helper.rb +66 -0
  450. data/spec/unit/actions/associate_clients_spec.rb +47 -0
  451. data/spec/unit/actions/collect_client_projects_spec.rb +47 -0
  452. data/spec/unit/actions/collect_clients_spec.rb +65 -0
  453. data/spec/unit/actions/collect_data_product_spec.rb +56 -0
  454. data/spec/unit/actions/collect_dynamic_schedule_params_spec.rb +56 -0
  455. data/spec/unit/actions/collect_meta_spec.rb +88 -0
  456. data/spec/unit/actions/collect_segment_clients_spec.rb +81 -0
  457. data/spec/unit/actions/collect_tagged_objects_spec.rb +126 -0
  458. data/spec/unit/actions/collect_users_brick_users_spec.rb +36 -0
  459. data/spec/unit/actions/create_segment_masters_spec.rb +64 -0
  460. data/spec/unit/actions/ensure_data_product_spec.rb +38 -0
  461. data/spec/unit/actions/ensure_technical_users_domain_spec.rb +51 -0
  462. data/spec/unit/actions/ensure_technical_users_project_spec.rb +72 -0
  463. data/spec/unit/actions/execute_schedules_spec.rb +94 -0
  464. data/spec/unit/actions/provision_clients_spec.rb +45 -0
  465. data/spec/unit/actions/purge_clients_spec.rb +47 -0
  466. data/spec/unit/actions/rename_existing_client_projects_spec.rb +54 -0
  467. data/spec/unit/actions/segments_filter_spec.rb +46 -0
  468. data/spec/unit/actions/shared_examples_for_user_actions.rb +26 -0
  469. data/spec/unit/actions/synchronize_cas_spec.rb +58 -0
  470. data/spec/unit/actions/synchronize_etls_in_segment_spec.rb +212 -0
  471. data/spec/unit/actions/synchronize_ldm_spec.rb +57 -0
  472. data/spec/unit/actions/synchronize_user_filters_spec.rb +146 -0
  473. data/spec/unit/actions/synchronize_user_groups_spec.rb +49 -0
  474. data/spec/unit/actions/synchronize_users_spec.rb +134 -0
  475. data/spec/unit/bricks/bricks_spec.rb +34 -0
  476. data/spec/unit/bricks/middleware/aws_middelware_spec.rb +98 -0
  477. data/spec/unit/bricks/middleware/bench_middleware_spec.rb +15 -0
  478. data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +15 -0
  479. data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +15 -0
  480. data/spec/unit/bricks/middleware/logger_middleware_spec.rb +30 -0
  481. data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +15 -0
  482. data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +15 -0
  483. data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +15 -0
  484. data/spec/unit/cli/cli_spec.rb +17 -0
  485. data/spec/unit/cli/commands/cmd_auth_spec.rb +17 -0
  486. data/spec/unit/core/nil_logger_spec.rb +13 -0
  487. data/spec/unit/extensions/hash_spec.rb +22 -0
  488. data/spec/unit/godzilla/goodzilla_spec.rb +74 -0
  489. data/spec/unit/helpers/csv_helper_spec.rb +22 -0
  490. data/spec/unit/helpers/data_helper_spec.rb +67 -0
  491. data/spec/unit/helpers/global_helpers_spec.rb +264 -0
  492. data/spec/unit/helpers_spec.rb +254 -0
  493. data/spec/unit/lcm/user_bricks_helper_spec.rb +58 -0
  494. data/spec/unit/models/blueprint/attribute_sort_by_spec.rb +20 -0
  495. data/spec/unit/models/blueprint/attributes_spec.rb +28 -0
  496. data/spec/unit/models/blueprint/dataset_spec.rb +120 -0
  497. data/spec/unit/models/blueprint/labels_spec.rb +43 -0
  498. data/spec/unit/models/blueprint/project_blueprint_spec.rb +642 -0
  499. data/spec/unit/models/blueprint/reference_spec.rb +28 -0
  500. data/spec/unit/models/blueprint/schema_builder_spec.rb +36 -0
  501. data/spec/unit/models/blueprint/to_wire_spec.rb +195 -0
  502. data/spec/unit/models/execution_spec.rb +109 -0
  503. data/spec/unit/models/from_wire_spec.rb +301 -0
  504. data/spec/unit/models/metadata_spec.rb +140 -0
  505. data/spec/unit/models/metric_spec.rb +129 -0
  506. data/spec/unit/models/model_spec.rb +77 -0
  507. data/spec/unit/models/project_creator_spec.rb +90 -0
  508. data/spec/unit/models/project_spec.rb +94 -0
  509. data/spec/unit/models/report_result_data_spec.rb +194 -0
  510. data/spec/unit/models/to_manifest_spec.rb +136 -0
  511. data/spec/unit/models/user_filters/user_filter_builder_spec.rb +110 -0
  512. data/spec/unit/models/user_filters_spec.rb +95 -0
  513. data/spec/unit/models/variable_spec.rb +280 -0
  514. data/spec/unit/rest/polling_spec.rb +101 -0
  515. data/spec/unit/rest/resource_spec.rb +10 -0
  516. data/yard-server.sh +3 -0
  517. metadata +1207 -0
@@ -0,0 +1,147 @@
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
+ describe GoodData::UserGroup do
8
+ before(:all) do
9
+ @bulk_size = 3
10
+
11
+ @user_group_name = 'My Test Group'
12
+ @user_group_description = 'My Test Description'
13
+
14
+ @client = ConnectionHelper.create_default_connection
15
+ @project = @client.create_project(title: 'UserGroup Testing Project', token: ConnectionHelper::GD_PROJECT_TOKEN, environment: ProjectHelper::ENVIRONMENT)
16
+ @domain = @client.domain(ConnectionHelper::DEFAULT_DOMAIN)
17
+
18
+ users = (1..5).to_a.map do
19
+ {
20
+ user: ProjectHelper.create_random_user(@client),
21
+ role: 'Admin'
22
+ }
23
+ end
24
+
25
+ @project.add_users(users)
26
+ @users = @project.users.to_a
27
+
28
+ @group = @project.add_user_group(:name => @user_group_name, :description => @user_group_description)
29
+ end
30
+
31
+ after(:all) do
32
+ # @group && @group.delete
33
+ @project && @project.delete
34
+ @client.disconnect
35
+ end
36
+
37
+ describe '#[]' do
38
+ it 'Should list user groups as Array' do
39
+ res = GoodData::UserGroup[:all, :client => @client, :project => @project]
40
+ expect(res).to be_kind_of(Array)
41
+ end
42
+ end
43
+
44
+ describe '#add_members' do
45
+ it 'Should add member' do
46
+ users = @users.to_a.take(@bulk_size)
47
+
48
+ old_count = @group.members.to_a.length
49
+ @group.add_member(users)
50
+
51
+ new_count = @group.members.to_a.length
52
+ expect(new_count).to eq(old_count + 1)
53
+
54
+ group_members = @group.members.to_a
55
+
56
+ users.each do |user|
57
+ res = group_members.find do |group_member|
58
+ group_member.uri == user.uri
59
+ end
60
+ expect(res).to be_a_kind_of(GoodData::Profile)
61
+ end
62
+ end
63
+ end
64
+
65
+ describe '#set_members' do
66
+ it 'Should set new members' do
67
+ users = @users.to_a.take(@bulk_size)
68
+
69
+ @group.set_members(users)
70
+
71
+ group_members = @group.members.to_a
72
+ expect(group_members.length).to eq users.length
73
+ end
74
+ end
75
+
76
+ describe '#remove_members' do
77
+ it 'Should remove existing members' do
78
+ users = @users.to_a.take(@bulk_size)
79
+
80
+ @group.set_members(users)
81
+
82
+ group_members = @group.members.to_a
83
+ expect(group_members.length).to eq users.length
84
+
85
+ @group.remove_members(users)
86
+ group_members = @group.members.to_a
87
+ expect(group_members.length).to eq 0
88
+ end
89
+ end
90
+
91
+ describe '#members' do
92
+ it 'Should return members as array' do
93
+ expect(@group.members).to be_a_kind_of(Enumerator)
94
+
95
+ members = @group.members.to_a
96
+ expect(members).to be_kind_of(Array)
97
+ end
98
+ end
99
+
100
+ describe '#name' do
101
+ it 'Should return name of user group' do
102
+ expect(@group.name).to eq @user_group_name
103
+ end
104
+ end
105
+
106
+ describe '#name=' do
107
+ it 'Should assign name of user group' do
108
+ new_name = 'This is new name'
109
+ @group.name = new_name
110
+ expect(@group.name).to eq new_name
111
+ end
112
+ end
113
+
114
+ describe '#description' do
115
+ it 'Should return name of user group' do
116
+ expect(@group.description).to eq @user_group_description
117
+ end
118
+ end
119
+
120
+ describe '#description=' do
121
+ it 'Should assign description of user group' do
122
+ new_description = 'This is new description'
123
+ @group.description = new_description
124
+ expect(@group.description).to eq new_description
125
+ end
126
+ end
127
+
128
+ describe '#save' do
129
+ it 'updates existing group' do
130
+ new_description = 'This is new description'
131
+ @group.description = new_description
132
+ @group.save
133
+ @group = @project.user_groups(@group.obj_id)
134
+ expect(@group.description).to eq new_description
135
+ end
136
+ end
137
+
138
+ describe '.create' do
139
+ it 'sets client attribute' do
140
+ expect(@group.client).not_to be_nil
141
+ end
142
+
143
+ it 'sets project attribute' do
144
+ expect(@group.project).not_to be_nil
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,189 @@
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'
8
+
9
+ describe "Variables implementation", :constraint => 'slow' do
10
+ before(:all) do
11
+ @spec = JSON.parse(File.read("./spec/data/blueprints/test_project_model_spec.json"), :symbolize_names => true)
12
+ @client = ConnectionHelper.create_default_connection
13
+ blueprint = GoodData::Model::ProjectBlueprint.new(@spec)
14
+ @project = @client.create_project_from_blueprint(blueprint, :token => ConnectionHelper::GD_PROJECT_TOKEN, environment: ProjectHelper::ENVIRONMENT)
15
+ @domain = @client.domain(ConnectionHelper::DEFAULT_DOMAIN)
16
+
17
+ @label = GoodData::Attribute.find_first_by_title('Dev', client: @client, project: @project).label_by_name('email')
18
+
19
+ commits_data = [
20
+ %w(lines_changed committed_on dev_id repo_id),
21
+ [1, "01/01/2014", 1, 1],
22
+ [3, "01/02/2014", 2, 2],
23
+ [5, "05/02/2014", 3, 1]
24
+ ]
25
+ @project.upload(commits_data, blueprint, 'dataset.commits')
26
+
27
+ devs_data = [
28
+ %w(dev_id email),
29
+ [1, "tomas@gooddata.com"],
30
+ [2, "petr@gooddata.com"],
31
+ [3, "jirka@gooddata.com"]
32
+ ]
33
+ @project.upload(devs_data, blueprint, 'dataset.devs')
34
+
35
+ @variable = @project.create_variable(title: 'uaaa', attribute: @label.attribute).save
36
+ end
37
+
38
+ after(:all) do
39
+ @project.delete if @project
40
+ end
41
+
42
+ after(:each) do
43
+ @variable.user_values.select { |x| x.level == :user }.pmap(&:delete)
44
+ end
45
+
46
+ it "should create a variable filter" do
47
+ filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, 'tomas@gooddata.com', 'jirka@gooddata.com']]
48
+
49
+ metric = @project.create_metric("SELECT SUM(#\"Lines Changed\")", :title => 'x')
50
+
51
+ # [jirka@gooddata.com | petr@gooddata.com | tomas@gooddata.com]
52
+ # [5.0 | 3.0 | 1.0 ]
53
+ @project.add_variable_permissions(filters, @variable)
54
+ r = @project.compute_report(left: [metric], top: [@label.attribute], filters: [@variable])
55
+ expect(r.include_column?(['tomas@gooddata.com', 1])).to be_truthy
56
+ expect(r.include_column?(['jirka@gooddata.com', 5])).to be_truthy
57
+ expect(r.include_column?(['petr@gooddata.com', 3])).to be_falsy
58
+
59
+ r = @project.compute_report(left: [metric], top: [@label.attribute])
60
+ expect(r.include_column?(['tomas@gooddata.com', 1])).to be_truthy
61
+ expect(r.include_column?(['jirka@gooddata.com', 5])).to be_truthy
62
+ expect(r.include_column?(['petr@gooddata.com', 3])).to be_truthy
63
+ end
64
+
65
+ it "should fail when asked to set a user not in project. No filters should be set up." do
66
+ filters = [
67
+ ['nonexistent_user@gooddata.com', @label.uri, "tomas@gooddata.com"],
68
+ [ConnectionHelper::DEFAULT_USERNAME, @label.uri, "tomas@gooddata.com"]
69
+ ]
70
+ expect do
71
+ @project.add_variable_permissions(filters, @variable)
72
+ end.to raise_error
73
+ expect(@variable.user_values.count).to eq 0
74
+ end
75
+
76
+ it "should pass and set users that are in the projects" do
77
+ filters = [
78
+ [ConnectionHelper::DEFAULT_USERNAME, @label.uri, "tomas@gooddata.com"]
79
+ ]
80
+ @project.add_variable_permissions(filters, @variable)
81
+ expect(@variable.user_values.count).to eq 1
82
+ end
83
+
84
+ it "should pass and set only users that are in the projects if asked" do
85
+ filters = [
86
+ ['nonexistent_user@gooddata.com', @label.uri, 'tomas@gooddata.com'],
87
+ [ConnectionHelper::DEFAULT_USERNAME, @label.uri, 'tomas@gooddata.com']
88
+ ]
89
+ @project.add_variable_permissions(filters, @variable, users_must_exist: false)
90
+ expect(@variable.user_values.count).to eq 1
91
+ end
92
+
93
+ it "should fail when asked to set a value not in the proejct" do
94
+ filters = [
95
+ [ConnectionHelper::DEFAULT_USERNAME, @label.uri, '%^&*( nonexistent value', 'tomas@gooddata.com'],
96
+ [ConnectionHelper::DEFAULT_USERNAME, @label.uri, 'tomas@gooddata.com']
97
+ ]
98
+ expect do
99
+ @project.add_variable_permissions(filters, @variable)
100
+ end.to raise_error
101
+ expect(@variable.user_values.count).to eq 0
102
+ end
103
+
104
+ it "should add a filter with nonexistent values when asked" do
105
+ filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, '%^&*( nonexistent value', 'jirka@gooddata.com']]
106
+ @project.add_variable_permissions(filters, @variable, ignore_missing_values: true)
107
+
108
+ expect(@variable.user_values.pmap(&:pretty_expression)).to eq ["[Dev] IN ([jirka@gooddata.com])"]
109
+ expect(@variable.user_values.count).to eq 1
110
+ end
111
+
112
+ it "should be able to print data permissions in a human readable form" do
113
+ filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, "tomas@gooddata.com"]]
114
+ @project.add_variable_permissions(filters, @variable)
115
+ perms = @variable.user_values
116
+ pretty = perms.pmap { |f| [f.related.login, f.pretty_expression] }
117
+ expect(perms.first.related).to eq @client.user
118
+ expect(pretty).to eq [[ConnectionHelper::DEFAULT_USERNAME, "[Dev] IN ([tomas@gooddata.com])"]]
119
+ end
120
+
121
+ it "sets up mandatory users based on the state given as an end state by default." do
122
+ # first let's prepare some user filters
123
+ user_with_already_set_up_filter = @project.get_user(ConnectionHelper::DEFAULT_USERNAME)
124
+
125
+ filters = [
126
+ [user_with_already_set_up_filter.login, @label.uri, "tomas@gooddata.com"]
127
+ ]
128
+ @project.add_variable_permissions(filters, @variable)
129
+ expect(@variable.user_values.map { |f| [f.related.login, f.pretty_expression] })
130
+ .to eq [[ConnectionHelper::DEFAULT_USERNAME, "[Dev] IN ([tomas@gooddata.com])"]]
131
+
132
+ # Now let's add user filter to a different user. If we do not explicitely state that
133
+ # user_with_already_set_up_filter should keep his filter it will be removed
134
+ another_user = @domain.users.find { |u| u.login != ConnectionHelper::DEFAULT_USERNAME }
135
+ @project.add_user(another_user, 'Admin', domain: @domain)
136
+ new_filters = [
137
+ [another_user.login, @label.uri, "tomas@gooddata.com"]
138
+ ]
139
+ @project.add_variable_permissions(new_filters, @variable)
140
+ expect(@variable.user_values.map { |f| [f.related.login, f.pretty_expression] })
141
+ .to eq [[another_user.login, "[Dev] IN ([tomas@gooddata.com])"]]
142
+ end
143
+
144
+ it "should set up false if all values are nonexistent" do
145
+ # metric = GoodData::Fact.find_first_by_title('Lines Changed', client: @client, project: @project).create_metric
146
+ filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, "NONEXISTENT1", "NONEXISTENT2", "NONEXISTENT3"]]
147
+ @project.add_variable_permissions(filters, @variable, ignore_missing_values: true)
148
+ # expect(metric.execute).to eq 9
149
+ expect(@variable.user_values.count).to eq 0
150
+
151
+ @project.add_variable_permissions(filters, @variable, ignore_missing_values: true, restrict_if_missing_all_values: true)
152
+ # expect(metric.execute).to eq nil
153
+ expect(@variable.user_values.count).to eq 0
154
+ end
155
+
156
+ it "you can switch the updates. Whatever is not mentioned will not be touched" do
157
+ # first let's prepare some user filters
158
+ user_with_already_set_up_filter = @project.get_user(ConnectionHelper::DEFAULT_USERNAME)
159
+
160
+ filters = [
161
+ [user_with_already_set_up_filter.login, @label.uri, "tomas@gooddata.com"]
162
+ ]
163
+ @project.add_variable_permissions(filters, @variable)
164
+ expect(@variable.user_values.map { |f| [f.related.login, f.pretty_expression] })
165
+ .to eq [[ConnectionHelper::DEFAULT_USERNAME, "[Dev] IN ([tomas@gooddata.com])"]]
166
+ # Now let's add user filter to a different user. If we do not explicitely state that
167
+ # user_with_already_set_up_filter should keep his filter it will be removed
168
+ another_user = @domain.users.find { |u| u.login != ConnectionHelper::DEFAULT_USERNAME }
169
+ @project.add_user(another_user, 'Admin', domain: @domain)
170
+ new_filters = [
171
+ [another_user.login, @label.uri, "tomas@gooddata.com"]
172
+ ]
173
+ @project.add_variable_permissions(new_filters, @variable, do_not_touch_filters_that_are_not_mentioned: true)
174
+ expect(@variable.user_values.map { |f| [f.related.login, f.pretty_expression] })
175
+ .to include([ConnectionHelper::DEFAULT_USERNAME, "[Dev] IN ([tomas@gooddata.com])"],
176
+ [another_user.login, "[Dev] IN ([tomas@gooddata.com])"])
177
+ end
178
+
179
+ it "should be able to update the filter value in place", broken: true do
180
+ pending 'FIXME: We cannot swap filters yet'
181
+
182
+ filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, "tomas@gooddata.com", "jirka@gooddata.com"]]
183
+ @project.add_variable_permissions(filters, @variable)
184
+ perm = @variable.user_values.first
185
+ filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, "tomas@gooddata.com"]]
186
+ @project.add_variable_permissions(filters, @variable)
187
+ expect(perm.reload!.pretty_expression).to eq '[Dev] IN ([tomas@gooddata.com, jirka@gooddata.com])'
188
+ end
189
+ end
@@ -0,0 +1,91 @@
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'
8
+
9
+ describe GoodData::Rest::Connection, :constraint => 'slow' do
10
+ it "should log in and disconnect" do
11
+ client = ConnectionHelper.create_default_connection
12
+ expect(client).to be_kind_of(GoodData::Rest::Client)
13
+
14
+ client.get("/gdc/md")
15
+
16
+ client.disconnect
17
+ end
18
+
19
+ it 'should be able to log in with user name and password as params' do
20
+ client = GoodData.connect(GoodData::Environment::ConnectionHelper::DEFAULT_USERNAME, GoodData::Environment::ConnectionHelper::DEFAULT_PASSWORD,
21
+ server: GoodData::Environment::ConnectionHelper::DEFAULT_SERVER,
22
+ verify_ssl: false)
23
+ client.disconnect
24
+ end
25
+
26
+ it 'should be able to log in with user name and password as hash' do
27
+ client = GoodData.connect(username: GoodData::Environment::ConnectionHelper::DEFAULT_USERNAME,
28
+ password: GoodData::Environment::ConnectionHelper::DEFAULT_PASSWORD,
29
+ server: GoodData::Environment::ConnectionHelper::DEFAULT_SERVER,
30
+ verify_ssl: false)
31
+ client.disconnect
32
+ end
33
+
34
+ it 'should be able to log in with login and password as hash' do
35
+ client = GoodData.connect(login: GoodData::Environment::ConnectionHelper::DEFAULT_USERNAME,
36
+ password: GoodData::Environment::ConnectionHelper::DEFAULT_PASSWORD,
37
+ server: GoodData::Environment::ConnectionHelper::DEFAULT_SERVER,
38
+ verify_ssl: false)
39
+ client.disconnect
40
+ end
41
+
42
+ it 'should be able to pass additional params in hash' do
43
+ client = GoodData.connect(login: GoodData::Environment::ConnectionHelper::DEFAULT_USERNAME,
44
+ password: GoodData::Environment::ConnectionHelper::DEFAULT_PASSWORD,
45
+ server: GoodData::Environment::ConnectionHelper::DEFAULT_SERVER,
46
+ webdav_server: 'https://some_random_server/',
47
+ verify_ssl: false)
48
+ expect(client.opts[:webdav_server]).to eq 'https://some_random_server/'
49
+ client.disconnect
50
+ end
51
+
52
+ it 'should be able to pass additional params in hash when used login/pass' do
53
+ client = GoodData.connect(GoodData::Environment::ConnectionHelper::DEFAULT_USERNAME, GoodData::Environment::ConnectionHelper::DEFAULT_PASSWORD,
54
+ server: GoodData::Environment::ConnectionHelper::DEFAULT_SERVER,
55
+ webdav_server: 'https://some_random_server/',
56
+ verify_ssl: false)
57
+ expect(client.opts[:webdav_server]).to eq 'https://some_random_server/'
58
+ client.disconnect
59
+ end
60
+
61
+ it "should log in and disconnect with SST" do
62
+ regular_client = ConnectionHelper.create_default_connection
63
+ sst = regular_client.connection.sst_token
64
+
65
+ sst_client = GoodData.connect(sst_token: sst, verify_ssl: false)
66
+ expect(sst_client.projects.count).to be > 0
67
+ sst_client.disconnect
68
+
69
+ regular_client.disconnect
70
+ end
71
+
72
+ it "should log in and disconnect with SST with additional params" do
73
+ regular_client = ConnectionHelper.create_default_connection
74
+ sst = regular_client.connection.sst_token
75
+
76
+ sst_client = GoodData.connect(sst_token: sst, verify_ssl: false, webdav_server: 'https://some_random_server/')
77
+ expect(sst_client.projects.count).to be > 0
78
+ expect(sst_client.opts[:webdav_server]).to eq 'https://some_random_server/'
79
+ sst_client.disconnect
80
+
81
+ regular_client.disconnect
82
+ end
83
+
84
+ it "should be able to regenerate TT" do
85
+ regular_client = ConnectionHelper.create_default_connection
86
+ regular_client.projects
87
+ regular_client.connection.headers.delete(:x_gdc_authtt)
88
+ regular_client.get('/gdc/md')
89
+ expect(regular_client.connection.headers).to have_key :x_gdc_authtt
90
+ end
91
+ end
@@ -0,0 +1,66 @@
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 'simplecov'
8
+ # for simplecov to work correctly, it has to be started before any other code
9
+ SimpleCov.start do
10
+ add_filter 'spec/'
11
+
12
+ add_group 'Middleware', 'lib/gooddata/bricks/middleware'
13
+ add_group 'CLI', 'lib/gooddata/cli'
14
+ add_group 'Commands', 'lib/gooddata/commands'
15
+ add_group 'Core', 'lib/gooddata/core'
16
+ add_group 'Exceptions', 'lib/gooddata/exceptions'
17
+ add_group 'Extensions', 'lib/gooddata/extensions'
18
+ add_group 'Goodzilla', 'lib/gooddata/goodzilla'
19
+ add_group 'Models', 'lib/gooddata/models'
20
+ add_group 'LCM', 'lib/gooddata/lcm'
21
+ end
22
+
23
+ require 'pmap'
24
+ require 'rspec'
25
+ require 'pathname'
26
+ require 'webmock/rspec'
27
+ require 'gooddata'
28
+
29
+ logger = Logger.new(STDOUT)
30
+ logger.level = Logger::WARN
31
+ GoodData.logger = logger
32
+
33
+ WebMock.disable!
34
+
35
+ # Automagically include all helpers/*_helper.rb
36
+
37
+ require_relative 'environment/environment'
38
+
39
+ GoodData::Environment.load
40
+
41
+ base = Pathname(__FILE__).dirname.expand_path
42
+ Dir.glob(base + 'helpers/*_helper.rb').each do |file|
43
+ require file
44
+ end
45
+
46
+ include GoodData::Helpers
47
+
48
+ RSpec::Expectations.configuration.warn_about_potential_false_positives = false
49
+
50
+ RSpec.configure do |config|
51
+ config.deprecation_stream = File.open('deprecations.txt', 'w')
52
+
53
+ config.include BlueprintHelper
54
+ config.include CliHelper
55
+ config.include ConnectionHelper
56
+ config.include CryptoHelper
57
+ config.include CsvHelper
58
+ config.include ProcessHelper
59
+ config.include ProjectHelper
60
+ config.include ScheduleHelper
61
+ # config.include SchemaHelper
62
+
63
+ config.filter_run_excluding :broken => true
64
+
65
+ config.fail_fast = false
66
+ end