Skip to content

Commit bec59f2

Browse files
authored
Add multivalued property to keycloak_protocol_mapper (#336)
1 parent 14c8f9b commit bec59f2

File tree

4 files changed

+34
-1
lines changed

4 files changed

+34
-1
lines changed

lib/puppet/provider/keycloak_protocol_mapper/kcadm.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ def self.instances
7373
if ['saml-group-membership-mapper', 'saml-role-list-mapper'].include?(protocol_mapper[:type]) || protocol_mapper[:type] =~ %r{script-.+}
7474
protocol_mapper[:single] = d['config']['single'].to_s.to_sym
7575
end
76+
protocol_mapper[:multivalued] = d['config']['multivalued'].to_s.to_sym if d['config']['multivalued']
7677
protocol_mappers << new(protocol_mapper)
7778
end
7879
end
@@ -136,6 +137,9 @@ def create
136137
if (['saml-group-membership-mapper', 'saml-role-list-mapper'].include?(resource[:type]) || (resource[:protocol] == 'saml' && resource[:type] =~ %r{script-.+})) && resource[:single]
137138
data[:config][:single] = resource[:single].to_s
138139
end
140+
if resource[:multivalued]
141+
data[:config][:multivalued] = resource[:multivalued].to_s
142+
end
139143

140144
t = Tempfile.new('keycloak_protocol_mapper')
141145
t.write(JSON.pretty_generate(data))
@@ -220,6 +224,9 @@ def flush
220224
if (['saml-group-membership-mapper', 'saml-role-list-mapper'].include?(resource[:type]) || (resource[:protocol] == 'saml' && resource[:type] =~ %r{script-.+})) && resource[:single]
221225
config[:single] = resource[:single].to_s
222226
end
227+
if resource[:multivalued]
228+
config[:multivalued] = resource[:multivalued].to_s
229+
end
223230
data[:config] = config unless config.empty?
224231

225232
t = Tempfile.new('keycloak_protocol_mapper')

lib/puppet/type/keycloak_protocol_mapper.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,11 @@
201201
end
202202
end
203203

204+
newproperty(:multivalued, boolean: true) do
205+
desc 'multivalued'
206+
newvalues(:true, :false)
207+
end
208+
204209
newproperty(:included_client_audience) do
205210
desc 'included.client.audience Required for `type` of `oidc-audience-mapper`'
206211
end

spec/unit/puppet/type/keycloak_client_protocol_mapper_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@
364364
end
365365

366366
it 'does not accept invalid value for multivalued' do
367-
config[:single] = 'foo'
367+
config[:multivalued] = 'foo'
368368
expect {
369369
resource
370370
}.to raise_error(%r{foo})

spec/unit/puppet/type/keycloak_protocol_mapper_spec.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,27 @@
341341
expect(resource[:included_client_audience]).to eq('foo')
342342
end
343343

344+
it 'accepts value for multivalued' do
345+
config[:multivalued] = false
346+
expect(resource[:multivalued]).to eq(:false)
347+
end
348+
349+
it 'accepts value for multivalued string' do
350+
config[:multivalued] = 'false'
351+
expect(resource[:multivalued]).to eq(:false)
352+
end
353+
354+
it 'has default for multivalued' do
355+
expect(resource[:multivalued]).to be_nil
356+
end
357+
358+
it 'does not accept invalid value for multivalued' do
359+
config[:multivalued] = 'foo'
360+
expect {
361+
resource
362+
}.to raise_error(%r{foo})
363+
end
364+
344365
it 'accepts script' do
345366
config[:protocol] = 'saml'
346367
config[:type] = 'script-foo.js'

0 commit comments

Comments
 (0)