spec/unit/helpers_spec.rb in gooddata-0.6.49 vs spec/unit/helpers_spec.rb in gooddata-0.6.50

- old
+ new

@@ -1,8 +1,8 @@ # encoding: UTF-8 # -# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved. +# Copyright (c) 2010-2017 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. require 'gooddata/client' require 'gooddata/models/model' @@ -15,18 +15,22 @@ end describe '#running_on_windows?' do it 'works' do result = GoodData::Helpers.running_on_windows? + # rubocop:disable Style/DoubleNegation !!result.should == result + # rubocop:enable Style/DoubleNegation end end describe '#running_on_mac?' do it 'works' do result = GoodData::Helpers.running_on_a_mac? + # rubocop:disable Style/DoubleNegation !!result.should == result + # rubocop:enable Style/DoubleNegation end end describe '#error' do it 'works' do @@ -43,11 +47,11 @@ describe "#decode_params" do it 'decodes the data params from json' do params = { 'param' => 'value', 'number_param' => 5, - 'gd_encoded_params' => '{"deep": {"deeper": "deep value"}}', + 'gd_encoded_params' => '{"deep": {"deeper": "deep value"}}' } expected_result = { 'param' => 'value', 'number_param' => 5, 'deep' => { @@ -72,9 +76,142 @@ } } result = GoodData::Helpers.decode_params(params) expect(result).to eq(expected_result) end + + it 'decodes the reference parameters in gd_encoded_params in String form' do + params = { + 'param' => 'value', + 'number_param' => 5, + 'ads_password' => 'ads_123', + 'my_password' => 'login_123', + 'gd_encoded_params' => '{"login_username": "login_user", "login_password": "${my_password}", "data01": "\\\\${my_password}", "data02":"abc\\\\def"}' + } + expected_result = { + 'param' => 'value', + 'number_param' => 5, + 'ads_password' => 'ads_123', + 'my_password' => 'login_123', + 'login_username' => 'login_user', + 'login_password' => 'login_123', + 'data01' => '\\login_123', + 'data02' => 'abc\\def' + } + result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true) + expect(result).to eq(expected_result) + end + + it 'decodes the reference parameters in gd_encoded_params in Hash form' do + params = { + 'param' => 'value', + 'number_param' => 5, + 'ads_password' => 'ads_123', + 'my_password' => 'login_123', + 'gd_encoded_params' => { "login_username" => "login_user", "login_password" => "${my_password}", "data01" => "\\\\${my_password}", "data02" => "abc\\def" } + } + expected_result = { + 'param' => 'value', + 'number_param' => 5, + 'ads_password' => 'ads_123', + 'my_password' => 'login_123', + 'login_username' => 'login_user', + 'login_password' => 'login_123', + 'data01' => '\\login_123', + 'data02' => 'abc\\def' + } + result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true) + expect(result).to eq(expected_result) + end + + it 'decodes escape the reference parameters in gd_encoded_params in String form' do + params = { + 'param' => 'value', + 'number_param' => 5, + 'ads_password' => 'ads_123', + 'my_password' => 'login_123', + 'gd_encoded_params' => '{"login_username": "login_user", "data01": "\\${abc}"}' + } + expected_result = { + 'param' => 'value', + 'number_param' => 5, + 'ads_password' => 'ads_123', + 'my_password' => 'login_123', + 'login_username' => 'login_user', + 'data01' => '${abc}' + } + result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true) + expect(result).to eq(expected_result) + end + + it 'decodes escape the reference parameters in gd_encoded_params in Hash form' do + params = { + 'param' => 'value', + 'number_param' => 5, + 'ads_password' => 'ads_123', + 'my_password' => 'login_123', + 'gd_encoded_params' => { "login_username" => "login_user", "data01" => "\\${abc}" } + } + expected_result = { + 'param' => 'value', + 'number_param' => 5, + 'ads_password' => 'ads_123', + 'my_password' => 'login_123', + 'login_username' => 'login_user', + 'data01' => '${abc}' + } + result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true) + expect(result).to eq(expected_result) + end + + it 'decodes the reference parameters in nested block in gd_encoded_params in String form' do + params = { + 'param' => 'value', + 'number_param' => 5, + 'ads_password' => 'ads_123', + 'my_password' => 'login_123', + 'gd_encoded_params' => '{"login_username": "login_user", "login_password": "${my_password}", "ads_client": {"username": "ads_user", "password": "${ads_password}"}}' + } + expected_result = { + 'param' => 'value', + 'number_param' => 5, + 'ads_password' => 'ads_123', + 'my_password' => 'login_123', + 'login_username' => 'login_user', + 'login_password' => 'login_123', + 'ads_client' => { + 'username' => 'ads_user', + 'password' => 'ads_123' + } + } + result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true) + expect(result).to eq(expected_result) + end + + it 'decodes the reference parameters in nested block in gd_encoded_params in Hash form' do + params = { + 'param' => 'value', + 'number_param' => 5, + 'ads_password' => 'ads_123', + 'my_password' => 'login_123', + 'gd_encoded_params' => { "login_username" => "login_user", "login_password" => "${my_password}", "ads_client" => { "username" => "ads_user", "password" => "${ads_password}" } } + } + expected_result = { + 'param' => 'value', + 'number_param' => 5, + 'ads_password' => 'ads_123', + 'my_password' => 'login_123', + 'login_username' => 'login_user', + 'login_password' => 'login_123', + 'ads_client' => { + 'username' => 'ads_user', + 'password' => 'ads_123' + } + } + result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true) + expect(result).to eq(expected_result) + end + it 'throws an error when data params is not a valid json' do params = { 'param' => 'value', 'number_param' => 5, 'gd_encoded_params' => 'This is no json.'