From 3b20bb483f634f30dca98457cfa230b33fa7985b Mon Sep 17 00:00:00 2001 From: vhtien Date: Mon, 28 Nov 2016 14:51:23 +0700 Subject: [PATCH 01/19] BUGFIX: BIA-535 Fix Inconsistent / Obsolete environment files --- spec/environment/default.rb | 16 ++++++++------- spec/environment/develop.rb | 10 +++------- spec/environment/hotfix.rb | 15 ++++++++++---- spec/environment/production.rb | 18 +++++------------ spec/environment/release.rb | 21 -------------------- spec/environment/staging.rb | 13 +++++------- spec/environment/staging_3.rb | 36 ---------------------------------- 7 files changed, 33 insertions(+), 96 deletions(-) delete mode 100644 spec/environment/release.rb delete mode 100644 spec/environment/staging_3.rb diff --git a/spec/environment/default.rb b/spec/environment/default.rb index fcaffc4b8..6af56342b 100644 --- a/spec/environment/default.rb +++ b/spec/environment/default.rb @@ -14,28 +14,30 @@ module ConnectionHelper set_const :GD_PROJECT_TOKEN, ENV["GD_PROJECT_TOKEN"] set_const :DEFAULT_USERNAME, "tomas.korcak+gem_tester@gooddata.com" - set_const :TEST_USERNAME, "john.doe@gooddata.com" set_const :DEFAULT_PASSWORD, GoodData::Helpers.decrypt('9m5Fe6WIxtkoG9vi2CanKm/CmZMLTpGYzr2duXh75m8=\n', ENV['GD_SPEC_PASSWORD'] || ENV['BIA_ENCRYPTION_KEY']) set_const :DEFAULT_DOMAIN, 'gooddata-tomas-korcak-gem-tester' - set_const :DEFAULT_USER_URL, '/gdc/account/profile/3cea1102d5584813506352a2a2a00d95' - set_const :DEFAULT_SERVER, 'https://secure.gooddata.com' - set_const :STAGING_URI, 'https://ea-di.staging.intgdc.com/uploads/' + set_const :DEFAULT_USER_URL, '' + + set_const :TEST_USERNAME, "john.doe@gooddata.com" + + set_const :DEFAULT_SERVER, '' + set_const :STAGING_URI, '' end module ProcessHelper - set_const :PROCESS_ID, '81fa71a4-69fd-4c58-aa09-66e7f53f4647' + set_const :PROCESS_ID, '' set_const :DEPLOY_NAME, 'graph.grf' end module ProjectHelper - set_const :PROJECT_ID, 'we1vvh4il93r0927r809i3agif50d7iz' + set_const :PROJECT_ID, '' set_const :PROJECT_URL, "/gdc/projects/#{PROJECT_ID}" set_const :PROJECT_TITLE, 'GoodTravis' set_const :PROJECT_SUMMARY, 'No summary' end module ScheduleHelper - set_const :SCHEDULE_ID, '54b90771e4b067429a27a549' + set_const :SCHEDULE_ID, '' end end end diff --git a/spec/environment/develop.rb b/spec/environment/develop.rb index 52cbcfaee..f00e5df1b 100644 --- a/spec/environment/develop.rb +++ b/spec/environment/develop.rb @@ -13,19 +13,15 @@ module ConnectionHelper end module ProcessHelper - set_const :PROCESS_ID, '98c836cf-bdf6-405e-bb8a-f4dc201588dd' - set_const :DEPLOY_NAME, 'gooddata_version.rb' + set_const :PROCESS_ID, '9c8fd686-6568-4275-bd6e-f0c302a7d8a1' end module ProjectHelper - set_const :PROJECT_ID, 'l11tat2c0v4ae6mtxjv74jk8c37xz5ra' - set_const :PROJECT_URL, "/gdc/projects/#{PROJECT_ID}" - set_const :PROJECT_TITLE, 'GoodTravis' - set_const :PROJECT_SUMMARY, 'No summary' + set_const :PROJECT_ID, 'wvuz7tq7tzjykubknhabg7dl613oyhtz' end module ScheduleHelper - set_const :SCHEDULE_ID, '57f42cfae4b041699a8eb52a' + set_const :SCHEDULE_ID, '583c08c8e4b00c626da96110' end end end diff --git a/spec/environment/hotfix.rb b/spec/environment/hotfix.rb index 5cf915db3..c200afc50 100644 --- a/spec/environment/hotfix.rb +++ b/spec/environment/hotfix.rb @@ -9,13 +9,20 @@ module Environment module ConnectionHelper set_const :DEFAULT_SERVER, 'https://staging2.intgdc.com' set_const :DEFAULT_USER_URL, '/gdc/account/profile/d8b356b30c0c12d1b4b97f56d6706ef2' + set_const :STAGING_URI, 'https://na1-staging2-di.intgdc.com/uploads/' + end + + module ProcessHelper + set_const :PROCESS_ID, 'eddb2d5f-c002-4cb4-a0ba-9b9b32c0a40f' end module ProjectHelper - set_const :PROJECT_ID, 'i640il7dyatqmvak24zzr09ypt3ghqu2' - set_const :PROJECT_URL, "/gdc/projects/#{PROJECT_ID}" - set_const :PROJECT_TITLE, 'GoodTravis' - set_const :PROJECT_SUMMARY, 'No summary' + set_const :PROJECT_ID, 'wrbjys321jmc1ut9tcfode4kh1j2o0k6' end + + module ScheduleHelper + set_const :SCHEDULE_ID, '583c08e1e4b00e7feeb4a2b3' + end + end end diff --git a/spec/environment/production.rb b/spec/environment/production.rb index 1bf9f750f..868fc78b7 100644 --- a/spec/environment/production.rb +++ b/spec/environment/production.rb @@ -8,28 +8,20 @@ module GoodData module Environment module ConnectionHelper set_const :DEFAULT_SERVER, 'https://secure.gooddata.com' - set_const :DEFAULT_USERNAME, "svarovsky+gem_tester@gooddata.com" - set_const :TEST_USERNAME, "john.doe@gooddata.com" - set_const :DEFAULT_PASSWORD, GoodData::Helpers.decrypt('9m5Fe6WIxtkoG9vi2CanKm/CmZMLTpGYzr2duXh75m8=\n', ENV['GD_SPEC_PASSWORD'] || ENV['BIA_ENCRYPTION_KEY']) - set_const :DEFAULT_DOMAIN, 'gooddata-tomas-svarovsky' - set_const :DEFAULT_USER_URL, '/gdc/account/profile/3cea1102d5584813506352a2a2a00d95' - set_const :DEFAULT_SERVER, 'https://secure.gooddata.com' + set_const :DEFAULT_USER_URL, '/gdc/account/profile/3cf6a27afeed76b55caedf292691ac8a' + set_const :STAGING_URI, 'https://secure-di.gooddata.com/uploads/' end module ProcessHelper - set_const :PROCESS_ID, '35ddce15-02b5-4dc5-b161-9fb25b73bd8b' - set_const :DEPLOY_NAME, 'graph.grf' + set_const :PROCESS_ID, 'f1d78cef-5d4a-4436-a63d-c4e1ef4b15b4' end module ProjectHelper - set_const :PROJECT_ID, 'cql548kue571k50guqvaccd10817zyup' - set_const :PROJECT_URL, "/gdc/projects/#{PROJECT_ID}" - set_const :PROJECT_TITLE, 'GoodTravis' - set_const :PROJECT_SUMMARY, 'No summary' + set_const :PROJECT_ID, 'zqeflkdchlzjzigrjjnyy5y9yqcqq8kf' end module ScheduleHelper - set_const :SCHEDULE_ID, '557ac000e4b041600876e967' + set_const :SCHEDULE_ID, '583c08ebe4b0dcdc1a4d9f62' end end end diff --git a/spec/environment/release.rb b/spec/environment/release.rb deleted file mode 100644 index cc1f292eb..000000000 --- a/spec/environment/release.rb +++ /dev/null @@ -1,21 +0,0 @@ -# encoding: UTF-8 -# -# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved. -# This source code is licensed under the BSD-style license found in the -# LICENSE file in the root directory of this source tree. - -module GoodData - module Environment - module ConnectionHelper - set_const :DEFAULT_SERVER, 'https://staging2.getgooddata.com' - set_const :DEFAULT_USER_URL, '/gdc/account/profile/d8b356b30c0c12d1b4b97f56d6706ef2' - end - - module ProjectHelper - set_const :PROJECT_ID, 'i640il7dyatqmvak24zzr09ypt3ghqu2' - set_const :PROJECT_URL, "/gdc/projects/#{PROJECT_ID}" - set_const :PROJECT_TITLE, 'GoodTravis' - set_const :PROJECT_SUMMARY, 'No summary' - end - end -end diff --git a/spec/environment/staging.rb b/spec/environment/staging.rb index e73d11591..9897fad3a 100644 --- a/spec/environment/staging.rb +++ b/spec/environment/staging.rb @@ -7,24 +7,21 @@ module GoodData module Environment module ConnectionHelper - set_const :DEFAULT_SERVER, 'https://staging.getgooddata.com' + set_const :DEFAULT_SERVER, 'https://staging.intgdc.com' set_const :DEFAULT_USER_URL, '/gdc/account/profile/6ca71a392e15700a4db4537f441eba39' + set_const :STAGING_URI, 'https://ea-di.staging.intgdc.com/uploads/' end module ProcessHelper - set_const :PROCESS_ID, '94e7be67-5f68-405d-bdeb-93006d50482d' - set_const :DEPLOY_NAME, 'graph/graph.grf' + set_const :PROCESS_ID, 'd5de77aa-cf96-4018-bbaa-09a905330c8a' end module ProjectHelper - set_const :PROJECT_ID, 'k8rzngunca3t9dywmxhqzpgwlui3yg0m' - set_const :PROJECT_URL, "/gdc/projects/#{PROJECT_ID}" - set_const :PROJECT_TITLE, 'GoodTravis' - set_const :PROJECT_SUMMARY, 'No summary' + set_const :PROJECT_ID, 'nz708agdlxos81clatziwpe6o5hph2c8' end module ScheduleHelper - set_const :SCHEDULE_ID, '55953261e4b0a92792febe4e' + set_const :SCHEDULE_ID, '583c08f2e4b0479e793a161f' end end end diff --git a/spec/environment/staging_3.rb b/spec/environment/staging_3.rb deleted file mode 100644 index 76a5f19ab..000000000 --- a/spec/environment/staging_3.rb +++ /dev/null @@ -1,36 +0,0 @@ -# encoding: UTF-8 -# -# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved. -# This source code is licensed under the BSD-style license found in the -# LICENSE file in the root directory of this source tree. - -module GoodData - module Environment - module ConnectionHelper - set_const :GD_PROJECT_TOKEN, ENV["GD_PROJECT_TOKEN"] - - set_const :DEFAULT_USERNAME, "svarovsky@gooddata.com" - set_const :TEST_USERNAME, "john.doe@gooddata.com" - set_const :DEFAULT_PASSWORD, GoodData::Helpers.decrypt('9m5Fe6WIxtkoG9vi2CanKm/CmZMLTpGYzr2duXh75m8=\n', ENV['GD_SPEC_PASSWORD'] || ENV['BIA_ENCRYPTION_KEY']) - set_const :DEFAULT_DOMAIN, 'svarovsky-test' - set_const :DEFAULT_USER_URL, '/gdc/account/profile/6e123be5a53dd863df5cf280fdb9c1fd' - set_const :DEFAULT_SERVER, 'https://staging3.getgooddata.com' - end - - module ProcessHelper - set_const :PROCESS_ID, 'eb9032d6-766c-45d4-a446-9103985ef9b9' - set_const :DEPLOY_NAME, 'graph.grf' - end - - module ProjectHelper - set_const :PROJECT_ID, 'fj6npa2wwl49vbzdbhk1doui3jqisexh' - set_const :PROJECT_URL, "/gdc/projects/#{PROJECT_ID}" - set_const :PROJECT_TITLE, 'GoodTravis' - set_const :PROJECT_SUMMARY, 'No summary' - end - - module ScheduleHelper - set_const :SCHEDULE_ID, '56bb4421e4b09a37d0ff0b70' - end - end -end From fedac9d36e026c59caeeafaee0deeb852a9ddd15 Mon Sep 17 00:00:00 2001 From: Tomas Korcak Date: Mon, 5 Dec 2016 21:18:39 +0100 Subject: [PATCH 02/19] Fix error --- lib/gooddata/models/domain.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/gooddata/models/domain.rb b/lib/gooddata/models/domain.rb index ae57e008e..f74ce9e09 100644 --- a/lib/gooddata/models/domain.rb +++ b/lib/gooddata/models/domain.rb @@ -94,7 +94,12 @@ def add_user(user_data, name = nil, opts = { :client => GoodData.connection }) error_type = GoodData::Helpers.get_path(error, %w(error errorClass)) case error_type when 'com.gooddata.webapp.service.userprovisioning.LoginNameAlreadyRegisteredException' - raise GoodData::UserInDifferentDomainError, "User #{data[:login]} is already in different domain" + u = Domain::find_user_by_login(domain_name, data[:login]) + if u + response = { 'uri' => u.uri } + else + raise GoodData::UserInDifferentDomainError, "User #{data[:login]} is already in different domain" + end when 'com.gooddata.json.validator.exception.MalformedMessageException' raise GoodData::MalformedUserError, "User #{data[:login]} is malformed. The message from API is #{GoodData::Helpers.interpolate_error_message(error)}" else From aa6b8617ab8d0bf77da6589fbe5fe9e8000f4019 Mon Sep 17 00:00:00 2001 From: vhtien Date: Wed, 7 Dec 2016 10:21:41 +0700 Subject: [PATCH 03/19] TRIVIAL: Make sure we can pick right token when creating project --- lib/gooddata/models/project.rb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/gooddata/models/project.rb b/lib/gooddata/models/project.rb index 08a1e9e6f..b5a0daeb2 100644 --- a/lib/gooddata/models/project.rb +++ b/lib/gooddata/models/project.rb @@ -126,15 +126,18 @@ def create_object(data = {}) # - :summary # - :template (default /projects/blank) # - def create(opts = { :client => GoodData.connection }, &block) + def create(opts = { client: GoodData.connection }, &block) GoodData.logger.info "Creating project #{opts[:title]}" c = client(opts) fail ArgumentError, 'No :client specified' if c.nil? - opts = { :auth_token => Helpers::AuthHelper.read_token }.merge(opts) auth_token = opts[:auth_token] || opts[:token] - fail ArgumentError, 'You have to provide your token for creating projects as :auth_token parameter' if auth_token.nil? || auth_token.empty? + if auth_token.nil? || auth_token.empty? + opts = { auth_token: Helpers::AuthHelper.read_token }.merge(opts) + auth_token = opts[:auth_token] + end + fail ArgumentError, 'You have to provide your token for creating projects as :auth_token or :token parameter' if auth_token.nil? || auth_token.empty? project = create_object(opts) project.save From 45fb775f9b88d67ddd0fca9bf8c63e7e716dc8f1 Mon Sep 17 00:00:00 2001 From: Tomas Korcak Date: Wed, 7 Dec 2016 09:24:57 +0100 Subject: [PATCH 04/19] Bump version to 0.6.50 --- lib/gooddata/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/gooddata/version.rb b/lib/gooddata/version.rb index 697fb5ef4..6afd2dd4c 100644 --- a/lib/gooddata/version.rb +++ b/lib/gooddata/version.rb @@ -6,7 +6,7 @@ # GoodData Module module GoodData - VERSION = '0.6.49' + VERSION = '0.6.50' class << self # Version From 28c22fbb9e4685b748600adcbe85f114f8c5c6bc Mon Sep 17 00:00:00 2001 From: vhtien Date: Thu, 8 Dec 2016 15:42:27 +0700 Subject: [PATCH 05/19] TRIVIAL: Replace deprecated usage --- spec/spec_helper.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 0141c148d..a37f210e1 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -75,9 +75,9 @@ end end -SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[ +SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new( SimpleCov::Formatter::HTMLFormatter -] +) SimpleCov.start do add_filter 'spec/' From 66f834e3c76e82152d779d85b5bc3f2e9dba2bfe Mon Sep 17 00:00:00 2001 From: vhtien Date: Thu, 8 Dec 2016 17:02:49 +0700 Subject: [PATCH 06/19] TRIVIAL: Update testing environment in develop mode --- spec/environment/develop.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/environment/develop.rb b/spec/environment/develop.rb index f00e5df1b..21200cd87 100644 --- a/spec/environment/develop.rb +++ b/spec/environment/develop.rb @@ -13,15 +13,15 @@ module ConnectionHelper end module ProcessHelper - set_const :PROCESS_ID, '9c8fd686-6568-4275-bd6e-f0c302a7d8a1' + set_const :PROCESS_ID, '193098ca-7c69-4816-a7b0-4418713a1aea' end module ProjectHelper - set_const :PROJECT_ID, 'wvuz7tq7tzjykubknhabg7dl613oyhtz' + set_const :PROJECT_ID, 'n2lyychqhthfb7yc54izgw9p7yov7s21' end module ScheduleHelper - set_const :SCHEDULE_ID, '583c08c8e4b00c626da96110' + set_const :SCHEDULE_ID, '5849273ae4b0fd665ac24b94' end end end From 84e80a265a9f06a8a18104c0b0f9e776e6c10083 Mon Sep 17 00:00:00 2001 From: vhtien Date: Fri, 9 Dec 2016 10:01:03 +0700 Subject: [PATCH 07/19] TRIVIAL: Fix PROJECT_URL cannot get info from PROJECT_ID in GoodData::Environment::ProjectHelper --- spec/environment/default.rb | 1 - spec/environment/environment.rb | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/environment/default.rb b/spec/environment/default.rb index 40d307373..8f4a61266 100644 --- a/spec/environment/default.rb +++ b/spec/environment/default.rb @@ -32,7 +32,6 @@ module ProcessHelper module ProjectHelper set_const :PROJECT_ID, '' - set_const :PROJECT_URL, "/gdc/projects/#{PROJECT_ID}" set_const :PROJECT_TITLE, 'GoodTravis' set_const :PROJECT_SUMMARY, 'No summary' end diff --git a/spec/environment/environment.rb b/spec/environment/environment.rb index 5c49f1aaa..1af182f28 100644 --- a/spec/environment/environment.rb +++ b/spec/environment/environment.rb @@ -18,6 +18,7 @@ def load(env = (ENV['GD_ENV'] && ENV['GD_ENV'].split('/')[1]) || 'develop') require_relative 'develop' end + GoodData::Environment::ProjectHelper.set_const :PROJECT_URL, "/gdc/projects/#{GoodData::Environment::ProjectHelper::PROJECT_ID}" ENV['GD_SERVER'] = GoodData::Environment::ConnectionHelper::DEFAULT_SERVER end end From 0a7a5f8363ab9dc34fd185325318bad46c126cc2 Mon Sep 17 00:00:00 2001 From: vhtien Date: Fri, 9 Dec 2016 10:19:56 +0700 Subject: [PATCH 08/19] TRIVIAL: Fix Webdav issue: URIs are relative --- lib/gooddata/rest/connection.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/gooddata/rest/connection.rb b/lib/gooddata/rest/connection.rb index 8094dc67e..79fc5abad 100644 --- a/lib/gooddata/rest/connection.rb +++ b/lib/gooddata/rest/connection.rb @@ -272,8 +272,8 @@ def download(what, where, options = {}) staging_uri = options[:staging_url].to_s - base_url = dir.empty? ? staging_uri : URI.join(staging_uri, "#{dir}/").to_s - url = URI.join(base_url, CGI.escape(what)).to_s + base_url = dir.empty? ? staging_uri : URI.join("#{server}", staging_uri, "#{dir}/").to_s + url = URI.join("#{server}", base_url, CGI.escape(what)).to_s b = proc do |f| raw = { @@ -460,12 +460,12 @@ def tt_token def upload(file, options = {}) dir = options[:directory] || '' staging_uri = options[:staging_url].to_s - url = dir.empty? ? staging_uri : URI.join(staging_uri, "#{dir}/").to_s + url = dir.empty? ? staging_uri : URI.join("#{server}", staging_uri, "#{dir}/").to_s # Make a directory, if needed create_webdav_dir_if_needed url unless dir.empty? webdav_filename = options[:filename] || File.basename(file) - do_stream_file URI.join(url, CGI.escape(webdav_filename)), file + do_stream_file URI.join("#{server}", url, CGI.escape(webdav_filename)), file end def generate_request_id From 76a8ab378ae96d1ef07ca0c4b27945f3aaf5caa6 Mon Sep 17 00:00:00 2001 From: vhtien Date: Fri, 9 Dec 2016 14:39:13 +0700 Subject: [PATCH 09/19] TRIVIAL: Fix schedule_spec --- spec/environment/default.rb | 2 +- spec/integration/schedule_spec.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/environment/default.rb b/spec/environment/default.rb index 8f4a61266..82fdc6f7b 100644 --- a/spec/environment/default.rb +++ b/spec/environment/default.rb @@ -27,7 +27,7 @@ module ConnectionHelper module ProcessHelper set_const :PROCESS_ID, '' - set_const :DEPLOY_NAME, 'graph.grf' + set_const :DEPLOY_NAME, 'cc/graph/graph.grf' end module ProjectHelper diff --git a/spec/integration/schedule_spec.rb b/spec/integration/schedule_spec.rb index b6d95ef41..185143242 100644 --- a/spec/integration/schedule_spec.rb +++ b/spec/integration/schedule_spec.rb @@ -538,7 +538,7 @@ it 'should be able to get name of the schedule.' do begin schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, ProcessHelper::DEPLOY_NAME, @test_data_with_optional_param) - expect(schedule.name).to eq ProcessHelper::DEPLOY_NAME + expect("cc/graph/#{schedule.name}").to eq ProcessHelper::DEPLOY_NAME ensure schedule && schedule.delete end @@ -587,7 +587,7 @@ begin process = @project.processes(ProcessHelper::PROCESS_ID) schedule = process.create_schedule(@test_cron, ProcessHelper::DEPLOY_NAME, @test_data_with_optional_param) - expect(schedule.name).to eq ProcessHelper::DEPLOY_NAME + expect("cc/graph/#{schedule.name}").to eq ProcessHelper::DEPLOY_NAME schedule.name = 'MY NAME' schedule.save schedule2 = process.schedules.find { |s| s.obj_id == schedule.obj_id } From 1aa360317b9246f1e64735a579dc4b84330237a0 Mon Sep 17 00:00:00 2001 From: vhtien Date: Mon, 12 Dec 2016 23:39:11 +0700 Subject: [PATCH 10/19] BUGFIX: TMA-200 Make sure restforce gem version is 2.4.x --- gooddata.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gooddata.gemspec b/gooddata.gemspec index dcf2e165a..34883a4d4 100644 --- a/gooddata.gemspec +++ b/gooddata.gemspec @@ -53,7 +53,7 @@ Gem::Specification.new do |s| s.add_dependency 'parseconfig', '~> 1.0', '>= 1.0.6' s.add_dependency 'pmap', '~> 1.0', '>= 1.0.2' s.add_dependency 'pry', '~> 0.10', '>= 0.10.3' - s.add_dependency 'restforce', '~> 2.1', '>= 2.1.1' + s.add_dependency 'restforce', '~> 2.4.0' s.add_dependency 'rest-client', '~> 1.8', '>= 1.8.0' s.add_dependency 'rubyzip', '~> 1.1', '>= 1.1.7' s.add_dependency 'salesforce_bulk_query', '~> 0.2', '>= 0.2.0' From 9ab65e5c803b52884d5acaae1b267fc03250bc6a Mon Sep 17 00:00:00 2001 From: vhtien Date: Tue, 13 Dec 2016 17:43:00 +0700 Subject: [PATCH 11/19] BUGFIX: TMA-203 Update dependencies --- gooddata.gemspec | 50 ++++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/gooddata.gemspec b/gooddata.gemspec index 34883a4d4..e834224a8 100644 --- a/gooddata.gemspec +++ b/gooddata.gemspec @@ -27,36 +27,36 @@ Gem::Specification.new do |s| s.homepage = 'http://github.com/gooddata/gooddata-ruby' s.require_paths = ['lib'] - s.add_development_dependency 'bundler', "~> 1.13", '>= 1.13.6' - s.add_development_dependency 'debase', '~> 0.1', '>= 0.1.7' if !ENV['TRAVIS_BUILD'] && RUBY_VERSION >= '2.0.0' - s.add_development_dependency 'license_finder', '~> 2.0', '>= 2.0.4' - s.add_development_dependency 'rake', '~> 11.1', '>= 11.1.1' - s.add_development_dependency 'rake-notes', '~> 0.2', '>= 0.2.0' - s.add_development_dependency 'redcarpet', '~> 3.1', '>= 3.1.1' if RUBY_PLATFORM != 'java' - s.add_development_dependency 'rspec', '~> 3.5', '>= 3.5.0' - s.add_development_dependency 'rspec-expectations', '~> 3.4', '>= 3.4.0' - s.add_development_dependency 'rubocop', '~> 0.45', '>= 0.45.0' + s.add_development_dependency 'bundler', "~> 1.13.0" + s.add_development_dependency 'debase', '~> 0.1.0' if !ENV['TRAVIS_BUILD'] && RUBY_VERSION >= '2.0.0' + s.add_development_dependency 'license_finder', '~> 2.0.0' + s.add_development_dependency 'rake', '~> 11.1.0' + s.add_development_dependency 'rake-notes', '~> 0.2.0' + s.add_development_dependency 'redcarpet', '~> 3.1.0' if RUBY_PLATFORM != 'java' + s.add_development_dependency 'rspec', '~> 3.5.0' + s.add_development_dependency 'rspec-expectations', '~> 3.5.0' + s.add_development_dependency 'rubocop', '~> 0.45.0' s.add_development_dependency 'ruby-debug-ide', '~> 0.4' if !ENV['TRAVIS_BUILD'] && RUBY_VERSION >= '2.0.0' - s.add_development_dependency 'simplecov', '~> 0.10', '>= 0.10.0' - s.add_development_dependency 'webmock', '~> 1.21', '>= 1.21.0' + s.add_development_dependency 'simplecov', '~> 0.10.0' + s.add_development_dependency 'webmock', '~> 1.21.0' s.add_development_dependency 'yard', '~> 0.8.7.6' s.add_development_dependency 'yard-rspec', '~> 0.1' - s.add_development_dependency 'ZenTest', '~> 4.10', '>= 4.11.0' + s.add_development_dependency 'ZenTest', '~> 4.11.0' s.add_dependency 'aws-sdk-v1', '~> 1.45' - s.add_dependency 'docile', '~> 1.1', '>= 1.1.5' - s.add_dependency 'erubis', '~> 2.7', '>= 2.7.0' - s.add_dependency 'gli', '~> 2.13', '>= 2.13.2' - s.add_dependency 'highline', '~> 1.7', '>= 1.7.3' - s.add_dependency 'json_pure', '~> 1.8', '>= 1.8.2' - s.add_dependency 'multi_json', '~> 1.11', '>= 1.11.2' - s.add_dependency 'parseconfig', '~> 1.0', '>= 1.0.6' - s.add_dependency 'pmap', '~> 1.0', '>= 1.0.2' - s.add_dependency 'pry', '~> 0.10', '>= 0.10.3' + s.add_dependency 'docile', '~> 1.1.0' + s.add_dependency 'erubis', '~> 2.7.0' + s.add_dependency 'gli', '~> 2.13.0' + s.add_dependency 'highline', '~> 1.7.0' + s.add_dependency 'json_pure', '~> 1.8.0' + s.add_dependency 'multi_json', '~> 1.11.0' + s.add_dependency 'parseconfig', '~> 1.0.0' + s.add_dependency 'pmap', '~> 1.0.0' + s.add_dependency 'pry', '~> 0.10.0' s.add_dependency 'restforce', '~> 2.4.0' - s.add_dependency 'rest-client', '~> 1.8', '>= 1.8.0' - s.add_dependency 'rubyzip', '~> 1.1', '>= 1.1.7' - s.add_dependency 'salesforce_bulk_query', '~> 0.2', '>= 0.2.0' - s.add_dependency 'terminal-table', '~> 1.5', '>= 1.5.2' + s.add_dependency 'rest-client', '~> 1.8.0' + s.add_dependency 'rubyzip', '~> 1.1.0' + s.add_dependency 'salesforce_bulk_query', '~> 0.2.0' + s.add_dependency 'terminal-table', '~> 1.5.0' s.add_dependency 'thread_safe' end From c47598973a905b6b03b857fbc2bf39f65662240e Mon Sep 17 00:00:00 2001 From: vhtien Date: Tue, 13 Dec 2016 22:51:26 +0700 Subject: [PATCH 12/19] RELATED: TMA-168 Remove pry --- CLI.md | 4 --- DEPENDENCIES.md | 8 ----- gooddata.gemspec | 1 - lib/gooddata/cli/commands/project_cmd.rb | 17 ----------- lib/gooddata/cli/hooks.rb | 1 - lib/gooddata/commands/project.rb | 30 ------------------- lib/gooddata/models/process.rb | 1 - spec/bricks/bricks_spec.rb | 1 - spec/logging_in_logging_out_spec.rb | 1 - .../models/blueprint/schema_builder_spec.rb | 1 - spec/unit/models/model_spec.rb | 1 - 11 files changed, 66 deletions(-) diff --git a/CLI.md b/CLI.md index 618b46f74..73b44cb03 100644 --- a/CLI.md +++ b/CLI.md @@ -223,10 +223,6 @@ tomaskorcak@kx-mac:~/$ gooddata -p tk6192gsnav58crp6o1ahsmtuniq8khb project invi Inviting tomas.korcak@gooddata.com, role: /gdc/projects/tk6192gsnav58crp6o1ahsmtuniq8khb/roles/2 ``` -### project jack_in - -If you are in a gooddata project blueprint or if you provide a project id it will start an interactive session inside that project - ### project list_users List users diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md index 87e6e2f5a..3a0c27f52 100644 --- a/DEPENDENCIES.md +++ b/DEPENDENCIES.md @@ -524,14 +524,6 @@ Add parallel methods into Enumerable: pmap and peach A few useful extensions to core Ruby classes. - -### pry v0.10.3 -#### An IRB alternative and runtime developer console - -MIT whitelisted - -An IRB alternative and runtime developer console - ### rainbow v2.0.0 #### Colorize printed text on ANSI terminals diff --git a/gooddata.gemspec b/gooddata.gemspec index e834224a8..64517c687 100644 --- a/gooddata.gemspec +++ b/gooddata.gemspec @@ -52,7 +52,6 @@ Gem::Specification.new do |s| s.add_dependency 'multi_json', '~> 1.11.0' s.add_dependency 'parseconfig', '~> 1.0.0' s.add_dependency 'pmap', '~> 1.0.0' - s.add_dependency 'pry', '~> 0.10.0' s.add_dependency 'restforce', '~> 2.4.0' s.add_dependency 'rest-client', '~> 1.8.0' s.add_dependency 'rubyzip', '~> 1.1.0' diff --git a/lib/gooddata/cli/commands/project_cmd.rb b/lib/gooddata/cli/commands/project_cmd.rb index 622fa45d4..aa42ade12 100644 --- a/lib/gooddata/cli/commands/project_cmd.rb +++ b/lib/gooddata/cli/commands/project_cmd.rb @@ -16,15 +16,6 @@ module CLI arg_name 'project_command' command :project do |c| - c.desc 'If you are in a gooddata project blueprint or if you provide a project id it will start an interactive session inside that project' - c.command :jack_in do |jack| - jack.action do |global_options, options, _args| - warn '[DEPRECATION] `gooddata project jack_in` is deprecated. Please use `gooddata jack_in` instead.' - opts = options.merge(global_options) - GoodData::Command::Project.jack_in(opts) - end - end - c.desc 'Shows users in project' c.command :users do |users| users.action do |global_options, options, _args| @@ -33,13 +24,5 @@ module CLI end end end - - desc 'If you are in a gooddata project blueprint or if you provide a project id it will start an interactive session inside that project' - command :jack_in do |jack| - jack.action do |global_options, options, _args| - opts = options.merge(global_options) - GoodData::Command::Project.jack_in(opts) - end - end end end diff --git a/lib/gooddata/cli/hooks.rb b/lib/gooddata/cli/hooks.rb index cdd1bcf96..860ca1934 100644 --- a/lib/gooddata/cli/hooks.rb +++ b/lib/gooddata/cli/hooks.rb @@ -49,7 +49,6 @@ on_error do |_exception| # Error logic here # return false to skip default error handling - # binding.pry # pp exception.backtrace # pp exception true diff --git a/lib/gooddata/commands/project.rb b/lib/gooddata/commands/project.rb index 2542f04d0..62cf7ed7f 100644 --- a/lib/gooddata/commands/project.rb +++ b/lib/gooddata/commands/project.rb @@ -103,36 +103,6 @@ def validate(project_id, options = { client: GoodData.connection }) client.with_project(project_id, &:validate) end - def jack_in(options) - goodfile_path = GoodData::Helpers.find_goodfile(Pathname('.')) - - spin_session = proc do |goodfile| - project_id = options[:project_id] || goodfile[:project_id] - - begin - require 'gooddata' - client = GoodData.connect(options) - project = client.projects(project_id) if project_id - puts "Use 'exit' to quit the live session. Use 'q' to jump out of displaying a large output." - binding.pry(:quiet => true, # rubocop:disable Lint/Debugger - :prompt => [proc do |_target_self, _nest_level, _pry| - 'project_live_session: ' - end]) - rescue GoodData::ProjectNotFound - puts "Project with id \"#{project_id}\" could not be found. Make sure that the id you provided is correct." - end - end - - if goodfile_path - goodfile = MultiJson.load(File.read(goodfile_path), :symbolize_keys => true) - FileUtils.cd(goodfile_path.dirname) do - spin_session.call(goodfile) - end - else - spin_session.call({}, nil) - end - end - # Lists roles in a project # # @param project_id [String | GoodData::Project] Project id or project instance to list the users in diff --git a/lib/gooddata/models/process.rb b/lib/gooddata/models/process.rb index 91f0ff020..ada3c97f7 100644 --- a/lib/gooddata/models/process.rb +++ b/lib/gooddata/models/process.rb @@ -4,7 +4,6 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. -require 'pry' require 'zip' require 'uri' diff --git a/spec/bricks/bricks_spec.rb b/spec/bricks/bricks_spec.rb index c479c23fb..763bad7de 100644 --- a/spec/bricks/bricks_spec.rb +++ b/spec/bricks/bricks_spec.rb @@ -7,7 +7,6 @@ require 'gooddata/bricks/brick' require 'gooddata/bricks/bricks' require 'gooddata/bricks/middleware/base_middleware' -require 'pry' describe GoodData::Bricks do it "Has GoodData::Bricks::Brick class" do diff --git a/spec/logging_in_logging_out_spec.rb b/spec/logging_in_logging_out_spec.rb index b326f776b..23662c53d 100644 --- a/spec/logging_in_logging_out_spec.rb +++ b/spec/logging_in_logging_out_spec.rb @@ -5,7 +5,6 @@ # LICENSE file in the root directory of this source tree. require 'gooddata' -require 'pry' describe GoodData::Rest::Connection, :constraint => 'slow' do diff --git a/spec/unit/models/blueprint/schema_builder_spec.rb b/spec/unit/models/blueprint/schema_builder_spec.rb index ee52547b7..1ceb44ed5 100644 --- a/spec/unit/models/blueprint/schema_builder_spec.rb +++ b/spec/unit/models/blueprint/schema_builder_spec.rb @@ -4,7 +4,6 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. -require 'pry' require 'gooddata/models/model' describe GoodData::Model::SchemaBuilder do diff --git a/spec/unit/models/model_spec.rb b/spec/unit/models/model_spec.rb index 237859591..3d5a293d8 100644 --- a/spec/unit/models/model_spec.rb +++ b/spec/unit/models/model_spec.rb @@ -4,7 +4,6 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. -require 'pry' require 'gooddata/models/model' describe GoodData::Model do From ff377a814ee36cfd42407e103b1ee7f81babea5b Mon Sep 17 00:00:00 2001 From: vhtien Date: Wed, 14 Dec 2016 12:58:45 +0700 Subject: [PATCH 13/19] BUGFIX: TMA-182 Merging of gd_encoded_params and gd_encoded_hidden_params doesn't work for user filter brick --- lib/gooddata/extensions/hash.rb | 11 +++++++++++ lib/gooddata/helpers/global_helpers_params.rb | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/gooddata/extensions/hash.rb b/lib/gooddata/extensions/hash.rb index 98a07cee9..16b8a5607 100644 --- a/lib/gooddata/extensions/hash.rb +++ b/lib/gooddata/extensions/hash.rb @@ -35,4 +35,15 @@ def slice(*keys) def compact select { |_, value| !value.nil? } end + + def deep_merge(hash) + hash = hash.to_hash + merge(hash) do |key, old_val, new_val| + if old_val.is_a?(Hash) && new_val.is_a?(Hash) + old_val.deep_merge(new_val) + else + new_val + end + end + end end diff --git a/lib/gooddata/helpers/global_helpers_params.rb b/lib/gooddata/helpers/global_helpers_params.rb index b54682ffb..20a3c7075 100644 --- a/lib/gooddata/helpers/global_helpers_params.rb +++ b/lib/gooddata/helpers/global_helpers_params.rb @@ -78,7 +78,7 @@ def decode_params(params) parsed_hidden_data_params[ENCODED_HIDDEN_PARAMS_KEY] = nil unless parsed_hidden_data_params.empty? params.delete(key) params.delete(hidden_key) - params.merge(parsed_data_params).merge(parsed_hidden_data_params) + params.deep_merge(parsed_data_params).deep_merge(parsed_hidden_data_params) end # A helper which allows you to diff two lists of objects. The objects From 05f651237b04d072f2a98baf70d080944444b1e1 Mon Sep 17 00:00:00 2001 From: vhtien Date: Mon, 19 Dec 2016 15:32:11 +0700 Subject: [PATCH 14/19] BUGFIX: BIA-541 Use the simplecov version 0.12.x --- gooddata.gemspec | 2 +- lib/gooddata/extensions/hash.rb | 2 +- lib/gooddata/models/domain.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gooddata.gemspec b/gooddata.gemspec index 64517c687..2dafdb289 100644 --- a/gooddata.gemspec +++ b/gooddata.gemspec @@ -37,7 +37,7 @@ Gem::Specification.new do |s| s.add_development_dependency 'rspec-expectations', '~> 3.5.0' s.add_development_dependency 'rubocop', '~> 0.45.0' s.add_development_dependency 'ruby-debug-ide', '~> 0.4' if !ENV['TRAVIS_BUILD'] && RUBY_VERSION >= '2.0.0' - s.add_development_dependency 'simplecov', '~> 0.10.0' + s.add_development_dependency 'simplecov', '~> 0.12.0' s.add_development_dependency 'webmock', '~> 1.21.0' s.add_development_dependency 'yard', '~> 0.8.7.6' s.add_development_dependency 'yard-rspec', '~> 0.1' diff --git a/lib/gooddata/extensions/hash.rb b/lib/gooddata/extensions/hash.rb index 16b8a5607..a04bd7301 100644 --- a/lib/gooddata/extensions/hash.rb +++ b/lib/gooddata/extensions/hash.rb @@ -38,7 +38,7 @@ def compact def deep_merge(hash) hash = hash.to_hash - merge(hash) do |key, old_val, new_val| + merge(hash) do |_key, old_val, new_val| if old_val.is_a?(Hash) && new_val.is_a?(Hash) old_val.deep_merge(new_val) else diff --git a/lib/gooddata/models/domain.rb b/lib/gooddata/models/domain.rb index f74ce9e09..82e073e9a 100644 --- a/lib/gooddata/models/domain.rb +++ b/lib/gooddata/models/domain.rb @@ -94,7 +94,7 @@ def add_user(user_data, name = nil, opts = { :client => GoodData.connection }) error_type = GoodData::Helpers.get_path(error, %w(error errorClass)) case error_type when 'com.gooddata.webapp.service.userprovisioning.LoginNameAlreadyRegisteredException' - u = Domain::find_user_by_login(domain_name, data[:login]) + u = Domain.find_user_by_login(domain_name, data[:login]) if u response = { 'uri' => u.uri } else From 94b77cf7f7c6bf8e8b097e6bd86afbfb65c3a118 Mon Sep 17 00:00:00 2001 From: Tomas Korcak Date: Mon, 19 Dec 2016 14:12:49 +0100 Subject: [PATCH 15/19] Per segment stuff --- lib/gooddata/lcm/lcm.rb | 12 ++++++------ lib/gooddata/models/domain.rb | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/lib/gooddata/lcm/lcm.rb b/lib/gooddata/lcm/lcm.rb index aaccee0b2..26e6b2fac 100644 --- a/lib/gooddata/lcm/lcm.rb +++ b/lib/gooddata/lcm/lcm.rb @@ -27,7 +27,9 @@ def ensure_users(domain, migration_spec, filter_on_segment = []) messages end - def transfer_everything(client, domain, migration_spec, filter_on_segment = [], opts = {}) + def transfer_everything(client, domain, migration_spec, opts = {}) + filter_on_segment = migration_spec['segments'] || [] + puts 'Ensuring Users - warning: works across whole domain not just provided segment(s)' ensure_users(domain, migration_spec, filter_on_segment) @@ -38,8 +40,6 @@ def transfer_everything(client, domain, migration_spec, filter_on_segment = [], maql_replacements: opts[:maql_replacements] || opts['maql_replacements'] } - tags = opts[:production_tag] || opts['production_tag'] - domain.segments.peach do |segment| next if !filter_on_segment.empty? && !(filter_on_segment.include?(segment.id)) bp = segment.master_project.blueprint @@ -76,15 +76,15 @@ def transfer_everything(client, domain, migration_spec, filter_on_segment = [], s.update_hidden_params(migration_spec[:additional_hidden_params] || {}) s.save end - - GoodData::Project.transfer_tagged_stuff(segment_master, project, tags) if tags end puts 'Migrating Dashboards' if filter_on_segment.empty? domain.synchronize_clients else - filter_on_segment.map { |s| domain.segments(s).synchronize_clients } + filter_on_segment.map do |s| + domain.segments(s).synchronize_clients + end end end diff --git a/lib/gooddata/models/domain.rb b/lib/gooddata/models/domain.rb index f74ce9e09..faec0e467 100644 --- a/lib/gooddata/models/domain.rb +++ b/lib/gooddata/models/domain.rb @@ -391,8 +391,18 @@ def synchronize_clients # Runs async process that walks through segments and provisions projects if necessary. # # @return [Enumerator] Returns Enumerator of results - def provision_client_projects - res = client.post(segments_uri + '/provisionClientProjects', nil) + def provision_client_projects(segments = nil) + body = if segments + { + provisionClientProjects: { + segments: segments.kind_of?(Array) ? segments : [segments] + } + } + else + nil + end + + res = client.post(segments_uri + '/provisionClientProjects', body) res = client.poll_on_code(res['asyncTask']['links']['poll']) failed_count = GoodData::Helpers.get_path(res, %w(clientProjectProvisioningResult failed count), 0) created_count = GoodData::Helpers.get_path(res, %w(clientProjectProvisioningResult created count), 0) From cf7b1becc63ea42571c3a4b756cf7c0db97e473b Mon Sep 17 00:00:00 2001 From: Tomas Korcak Date: Tue, 20 Dec 2016 12:36:05 +0100 Subject: [PATCH 16/19] Support for do_not_synchronize_clients in migration spec --- lib/gooddata/lcm/lcm.rb | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/gooddata/lcm/lcm.rb b/lib/gooddata/lcm/lcm.rb index 26e6b2fac..30ee39fd6 100644 --- a/lib/gooddata/lcm/lcm.rb +++ b/lib/gooddata/lcm/lcm.rb @@ -78,12 +78,15 @@ def transfer_everything(client, domain, migration_spec, opts = {}) end end - puts 'Migrating Dashboards' - if filter_on_segment.empty? - domain.synchronize_clients - else - filter_on_segment.map do |s| - domain.segments(s).synchronize_clients + do_not_synchronize_clients = migration_spec[:do_not_synchronize_clients] + if do_not_synchronize_clients.nil? || !do_not_synchronize_clients + puts 'Migrating Dashboards' + if filter_on_segment.empty? + domain.synchronize_clients + else + filter_on_segment.map do |s| + domain.segments(s).synchronize_clients + end end end end From 3ed6ada78ce2807baef14f0e50dfc769cf042350 Mon Sep 17 00:00:00 2001 From: vhtien Date: Tue, 20 Dec 2016 13:19:48 +0700 Subject: [PATCH 17/19] BUGFIX: TMA-162 Make sure delete projects after testing in /spec/integration --- lib/gooddata/models/domain.rb | 4 +--- spec/integration/clients_spec.rb | 10 +--------- spec/integration/create_project_spec.rb | 9 ++++++--- .../integration/full_process_schedule_spec.rb | 2 +- spec/integration/schedule_spec.rb | 8 ++++---- spec/integration/segments_spec.rb | 20 ++++++++++++------- spec/integration/user_group_spec.rb | 2 +- 7 files changed, 27 insertions(+), 28 deletions(-) diff --git a/lib/gooddata/models/domain.rb b/lib/gooddata/models/domain.rb index c24a6352c..c11e77c20 100644 --- a/lib/gooddata/models/domain.rb +++ b/lib/gooddata/models/domain.rb @@ -395,11 +395,9 @@ def provision_client_projects(segments = nil) body = if segments { provisionClientProjects: { - segments: segments.kind_of?(Array) ? segments : [segments] + segments: segments.is_a?(Array) ? segments : [segments] } } - else - nil end res = client.post(segments_uri + '/provisionClientProjects', body) diff --git a/spec/integration/clients_spec.rb b/spec/integration/clients_spec.rb index fbf07b911..057812c83 100644 --- a/spec/integration/clients_spec.rb +++ b/spec/integration/clients_spec.rb @@ -44,8 +44,8 @@ end after(:all) do - @segment_client && @segment_client.delete @client_project && @client_project.delete + @segment_client && @segment_client.delete end end @@ -63,10 +63,6 @@ expect(@segment.clients.count).to eq 0 @segment_client = nil end - - after(:all) do - @segment_client && @segment_client.delete - end end describe '#delete' do @@ -84,10 +80,6 @@ expect(@client_project.reload!.state).to eq :deleted @segment_client = nil end - - after(:all) do - @segment_client && @segment_client.delete - end end describe '#save' do diff --git a/spec/integration/create_project_spec.rb b/spec/integration/create_project_spec.rb index a0b4d52b8..8a83f3cf9 100644 --- a/spec/integration/create_project_spec.rb +++ b/spec/integration/create_project_spec.rb @@ -17,8 +17,11 @@ it 'Should create project using GoodData::Rest::Client#create_project' do project_title = 'Test #create_project' - project = @client.create_project(:title => project_title, :auth_token => ConnectionHelper::GD_PROJECT_TOKEN, environment: ProjectHelper::ENVIRONMENT) - expect(project.title).to eq(project_title) - project.delete + begin + project = @client.create_project(:title => project_title, :auth_token => ConnectionHelper::GD_PROJECT_TOKEN, environment: ProjectHelper::ENVIRONMENT) + expect(project.title).to eq(project_title) + ensure + project.delete if project + end end end diff --git a/spec/integration/full_process_schedule_spec.rb b/spec/integration/full_process_schedule_spec.rb index 8f31dd64f..6dc1fd3d6 100644 --- a/spec/integration/full_process_schedule_spec.rb +++ b/spec/integration/full_process_schedule_spec.rb @@ -44,7 +44,7 @@ ProcessHelper.remove_old_processes(@project) # @process.delete if @process - # @project.delete if @project + @project.delete if @project @client.disconnect end diff --git a/spec/integration/schedule_spec.rb b/spec/integration/schedule_spec.rb index 185143242..d55a622f5 100644 --- a/spec/integration/schedule_spec.rb +++ b/spec/integration/schedule_spec.rb @@ -11,12 +11,12 @@ SCHEDULE_ID = ScheduleHelper::SCHEDULE_ID SCHEDULE_URL = "/gdc/projects/#{ProjectHelper::PROJECT_ID}/schedules/#{SCHEDULE_ID}" - before(:all) do - @client = ConnectionHelper.create_default_connection - @project = ProjectHelper.get_default_project(:client => @client) + # before(:all) do + # @client = ConnectionHelper.create_default_connection + # @project = ProjectHelper.get_default_project(:client => @client) # ScheduleHelper.remove_old_schedules(@project) # ProcessHelper.remove_old_processes(@project) - end + # end before(:each) do @client = ConnectionHelper.create_default_connection diff --git a/spec/integration/segments_spec.rb b/spec/integration/segments_spec.rb index 86cfa3b7a..be61b0103 100644 --- a/spec/integration/segments_spec.rb +++ b/spec/integration/segments_spec.rb @@ -23,11 +23,11 @@ end after(:each) do + @master_project.delete if @master_project @segment && @segment.delete(force: true) end after(:all) do - @master_project.delete if @master_project @client.disconnect end @@ -58,12 +58,16 @@ describe '#save' do it 'can update a segment master project' do - different_master = @client.create_project(title: 'Test project', auth_token: TOKEN) - @segment.master_project = different_master - @segment.save - @segment = @domain.segments(@segment_name) - expect(@segment.master_project_uri).not_to eq @master_project.uri - expect(@segment.master_project_uri).to eq different_master.uri + begin + different_master = @client.create_project(title: 'Test project', auth_token: TOKEN) + @segment.master_project = different_master + @segment.save + @segment = @domain.segments(@segment_name) + expect(@segment.master_project_uri).not_to eq @master_project.uri + expect(@segment.master_project_uri).to eq different_master.uri + ensure + different_master.delete if different_master + end end it 'cannot update a segment id' do @@ -82,6 +86,7 @@ expect(segment_client).to be_an_instance_of(GoodData::Client) expect(@segment.clients.count).to eq 1 ensure + client_project.delete if client_project segment_client && segment_client.delete end end @@ -134,6 +139,7 @@ expect(@domain.segments.pmapcat {|s| s.clients.to_a }.map(&:id)).not_to include(client_1, client_2) expect(projects_to_delete.pmap(&:reload!).map(&:state)).to eq [:deleted, :deleted] ensure + master_project_2.delete if master_project_2 segment_2.delete(force: true) if segment_2 end end diff --git a/spec/integration/user_group_spec.rb b/spec/integration/user_group_spec.rb index 140069624..0caf29eb4 100644 --- a/spec/integration/user_group_spec.rb +++ b/spec/integration/user_group_spec.rb @@ -29,7 +29,7 @@ end after(:all) do - @group && @group.delete + # @group && @group.delete @project && @project.delete @client.disconnect end From 20e32634fe39f9d115079a9bbd5cbd3b11a6904e Mon Sep 17 00:00:00 2001 From: vhtien Date: Wed, 21 Dec 2016 16:46:26 +0700 Subject: [PATCH 18/19] TRIVIAL: Disable all pending cases --- spec/integration/user_filters_spec.rb | 2 +- spec/integration/variables_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/integration/user_filters_spec.rb b/spec/integration/user_filters_spec.rb index 41f8058f0..3c7b9c79f 100644 --- a/spec/integration/user_filters_spec.rb +++ b/spec/integration/user_filters_spec.rb @@ -209,7 +209,7 @@ .to include([ConnectionHelper::DEFAULT_USERNAME, "[Dev] IN ([tomas@gooddata.com])"], [another_user.login, "[Dev] IN ([tomas@gooddata.com])"]) end - it "should be able to update the filter value" do + it "should be able to update the filter value", broken: true do pending 'FIXME: We cannot swap filters yet' filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, "tomas@gooddata.com", "jirka@gooddata.com"]] diff --git a/spec/integration/variables_spec.rb b/spec/integration/variables_spec.rb index 6b2f85ef5..1d0100874 100644 --- a/spec/integration/variables_spec.rb +++ b/spec/integration/variables_spec.rb @@ -175,7 +175,7 @@ [another_user.login, "[Dev] IN ([tomas@gooddata.com])"]) end - it "should be able to update the filter value in place" do + it "should be able to update the filter value in place", broken: true do pending 'FIXME: We cannot swap filters yet' filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, "tomas@gooddata.com", "jirka@gooddata.com"]] From 6f9d961d5b15699db311c107992c708983e9e342 Mon Sep 17 00:00:00 2001 From: vhtien Date: Wed, 21 Dec 2016 10:43:42 +0700 Subject: [PATCH 19/19] FEATURE: TMA-202 Secure parameter handling in LCM bricks --- lib/gooddata/helpers/global_helpers_params.rb | 24 ++++++++++++++++++- spec/unit/helpers/global_helpers_spec.rb | 14 +++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/lib/gooddata/helpers/global_helpers_params.rb b/lib/gooddata/helpers/global_helpers_params.rb index 20a3c7075..9012ce097 100644 --- a/lib/gooddata/helpers/global_helpers_params.rb +++ b/lib/gooddata/helpers/global_helpers_params.rb @@ -55,6 +55,26 @@ def encode_hidden_params(params) # Decodes params as they came from the platform # The "data" key is supposed to be json and it's parsed - if this def decode_params(params) + convert_secure_params = lambda do |args| + args = args.select { |k, _| k.include? "|" } + lines = args.keys.map do |key| + hash = {} + last_a = nil + last_e = nil + key.split("|").reduce(hash) do |a, e| + last_a = a + last_e = e + a[e] = {} + end + last_a[last_e] = args[key] + hash + end + + lines.reduce({}) do |a, e| + a.deep_merge(e) + end + end + key = ENCODED_PARAMS_KEY.to_s hidden_key = ENCODED_HIDDEN_PARAMS_KEY.to_s data_params = params[key] || '{}' @@ -76,9 +96,11 @@ def decode_params(params) # Add the nil on ENCODED_HIDDEN_PARAMS_KEY # if the data was retrieved from API You will not have the actual values so encode -> decode is not losless. The nil on the key prevents the server from deleting the key parsed_hidden_data_params[ENCODED_HIDDEN_PARAMS_KEY] = nil unless parsed_hidden_data_params.empty? + secure_params = convert_secure_params.call(params) + params.delete_if { |k, _| k.include? "|" } params.delete(key) params.delete(hidden_key) - params.deep_merge(parsed_data_params).deep_merge(parsed_hidden_data_params) + params.deep_merge(parsed_data_params).deep_merge(parsed_hidden_data_params).deep_merge(secure_params) end # A helper which allows you to diff two lists of objects. The objects diff --git a/spec/unit/helpers/global_helpers_spec.rb b/spec/unit/helpers/global_helpers_spec.rb index 7a4764374..f68cfbe84 100644 --- a/spec/unit/helpers/global_helpers_spec.rb +++ b/spec/unit/helpers/global_helpers_spec.rb @@ -107,5 +107,19 @@ {:id=>"c", :y=>"BAR", :x=>2}] end + it 'should encode secure params' do + x = GoodData::Helpers.decode_params({ + "x" => "y", + "d|b|foo" => "bar", + "d|b|e|w" => "z", + GoodData::Helpers::ENCODED_PARAMS_KEY.to_s => '{"d":{"b":{"c": "a"}}}', + GoodData::Helpers::ENCODED_HIDDEN_PARAMS_KEY.to_s => '{"d":{"b":{"e":{"f": "g"}}}}' + }) + expect(x).to eq({ + "x"=>"y", + "d" => { "b" => { "c" => "a", "e" => { "f" => "g", "w" => "z" }, "foo" => "bar" } }, + "gd_encoded_hidden_params"=>nil + }) + end end end