gooddata-edge 0.6.27.edge
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.
- checksums.yaml +7 -0
- data/.document +5 -0
- data/.gitignore +36 -0
- data/.rspec +3 -0
- data/.rubocop.yml +89 -0
- data/.yardopts +22 -0
- data/CHANGELOG.md +196 -0
- data/CLI.md +439 -0
- data/DEPENDENCIES.md +817 -0
- data/Gemfile +4 -0
- data/Guardfile +5 -0
- data/LICENSE +22 -0
- data/LICENSE.rb +5 -0
- data/README.md +75 -0
- data/Rakefile +179 -0
- data/TODO.md +32 -0
- data/authors.sh +4 -0
- data/bin/gooddata +7 -0
- data/dependency_decisions.yml +104 -0
- data/gooddata +9 -0
- data/gooddata.gemspec +63 -0
- data/lib/gooddata.rb +31 -0
- data/lib/gooddata/app/app.rb +16 -0
- data/lib/gooddata/bricks/base_downloader.rb +86 -0
- data/lib/gooddata/bricks/brick.rb +38 -0
- data/lib/gooddata/bricks/bricks.rb +15 -0
- data/lib/gooddata/bricks/middleware/aws_middleware.rb +29 -0
- data/lib/gooddata/bricks/middleware/base_middleware.rb +56 -0
- data/lib/gooddata/bricks/middleware/bench_middleware.rb +24 -0
- data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +37 -0
- data/lib/gooddata/bricks/middleware/decode_params_middleware.rb +20 -0
- data/lib/gooddata/bricks/middleware/fs_download_middleware.rb +48 -0
- data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +36 -0
- data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +39 -0
- data/lib/gooddata/bricks/middleware/logger_middleware.rb +29 -0
- data/lib/gooddata/bricks/middleware/middleware.rb +12 -0
- data/lib/gooddata/bricks/middleware/restforce_middleware.rb +61 -0
- data/lib/gooddata/bricks/middleware/stdout_middleware.rb +23 -0
- data/lib/gooddata/bricks/middleware/twitter_middleware.rb +29 -0
- data/lib/gooddata/bricks/middleware/undot_params_middleware.rb +37 -0
- data/lib/gooddata/bricks/pipeline.rb +32 -0
- data/lib/gooddata/bricks/utils.rb +18 -0
- data/lib/gooddata/cli/cli.rb +27 -0
- data/lib/gooddata/cli/commands/auth_cmd.rb +29 -0
- data/lib/gooddata/cli/commands/domain_cmd.rb +28 -0
- data/lib/gooddata/cli/commands/project_cmd.rb +45 -0
- data/lib/gooddata/cli/hooks.rb +57 -0
- data/lib/gooddata/cli/shared.rb +61 -0
- data/lib/gooddata/cli/terminal.rb +20 -0
- data/lib/gooddata/client.rb +67 -0
- data/lib/gooddata/commands/api.rb +64 -0
- data/lib/gooddata/commands/auth.rb +107 -0
- data/lib/gooddata/commands/base.rb +12 -0
- data/lib/gooddata/commands/commands.rb +12 -0
- data/lib/gooddata/commands/datasets.rb +148 -0
- data/lib/gooddata/commands/datawarehouse.rb +20 -0
- data/lib/gooddata/commands/domain.rb +40 -0
- data/lib/gooddata/commands/process.rb +67 -0
- data/lib/gooddata/commands/project.rb +175 -0
- data/lib/gooddata/commands/projects.rb +20 -0
- data/lib/gooddata/commands/role.rb +36 -0
- data/lib/gooddata/commands/runners.rb +47 -0
- data/lib/gooddata/commands/scaffold.rb +69 -0
- data/lib/gooddata/commands/user.rb +39 -0
- data/lib/gooddata/connection.rb +127 -0
- data/lib/gooddata/core/core.rb +12 -0
- data/lib/gooddata/core/logging.rb +105 -0
- data/lib/gooddata/core/nil_logger.rb +23 -0
- data/lib/gooddata/core/project.rb +74 -0
- data/lib/gooddata/core/rest.rb +149 -0
- data/lib/gooddata/core/user.rb +20 -0
- data/lib/gooddata/data/data.rb +12 -0
- data/lib/gooddata/data/guesser.rb +122 -0
- data/lib/gooddata/exceptions/attr_element_not_found.rb +16 -0
- data/lib/gooddata/exceptions/command_failed.rb +11 -0
- data/lib/gooddata/exceptions/exceptions.rb +12 -0
- data/lib/gooddata/exceptions/execution_limit_exceeded.rb +13 -0
- data/lib/gooddata/exceptions/filter_maqlization.rb +16 -0
- data/lib/gooddata/exceptions/malformed_user.rb +15 -0
- data/lib/gooddata/exceptions/no_project_error.rb +15 -0
- data/lib/gooddata/exceptions/object_migration.rb +32 -0
- data/lib/gooddata/exceptions/project_not_found.rb +13 -0
- data/lib/gooddata/exceptions/segment_not_empty.rb +18 -0
- data/lib/gooddata/exceptions/uncomputable_report.rb +13 -0
- data/lib/gooddata/exceptions/user_in_different_domain.rb +15 -0
- data/lib/gooddata/exceptions/validation_error.rb +16 -0
- data/lib/gooddata/extensions/big_decimal.rb +17 -0
- data/lib/gooddata/extensions/enumerable.rb +39 -0
- data/lib/gooddata/extensions/extensions.rb +10 -0
- data/lib/gooddata/extensions/false.rb +15 -0
- data/lib/gooddata/extensions/hash.rb +38 -0
- data/lib/gooddata/extensions/nil.rb +15 -0
- data/lib/gooddata/extensions/numeric.rb +15 -0
- data/lib/gooddata/extensions/object.rb +27 -0
- data/lib/gooddata/extensions/symbol.rb +15 -0
- data/lib/gooddata/extensions/true.rb +15 -0
- data/lib/gooddata/extract.rb +21 -0
- data/lib/gooddata/goodzilla/goodzilla.rb +159 -0
- data/lib/gooddata/helpers/auth_helpers.rb +75 -0
- data/lib/gooddata/helpers/csv_helper.rb +61 -0
- data/lib/gooddata/helpers/data_helper.rb +116 -0
- data/lib/gooddata/helpers/global_helpers.rb +331 -0
- data/lib/gooddata/helpers/global_helpers_params.rb +172 -0
- data/lib/gooddata/helpers/helpers.rb +10 -0
- data/lib/gooddata/mixins/author.rb +26 -0
- data/lib/gooddata/mixins/content_getter.rb +15 -0
- data/lib/gooddata/mixins/content_property_reader.rb +17 -0
- data/lib/gooddata/mixins/content_property_writer.rb +17 -0
- data/lib/gooddata/mixins/contributor.rb +20 -0
- data/lib/gooddata/mixins/data_getter.rb +15 -0
- data/lib/gooddata/mixins/data_property_reader.rb +19 -0
- data/lib/gooddata/mixins/data_property_writer.rb +19 -0
- data/lib/gooddata/mixins/inspector.rb +53 -0
- data/lib/gooddata/mixins/is_attribute.rb +17 -0
- data/lib/gooddata/mixins/is_dimension.rb +17 -0
- data/lib/gooddata/mixins/is_fact.rb +17 -0
- data/lib/gooddata/mixins/is_label.rb +19 -0
- data/lib/gooddata/mixins/links.rb +15 -0
- data/lib/gooddata/mixins/md_finders.rb +77 -0
- data/lib/gooddata/mixins/md_grantees.rb +42 -0
- data/lib/gooddata/mixins/md_id_to_uri.rb +34 -0
- data/lib/gooddata/mixins/md_json.rb +15 -0
- data/lib/gooddata/mixins/md_lock.rb +87 -0
- data/lib/gooddata/mixins/md_object_id.rb +15 -0
- data/lib/gooddata/mixins/md_object_indexer.rb +64 -0
- data/lib/gooddata/mixins/md_object_query.rb +128 -0
- data/lib/gooddata/mixins/md_relations.rb +43 -0
- data/lib/gooddata/mixins/meta_getter.rb +17 -0
- data/lib/gooddata/mixins/meta_property_reader.rb +19 -0
- data/lib/gooddata/mixins/meta_property_writer.rb +19 -0
- data/lib/gooddata/mixins/mixins.rb +19 -0
- data/lib/gooddata/mixins/not_attribute.rb +17 -0
- data/lib/gooddata/mixins/not_exportable.rb +15 -0
- data/lib/gooddata/mixins/not_fact.rb +17 -0
- data/lib/gooddata/mixins/not_group.rb +17 -0
- data/lib/gooddata/mixins/not_label.rb +19 -0
- data/lib/gooddata/mixins/not_metric.rb +19 -0
- data/lib/gooddata/mixins/obj_id.rb +15 -0
- data/lib/gooddata/mixins/rest_getters.rb +17 -0
- data/lib/gooddata/mixins/rest_resource.rb +47 -0
- data/lib/gooddata/mixins/root_key_getter.rb +15 -0
- data/lib/gooddata/mixins/root_key_setter.rb +15 -0
- data/lib/gooddata/mixins/timestamps.rb +19 -0
- data/lib/gooddata/mixins/to_json.rb +11 -0
- data/lib/gooddata/mixins/uri_getter.rb +9 -0
- data/lib/gooddata/models/blueprint/anchor_field.rb +64 -0
- data/lib/gooddata/models/blueprint/attribute_field.rb +29 -0
- data/lib/gooddata/models/blueprint/blueprint.rb +11 -0
- data/lib/gooddata/models/blueprint/blueprint_field.rb +70 -0
- data/lib/gooddata/models/blueprint/dashboard_builder.rb +30 -0
- data/lib/gooddata/models/blueprint/dataset_blueprint.rb +449 -0
- data/lib/gooddata/models/blueprint/date_dimension.rb +14 -0
- data/lib/gooddata/models/blueprint/fact_field.rb +20 -0
- data/lib/gooddata/models/blueprint/label_field.rb +43 -0
- data/lib/gooddata/models/blueprint/project_blueprint.rb +746 -0
- data/lib/gooddata/models/blueprint/project_builder.rb +83 -0
- data/lib/gooddata/models/blueprint/reference_field.rb +43 -0
- data/lib/gooddata/models/blueprint/schema_blueprint.rb +160 -0
- data/lib/gooddata/models/blueprint/schema_builder.rb +89 -0
- data/lib/gooddata/models/blueprint/to_manifest.rb +181 -0
- data/lib/gooddata/models/blueprint/to_wire.rb +154 -0
- data/lib/gooddata/models/client.rb +182 -0
- data/lib/gooddata/models/client_synchronization_result.rb +31 -0
- data/lib/gooddata/models/client_synchronization_result_details.rb +41 -0
- data/lib/gooddata/models/datawarehouse.rb +92 -0
- data/lib/gooddata/models/domain.rb +479 -0
- data/lib/gooddata/models/execution.rb +115 -0
- data/lib/gooddata/models/execution_detail.rb +81 -0
- data/lib/gooddata/models/from_wire.rb +160 -0
- data/lib/gooddata/models/invitation.rb +75 -0
- data/lib/gooddata/models/links.rb +50 -0
- data/lib/gooddata/models/membership.rb +441 -0
- data/lib/gooddata/models/metadata.rb +272 -0
- data/lib/gooddata/models/metadata/attribute.rb +134 -0
- data/lib/gooddata/models/metadata/dashboard.rb +108 -0
- data/lib/gooddata/models/metadata/dashboard/dashboard_item.rb +76 -0
- data/lib/gooddata/models/metadata/dashboard/filter_apply_item.rb +37 -0
- data/lib/gooddata/models/metadata/dashboard/filter_item.rb +64 -0
- data/lib/gooddata/models/metadata/dashboard/geo_chart_item.rb +56 -0
- data/lib/gooddata/models/metadata/dashboard/headline_item.rb +56 -0
- data/lib/gooddata/models/metadata/dashboard/iframe_item.rb +46 -0
- data/lib/gooddata/models/metadata/dashboard/report_item.rb +92 -0
- data/lib/gooddata/models/metadata/dashboard/text_item.rb +55 -0
- data/lib/gooddata/models/metadata/dashboard_tab.rb +141 -0
- data/lib/gooddata/models/metadata/dataset.rb +64 -0
- data/lib/gooddata/models/metadata/dimension.rb +54 -0
- data/lib/gooddata/models/metadata/fact.rb +44 -0
- data/lib/gooddata/models/metadata/label.rb +128 -0
- data/lib/gooddata/models/metadata/metadata.rb +12 -0
- data/lib/gooddata/models/metadata/metric.rb +198 -0
- data/lib/gooddata/models/metadata/report.rb +247 -0
- data/lib/gooddata/models/metadata/report_definition.rb +264 -0
- data/lib/gooddata/models/metadata/scheduled_mail.rb +274 -0
- data/lib/gooddata/models/metadata/scheduled_mail/dashboard_attachment.rb +62 -0
- data/lib/gooddata/models/metadata/scheduled_mail/report_attachment.rb +64 -0
- data/lib/gooddata/models/metadata/variable.rb +91 -0
- data/lib/gooddata/models/model.rb +282 -0
- data/lib/gooddata/models/models.rb +12 -0
- data/lib/gooddata/models/module_constants.rb +31 -0
- data/lib/gooddata/models/process.rb +316 -0
- data/lib/gooddata/models/profile.rb +426 -0
- data/lib/gooddata/models/project.rb +1514 -0
- data/lib/gooddata/models/project_creator.rb +126 -0
- data/lib/gooddata/models/project_metadata.rb +67 -0
- data/lib/gooddata/models/project_role.rb +79 -0
- data/lib/gooddata/models/report_data_result.rb +266 -0
- data/lib/gooddata/models/schedule.rb +518 -0
- data/lib/gooddata/models/segment.rb +201 -0
- data/lib/gooddata/models/tab_builder.rb +27 -0
- data/lib/gooddata/models/user_filters/mandatory_user_filter.rb +76 -0
- data/lib/gooddata/models/user_filters/user_filter.rb +100 -0
- data/lib/gooddata/models/user_filters/user_filter_builder.rb +512 -0
- data/lib/gooddata/models/user_filters/user_filters.rb +13 -0
- data/lib/gooddata/models/user_filters/variable_user_filter.rb +31 -0
- data/lib/gooddata/models/user_group.rb +241 -0
- data/lib/gooddata/rest/README.md +37 -0
- data/lib/gooddata/rest/client.rb +389 -0
- data/lib/gooddata/rest/connection.rb +765 -0
- data/lib/gooddata/rest/object.rb +69 -0
- data/lib/gooddata/rest/object_factory.rb +76 -0
- data/lib/gooddata/rest/resource.rb +27 -0
- data/lib/gooddata/rest/rest.rb +24 -0
- data/lib/gooddata/version.rb +23 -0
- data/lib/templates/bricks/brick.rb.erb +7 -0
- data/lib/templates/bricks/main.rb.erb +5 -0
- data/lib/templates/project/Goodfile.erb +4 -0
- data/lib/templates/project/data/commits.csv +4 -0
- data/lib/templates/project/data/devs.csv +4 -0
- data/lib/templates/project/data/repos.csv +3 -0
- data/lib/templates/project/model/model.rb.erb +20 -0
- data/spec/bricks/bricks_spec.rb +112 -0
- data/spec/bricks/default-config.json +8 -0
- data/spec/data/.gooddata +4 -0
- data/spec/data/blueprints/additional_dataset_module.json +32 -0
- data/spec/data/blueprints/big_blueprint_not_pruned.json +2079 -0
- data/spec/data/blueprints/invalid_blueprint.json +103 -0
- data/spec/data/blueprints/m_n_model.json +104 -0
- data/spec/data/blueprints/model_module.json +25 -0
- data/spec/data/blueprints/test_blueprint.json +38 -0
- data/spec/data/blueprints/test_project_model_spec.json +106 -0
- data/spec/data/cc/data/source/commits.csv +4 -0
- data/spec/data/cc/data/source/devs.csv +4 -0
- data/spec/data/cc/data/source/repos.csv +3 -0
- data/spec/data/cc/devel.prm +0 -0
- data/spec/data/cc/graph/graph.grf +11 -0
- data/spec/data/cc/workspace.prm +19 -0
- data/spec/data/column_based_permissions.csv +7 -0
- data/spec/data/column_based_permissions2.csv +6 -0
- data/spec/data/gd_gse_data_blueprint.json +1371 -0
- data/spec/data/gd_gse_data_manifest.json +1424 -0
- data/spec/data/gd_gse_data_model.json +1772 -0
- data/spec/data/gooddata_version_process/gooddata_version.rb +9 -0
- data/spec/data/gooddata_version_process/gooddata_version.zip +0 -0
- data/spec/data/hello_world_process/hello_world.rb +9 -0
- data/spec/data/hello_world_process/hello_world.zip +0 -0
- data/spec/data/line_based_permissions.csv +3 -0
- data/spec/data/manifests/test_blueprint.json +32 -0
- data/spec/data/manifests/test_project.json +107 -0
- data/spec/data/reports/left_attr_report.json +108 -0
- data/spec/data/reports/metric_only_one_line.json +83 -0
- data/spec/data/reports/report_1.json +197 -0
- data/spec/data/reports/top_attr_report.json +108 -0
- data/spec/data/ruby_params_process/ruby_params.rb +9 -0
- data/spec/data/ruby_process/deep_files/deep_stuff.txt +1 -0
- data/spec/data/ruby_process/process.rb +8 -0
- data/spec/data/ruby_process/stuff.txt +1 -0
- data/spec/data/superfluous_titles_view.json +81 -0
- data/spec/data/test-ci-data.csv +2 -0
- data/spec/data/users.csv +12 -0
- data/spec/data/wire_models/model_view.json +1775 -0
- data/spec/data/wire_models/nu_model.json +3046 -0
- data/spec/data/wire_models/test_blueprint.json +63 -0
- data/spec/data/wire_test_project.json +150 -0
- data/spec/environment/default.rb +41 -0
- data/spec/environment/develop.rb +31 -0
- data/spec/environment/environment.rb +18 -0
- data/spec/environment/hotfix.rb +21 -0
- data/spec/environment/production.rb +35 -0
- data/spec/environment/release.rb +21 -0
- data/spec/environment/staging.rb +30 -0
- data/spec/environment/staging_3.rb +36 -0
- data/spec/helpers/blueprint_helper.rb +26 -0
- data/spec/helpers/cli_helper.rb +36 -0
- data/spec/helpers/connection_helper.rb +41 -0
- data/spec/helpers/crypto_helper.rb +17 -0
- data/spec/helpers/csv_helper.rb +18 -0
- data/spec/helpers/process_helper.rb +33 -0
- data/spec/helpers/project_helper.rb +59 -0
- data/spec/helpers/schedule_helper.rb +31 -0
- data/spec/helpers/spec_helper.rb +15 -0
- data/spec/integration/blueprint_updates_spec.rb +101 -0
- data/spec/integration/blueprint_with_grain_spec.rb +72 -0
- data/spec/integration/clients_spec.rb +134 -0
- data/spec/integration/command_datawarehouse_spec.rb +39 -0
- data/spec/integration/command_projects_spec.rb +32 -0
- data/spec/integration/create_from_template_spec.rb +22 -0
- data/spec/integration/create_project_spec.rb +24 -0
- data/spec/integration/date_dim_switch_spec.rb +142 -0
- data/spec/integration/deprecated_load_spec.rb +58 -0
- data/spec/integration/full_process_schedule_spec.rb +298 -0
- data/spec/integration/full_project_spec.rb +569 -0
- data/spec/integration/over_to_user_filters_spec.rb +94 -0
- data/spec/integration/partial_md_export_import_spec.rb +42 -0
- data/spec/integration/project_spec.rb +264 -0
- data/spec/integration/rest_spec.rb +213 -0
- data/spec/integration/schedule_spec.rb +626 -0
- data/spec/integration/segments_spec.rb +141 -0
- data/spec/integration/user_filters_spec.rb +290 -0
- data/spec/integration/user_group_spec.rb +127 -0
- data/spec/integration/variables_spec.rb +188 -0
- data/spec/logging_in_logging_out_spec.rb +93 -0
- data/spec/spec_helper.rb +95 -0
- data/spec/unit/bricks/bricks_spec.rb +35 -0
- data/spec/unit/bricks/middleware/aws_middelware_spec.rb +51 -0
- data/spec/unit/bricks/middleware/bench_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/logger_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +15 -0
- data/spec/unit/cli/cli_spec.rb +17 -0
- data/spec/unit/cli/commands/cmd_auth_spec.rb +17 -0
- data/spec/unit/commands/command_projects_spec.rb +22 -0
- data/spec/unit/core/connection_spec.rb +57 -0
- data/spec/unit/core/logging_spec.rb +133 -0
- data/spec/unit/core/nil_logger_spec.rb +13 -0
- data/spec/unit/core/project_spec.rb +54 -0
- data/spec/unit/extensions/hash_spec.rb +23 -0
- data/spec/unit/godzilla/goodzilla_spec.rb +78 -0
- data/spec/unit/helpers/csv_helper_spec.rb +22 -0
- data/spec/unit/helpers/data_helper_spec.rb +61 -0
- data/spec/unit/helpers/global_helpers_spec.rb +111 -0
- data/spec/unit/helpers_spec.rb +86 -0
- data/spec/unit/models/blueprint/attributes_spec.rb +29 -0
- data/spec/unit/models/blueprint/dataset_spec.rb +121 -0
- data/spec/unit/models/blueprint/labels_spec.rb +44 -0
- data/spec/unit/models/blueprint/project_blueprint_spec.rb +648 -0
- data/spec/unit/models/blueprint/reference_spec.rb +29 -0
- data/spec/unit/models/blueprint/schema_builder_spec.rb +38 -0
- data/spec/unit/models/blueprint/to_wire_spec.rb +174 -0
- data/spec/unit/models/domain_spec.rb +144 -0
- data/spec/unit/models/execution_spec.rb +108 -0
- data/spec/unit/models/from_wire_spec.rb +296 -0
- data/spec/unit/models/invitation_spec.rb +17 -0
- data/spec/unit/models/membership_spec.rb +132 -0
- data/spec/unit/models/metadata_spec.rb +104 -0
- data/spec/unit/models/metric_spec.rb +117 -0
- data/spec/unit/models/model_spec.rb +82 -0
- data/spec/unit/models/params_spec.rb +118 -0
- data/spec/unit/models/profile_spec.rb +215 -0
- data/spec/unit/models/project_creator_spec.rb +127 -0
- data/spec/unit/models/project_role_spec.rb +94 -0
- data/spec/unit/models/project_spec.rb +162 -0
- data/spec/unit/models/report_result_data_spec.rb +199 -0
- data/spec/unit/models/schedule_spec.rb +418 -0
- data/spec/unit/models/to_manifest_spec.rb +63 -0
- data/spec/unit/models/unit_project_spec.rb +125 -0
- data/spec/unit/models/user_filters_spec.rb +95 -0
- data/spec/unit/models/variable_spec.rb +265 -0
- data/spec/unit/rest/polling_spec.rb +89 -0
- data/spec/unit/rest/resource_spec.rb +10 -0
- data/yard-server.sh +3 -0
- metadata +1125 -0
@@ -0,0 +1,188 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 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
|
+
["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
|
+
@project.upload(commits_data, blueprint, 'dataset.commits')
|
25
|
+
|
26
|
+
devs_data = [
|
27
|
+
["dev_id", "email"],
|
28
|
+
[1, "tomas@gooddata.com"],
|
29
|
+
[2, "petr@gooddata.com"],
|
30
|
+
[3, "jirka@gooddata.com"]]
|
31
|
+
@project.upload(devs_data, blueprint, 'dataset.devs')
|
32
|
+
|
33
|
+
@variable = @project.create_variable(title: 'uaaa', attribute: @label.attribute).save
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
after(:all) do
|
38
|
+
@project.delete if @project
|
39
|
+
end
|
40
|
+
|
41
|
+
after(:each) do
|
42
|
+
@variable.user_values.select {|x| x.level == :user}.pmap &:delete
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should create a variable filter" do
|
46
|
+
filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, 'tomas@gooddata.com', 'jirka@gooddata.com']]
|
47
|
+
|
48
|
+
metric = @project.create_metric("SELECT SUM(#\"Lines Changed\")", :title => 'x')
|
49
|
+
|
50
|
+
# [jirka@gooddata.com | petr@gooddata.com | tomas@gooddata.com]
|
51
|
+
# [5.0 | 3.0 | 1.0 ]
|
52
|
+
@project.add_variable_permissions(filters, @variable)
|
53
|
+
r = @project.compute_report(left: [metric], top: [@label.attribute], filters: [@variable])
|
54
|
+
r.include_column?(['tomas@gooddata.com', 1]).should == true
|
55
|
+
r.include_column?(['jirka@gooddata.com', 5]).should == true
|
56
|
+
r.include_column?(['petr@gooddata.com', 3]).should == false
|
57
|
+
|
58
|
+
r = @project.compute_report(left: [metric], top: [@label.attribute])
|
59
|
+
r.include_column?(['tomas@gooddata.com', 1]).should == true
|
60
|
+
r.include_column?(['jirka@gooddata.com', 5]).should == true
|
61
|
+
r.include_column?(['petr@gooddata.com', 3]).should == true
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should fail when asked to set a user not in project. No filters should be set up." do
|
65
|
+
filters = [
|
66
|
+
['nonexistent_user@gooddata.com', @label.uri, "tomas@gooddata.com"],
|
67
|
+
[ConnectionHelper::DEFAULT_USERNAME, @label.uri, "tomas@gooddata.com"]
|
68
|
+
]
|
69
|
+
expect do
|
70
|
+
@project.add_variable_permissions(filters, @variable)
|
71
|
+
end.to raise_error
|
72
|
+
expect(@variable.user_values.count).to eq 0
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should pass and set users that are in the projects" do
|
76
|
+
filters = [
|
77
|
+
[ConnectionHelper::DEFAULT_USERNAME, @label.uri, "tomas@gooddata.com"]
|
78
|
+
]
|
79
|
+
@project.add_variable_permissions(filters, @variable)
|
80
|
+
expect(@variable.user_values.count).to eq 1
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should pass and set only users that are in the projects if asked" do
|
84
|
+
filters = [
|
85
|
+
['nonexistent_user@gooddata.com', @label.uri, 'tomas@gooddata.com'],
|
86
|
+
[ConnectionHelper::DEFAULT_USERNAME, @label.uri, 'tomas@gooddata.com']
|
87
|
+
]
|
88
|
+
@project.add_variable_permissions(filters, @variable, users_must_exist: false)
|
89
|
+
expect(@variable.user_values.count).to eq 1
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should fail when asked to set a value not in the proejct" do
|
93
|
+
filters = [
|
94
|
+
[ConnectionHelper::DEFAULT_USERNAME, @label.uri, '%^&*( nonexistent value', 'tomas@gooddata.com'],
|
95
|
+
[ConnectionHelper::DEFAULT_USERNAME, @label.uri, 'tomas@gooddata.com']]
|
96
|
+
expect do
|
97
|
+
@project.add_variable_permissions(filters, @variable)
|
98
|
+
end.to raise_error
|
99
|
+
expect(@variable.user_values.count).to eq 0
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should add a filter with nonexistent values when asked" do
|
103
|
+
filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, '%^&*( nonexistent value', 'jirka@gooddata.com']]
|
104
|
+
@project.add_variable_permissions(filters, @variable, ignore_missing_values: true)
|
105
|
+
|
106
|
+
expect(@variable.user_values.pmap {|m| m.pretty_expression}).to eq ["[Dev] IN ([jirka@gooddata.com])"]
|
107
|
+
expect(@variable.user_values.count).to eq 1
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should be able to print data permissions in a human readable form" do
|
111
|
+
filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, "tomas@gooddata.com"]]
|
112
|
+
@project.add_variable_permissions(filters, @variable)
|
113
|
+
perms = @variable.user_values
|
114
|
+
pretty = perms.pmap {|f| [f.related.login, f.pretty_expression]}
|
115
|
+
expect(perms.first.related).to eq @client.user
|
116
|
+
expect(pretty).to eq [[ConnectionHelper::DEFAULT_USERNAME, "[Dev] IN ([tomas@gooddata.com])"]]
|
117
|
+
end
|
118
|
+
|
119
|
+
it "sets up mandatory users based on the state given as an end state by default." do
|
120
|
+
# first let's prepare some user filters
|
121
|
+
user_with_already_set_up_filter = @project.get_user(ConnectionHelper::DEFAULT_USERNAME)
|
122
|
+
|
123
|
+
filters = [
|
124
|
+
[user_with_already_set_up_filter.login, @label.uri, "tomas@gooddata.com"]
|
125
|
+
]
|
126
|
+
@project.add_variable_permissions(filters, @variable)
|
127
|
+
expect(@variable.user_values.map {|f| [f.related.login, f.pretty_expression] })
|
128
|
+
.to eq [[ConnectionHelper::DEFAULT_USERNAME, "[Dev] IN ([tomas@gooddata.com])"]]
|
129
|
+
|
130
|
+
# Now let's add user filter to a different user. If we do not explicitely state that
|
131
|
+
# user_with_already_set_up_filter should keep his filter it will be removed
|
132
|
+
another_user = @domain.users.find { |u| u.login != ConnectionHelper::DEFAULT_USERNAME }
|
133
|
+
@project.add_user(another_user, 'Admin', domain: @domain)
|
134
|
+
new_filters = [
|
135
|
+
[another_user.login, @label.uri, "tomas@gooddata.com"]
|
136
|
+
]
|
137
|
+
@project.add_variable_permissions(new_filters, @variable)
|
138
|
+
expect(@variable.user_values.map {|f| [f.related.login, f.pretty_expression] })
|
139
|
+
.to eq [[another_user.login, "[Dev] IN ([tomas@gooddata.com])"]]
|
140
|
+
end
|
141
|
+
|
142
|
+
it "should set up false if all values are nonexistent" do
|
143
|
+
metric = GoodData::Fact.find_first_by_title('Lines Changed', client: @client, project: @project).create_metric
|
144
|
+
filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, "NONEXISTENT1", "NONEXISTENT2", "NONEXISTENT3"]]
|
145
|
+
@project.add_variable_permissions(filters, @variable, ignore_missing_values: true)
|
146
|
+
# expect(metric.execute).to eq 9
|
147
|
+
expect(@variable.user_values.map {|f| [f.related.login, f.pretty_expression] })
|
148
|
+
.to eq [[ConnectionHelper::DEFAULT_USERNAME, "TRUE"]]
|
149
|
+
|
150
|
+
@project.add_variable_permissions(filters, @variable, ignore_missing_values: true, restrict_if_missing_all_values: true)
|
151
|
+
# expect(metric.execute).to eq nil
|
152
|
+
expect(@variable.user_values.count).to eq 0
|
153
|
+
end
|
154
|
+
|
155
|
+
it "you can switch the updates. Whatever is not mentioned will not be touched" do
|
156
|
+
# first let's prepare some user filters
|
157
|
+
user_with_already_set_up_filter = @project.get_user(ConnectionHelper::DEFAULT_USERNAME)
|
158
|
+
|
159
|
+
filters = [
|
160
|
+
[user_with_already_set_up_filter.login, @label.uri, "tomas@gooddata.com"]
|
161
|
+
]
|
162
|
+
@project.add_variable_permissions(filters, @variable)
|
163
|
+
expect(@variable.user_values.map {|f| [f.related.login, f.pretty_expression] })
|
164
|
+
.to eq [[ConnectionHelper::DEFAULT_USERNAME, "[Dev] IN ([tomas@gooddata.com])"]]
|
165
|
+
# Now let's add user filter to a different user. If we do not explicitely state that
|
166
|
+
# user_with_already_set_up_filter should keep his filter it will be removed
|
167
|
+
another_user = @domain.users.find { |u| u.login != ConnectionHelper::DEFAULT_USERNAME }
|
168
|
+
@project.add_user(another_user, 'Admin', domain: @domain)
|
169
|
+
new_filters = [
|
170
|
+
[another_user.login, @label.uri, "tomas@gooddata.com"]
|
171
|
+
]
|
172
|
+
@project.add_variable_permissions(new_filters, @variable, do_not_touch_filters_that_are_not_mentioned: true)
|
173
|
+
expect(@variable.user_values.map {|f| [f.related.login, f.pretty_expression] })
|
174
|
+
.to include([ConnectionHelper::DEFAULT_USERNAME, "[Dev] IN ([tomas@gooddata.com])"],
|
175
|
+
[another_user.login, "[Dev] IN ([tomas@gooddata.com])"])
|
176
|
+
end
|
177
|
+
|
178
|
+
it "should be able to update the filter value in place" do
|
179
|
+
pending 'FIXME: We cannot swap filters yet'
|
180
|
+
|
181
|
+
filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, "tomas@gooddata.com", "jirka@gooddata.com"]]
|
182
|
+
@project.add_variable_permissions(filters, @variable)
|
183
|
+
perm = @variable.user_values.first
|
184
|
+
filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, "tomas@gooddata.com"]]
|
185
|
+
@project.add_variable_permissions(filters, @variable)
|
186
|
+
expect(perm.reload!.pretty_expression).to eq '[Dev] IN ([tomas@gooddata.com, jirka@gooddata.com])'
|
187
|
+
end
|
188
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 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
|
+
require 'pry'
|
9
|
+
|
10
|
+
describe GoodData::Rest::Connection, :constraint => 'slow' do
|
11
|
+
|
12
|
+
it "should log in and disconnect" do
|
13
|
+
client = ConnectionHelper::create_default_connection
|
14
|
+
expect(client).to be_kind_of(GoodData::Rest::Client)
|
15
|
+
|
16
|
+
client.get("/gdc/md")
|
17
|
+
|
18
|
+
client.disconnect
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should be able to log in with user name and password as params' do
|
22
|
+
client = GoodData.connect(GoodData::Environment::ConnectionHelper::DEFAULT_USERNAME, GoodData::Environment::ConnectionHelper::DEFAULT_PASSWORD,
|
23
|
+
server: GoodData::Environment::ConnectionHelper::DEFAULT_SERVER,
|
24
|
+
verify_ssl: false)
|
25
|
+
client.disconnect
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should be able to log in with user name and password as hash' do
|
29
|
+
client = GoodData.connect(username: GoodData::Environment::ConnectionHelper::DEFAULT_USERNAME,
|
30
|
+
password: GoodData::Environment::ConnectionHelper::DEFAULT_PASSWORD,
|
31
|
+
server: GoodData::Environment::ConnectionHelper::DEFAULT_SERVER,
|
32
|
+
verify_ssl: false)
|
33
|
+
client.disconnect
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should be able to log in with login and password as hash' do
|
37
|
+
client = GoodData.connect(login: GoodData::Environment::ConnectionHelper::DEFAULT_USERNAME,
|
38
|
+
password: GoodData::Environment::ConnectionHelper::DEFAULT_PASSWORD,
|
39
|
+
server: GoodData::Environment::ConnectionHelper::DEFAULT_SERVER,
|
40
|
+
verify_ssl: false)
|
41
|
+
client.disconnect
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'should be able to pass additional params in hash' do
|
45
|
+
client = GoodData.connect(login: GoodData::Environment::ConnectionHelper::DEFAULT_USERNAME,
|
46
|
+
password: GoodData::Environment::ConnectionHelper::DEFAULT_PASSWORD,
|
47
|
+
server: GoodData::Environment::ConnectionHelper::DEFAULT_SERVER,
|
48
|
+
webdav_server: 'https://some_random_server/',
|
49
|
+
verify_ssl: false)
|
50
|
+
expect(client.opts[:webdav_server]).to eq 'https://some_random_server/'
|
51
|
+
client.disconnect
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should be able to pass additional params in hash when used login/pass' do
|
55
|
+
client = GoodData.connect(GoodData::Environment::ConnectionHelper::DEFAULT_USERNAME, GoodData::Environment::ConnectionHelper::DEFAULT_PASSWORD,
|
56
|
+
server: GoodData::Environment::ConnectionHelper::DEFAULT_SERVER,
|
57
|
+
webdav_server: 'https://some_random_server/',
|
58
|
+
verify_ssl: false)
|
59
|
+
expect(client.opts[:webdav_server]).to eq 'https://some_random_server/'
|
60
|
+
client.disconnect
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should log in and disconnect with SST" do
|
64
|
+
regular_client = ConnectionHelper::create_default_connection
|
65
|
+
sst = regular_client.connection.sst_token
|
66
|
+
|
67
|
+
sst_client = GoodData.connect(sst_token: sst, verify_ssl: false)
|
68
|
+
expect(sst_client.projects.count).to be > 0
|
69
|
+
sst_client.disconnect
|
70
|
+
|
71
|
+
regular_client.disconnect
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should log in and disconnect with SST with additional params" do
|
75
|
+
regular_client = ConnectionHelper::create_default_connection
|
76
|
+
sst = regular_client.connection.sst_token
|
77
|
+
|
78
|
+
sst_client = GoodData.connect(sst_token: sst, verify_ssl: false, webdav_server: 'https://some_random_server/')
|
79
|
+
expect(sst_client.projects.count).to be > 0
|
80
|
+
expect(sst_client.opts[:webdav_server]).to eq 'https://some_random_server/'
|
81
|
+
sst_client.disconnect
|
82
|
+
|
83
|
+
regular_client.disconnect
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should be able to regenerate TT" do
|
87
|
+
regular_client = ConnectionHelper::create_default_connection
|
88
|
+
projects = regular_client.projects
|
89
|
+
regular_client.connection.cookies[:cookies].delete('GDCAuthTT')
|
90
|
+
regular_client.get('/gdc/md')
|
91
|
+
expect(regular_client.connection.cookies[:cookies]).to have_key 'GDCAuthTT'
|
92
|
+
end
|
93
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 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
|
+
require 'pmap'
|
9
|
+
require 'rspec'
|
10
|
+
require 'pathname'
|
11
|
+
require 'webmock/rspec'
|
12
|
+
|
13
|
+
WebMock.disable!
|
14
|
+
|
15
|
+
# Automagically include all helpers/*_helper.rb
|
16
|
+
|
17
|
+
require_relative 'environment/environment'
|
18
|
+
|
19
|
+
GoodData::Environment.load
|
20
|
+
|
21
|
+
base = Pathname(__FILE__).dirname.expand_path
|
22
|
+
Dir.glob(base + 'helpers/*_helper.rb').each do |file|
|
23
|
+
require file
|
24
|
+
end
|
25
|
+
|
26
|
+
include GoodData::Helpers
|
27
|
+
|
28
|
+
RSpec::Expectations.configuration.warn_about_potential_false_positives = false
|
29
|
+
|
30
|
+
RSpec.configure do |config|
|
31
|
+
config.deprecation_stream = File.open('deprecations.txt', 'w')
|
32
|
+
|
33
|
+
config.include BlueprintHelper
|
34
|
+
config.include CliHelper
|
35
|
+
config.include ConnectionHelper
|
36
|
+
config.include CryptoHelper
|
37
|
+
config.include CsvHelper
|
38
|
+
config.include ProcessHelper
|
39
|
+
config.include ProjectHelper
|
40
|
+
config.include ScheduleHelper
|
41
|
+
# config.include SchemaHelper
|
42
|
+
|
43
|
+
config.filter_run_excluding :broken => true
|
44
|
+
|
45
|
+
config.fail_fast = false
|
46
|
+
|
47
|
+
config.before(:all) do
|
48
|
+
# TODO: Move this to some method.
|
49
|
+
# TODO Make more intelligent so two test suites can run at the same time.
|
50
|
+
# ConnectionHelper.create_default_connection
|
51
|
+
# users = GoodData::Domain.users(ConnectionHelper::DEFAULT_DOMAIN)
|
52
|
+
# users.pmap do |user|
|
53
|
+
# user.delete if user.email != ConnectionHelper::DEFAULT_USERNAME
|
54
|
+
# end
|
55
|
+
|
56
|
+
# TODO: Fully setup global environment
|
57
|
+
# $stdout.sync=true
|
58
|
+
# $stderr.sync=true
|
59
|
+
|
60
|
+
GoodData.logging_off
|
61
|
+
GoodData.stats_off
|
62
|
+
end
|
63
|
+
|
64
|
+
config.after(:all) do
|
65
|
+
# TODO: Fully setup global environment
|
66
|
+
end
|
67
|
+
|
68
|
+
config.before(:suite) do
|
69
|
+
# TODO: Setup test project
|
70
|
+
GoodData.logging_off
|
71
|
+
end
|
72
|
+
|
73
|
+
config.after(:suite) do
|
74
|
+
# TODO: Delete test project
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
79
|
+
SimpleCov::Formatter::HTMLFormatter
|
80
|
+
]
|
81
|
+
|
82
|
+
SimpleCov.start do
|
83
|
+
add_filter 'spec/'
|
84
|
+
add_filter 'test/'
|
85
|
+
|
86
|
+
add_group 'Bricks', 'lib/gooddata/bricks'
|
87
|
+
add_group 'Middleware', 'lib/gooddata/bricks/middleware'
|
88
|
+
add_group 'CLI', 'lib/gooddata/cli'
|
89
|
+
add_group 'Commands', 'lib/gooddata/commands'
|
90
|
+
add_group 'Core', 'lib/gooddata/core'
|
91
|
+
add_group 'Exceptions', 'lib/gooddata/exceptions'
|
92
|
+
add_group 'Extensions', 'lib/gooddata/extensions'
|
93
|
+
add_group 'Goodzilla', 'lib/gooddata/goodzilla'
|
94
|
+
add_group 'Models', 'lib/gooddata/models'
|
95
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 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/bricks/bricks'
|
8
|
+
|
9
|
+
describe GoodData::Bricks::Brick do
|
10
|
+
it "Has GoodData::Bricks::Brick class" do
|
11
|
+
GoodData::Bricks::Brick.should_not == nil
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#version' do
|
15
|
+
it 'Throws NotImplemented on base class' do
|
16
|
+
brick = GoodData::Bricks::Brick.new
|
17
|
+
expect do
|
18
|
+
brick.version
|
19
|
+
end.to raise_error(NotImplementedError)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should be possible to execute custom brick" do
|
24
|
+
class CustomBrick < GoodData::Bricks::Brick
|
25
|
+
|
26
|
+
def call(params)
|
27
|
+
puts 'hello'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
p = GoodData::Bricks::Pipeline.prepare([CustomBrick])
|
32
|
+
|
33
|
+
p.call({})
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 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/bricks/brick'
|
8
|
+
require 'gooddata/bricks/bricks'
|
9
|
+
require 'gooddata/bricks/middleware/aws_middleware'
|
10
|
+
|
11
|
+
describe GoodData::Bricks::AWSMiddleware do
|
12
|
+
it 'should do nothing if the key "aws_client" is not there at all' do
|
13
|
+
middleware = GoodData::Bricks::AWSMiddleware.new(app: lambda {|params| 'Doing nothing'})
|
14
|
+
middleware.call({})
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should fail gracefully if value aws_client param not present even though the key is' do
|
18
|
+
middleware = GoodData::Bricks::AWSMiddleware.new(app: lambda {|params| 'Doing nothing'})
|
19
|
+
expect do
|
20
|
+
middleware.call('aws_client' => nil)
|
21
|
+
end.to raise_exception 'Unable to connect to AWS. Parameter "aws_client" seems to be empty'
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should fail gracefully if value secret_access_key is missing' do
|
25
|
+
middleware = GoodData::Bricks::AWSMiddleware.new(app: lambda {|params| 'Doing nothing'})
|
26
|
+
expect do
|
27
|
+
middleware.call('aws_client' => {
|
28
|
+
'access_key_id' => 'something'
|
29
|
+
})
|
30
|
+
end.to raise_exception 'Unable to connect to AWS. Parameter "secret_access_key" is missing'
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should fail gracefully if value access_key_id is missing' do
|
34
|
+
middleware = GoodData::Bricks::AWSMiddleware.new(app: lambda {|params| 'Doing nothing'})
|
35
|
+
expect do
|
36
|
+
middleware.call('aws_client' => {
|
37
|
+
'secret_access_key' => 'something'
|
38
|
+
})
|
39
|
+
end.to raise_exception 'Unable to connect to AWS. Parameter "access_key_id" is missing'
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should preapre aws middleware for aws_client param" do
|
43
|
+
middleware = GoodData::Bricks::AWSMiddleware.new(app: lambda do |params|
|
44
|
+
expect(params['aws_client']['s3_client']).to be_kind_of(Aws::S3::Resource)
|
45
|
+
end)
|
46
|
+
middleware.call('aws_client' => {
|
47
|
+
'secret_access_key' => 'something',
|
48
|
+
'access_key_id' => 'something'
|
49
|
+
})
|
50
|
+
end
|
51
|
+
end
|