Skip to content

Commit d4a35da

Browse files
Sang Truongphong-nguyen-duy
authored andcommitted
BUGFIX:ATM-1673 - Update params processing to accept dot and space
1 parent 387c6eb commit d4a35da

2 files changed

Lines changed: 29 additions & 2 deletions

File tree

lib/gooddata/helpers/global_helpers_params.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ def stringify_values(value)
242242

243243
def resolve_reference_params(data_params, params)
244244
reference_values = []
245-
regexps = Regexp.union(/\\\\/, /\\\$/, /\$\{(\w+)\}/)
245+
regexps = Regexp.union(/\\\\/, /\\\$/, /\$\{([\w\s\.]+)\}/)
246246
resolve_reference = lambda do |v|
247247
if v.is_a? Hash
248248
Hash[
@@ -262,7 +262,7 @@ def resolve_reference_params(data_params, params)
262262
data_params.is_a?(Hash) ? '\\' : '\\\\' # rubocop: disable Metrics/BlockNesting
263263
elsif match =~ /\\\$/
264264
'$'
265-
elsif match =~ /\$\{(\w+)\}/
265+
elsif match =~ /\$\{([\w\s\.]+)\}/
266266
val = params["#{$1}"]
267267
if val
268268
reference_values << val

spec/unit/helpers/global_helpers_spec.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,33 @@
157157
expect(result).to eq(expected_result)
158158
end
159159

160+
it 'should encode multiple reference parameters in gd_encoded_params' do
161+
params = {
162+
'x' => 'y',
163+
'ads_password' => 'ads_123',
164+
'my_password' => 'login_123',
165+
'alias.user' => 'qa+test@gooddata.com',
166+
'alias.segment' => 'UserTestSegmentK8s',
167+
'gd_encoded_params' => '{"login_username": "${alias.user}",
168+
"login_password": "abc_${my_password}_123" ,
169+
"SEGMENTS_FILTER": ["${alias.segment}"],
170+
"technical_user": ["${alias.user}"]}'
171+
}
172+
expected_result = {
173+
'x' => 'y',
174+
'ads_password' => 'ads_123',
175+
'my_password' => 'login_123',
176+
'alias.user' => 'qa+test@gooddata.com',
177+
'alias.segment' => 'UserTestSegmentK8s',
178+
'login_username' => 'qa+test@gooddata.com',
179+
'login_password' => 'abc_login_123_123',
180+
'SEGMENTS_FILTER' => ["UserTestSegmentK8s"],
181+
'technical_user' => ["qa+test@gooddata.com"]
182+
}
183+
result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true)
184+
expect(result).to eq(expected_result)
185+
end
186+
160187
it 'should encode escape reference parameters in gd_encoded_params' do
161188
params = {
162189
'x' => 'y',

0 commit comments

Comments
 (0)