File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -9,10 +9,15 @@ module RubySaml
99 # SAML2 Toolkit Settings
1010 #
1111 class Settings
12- def initialize ( overrides = { } )
13- security_attributes = overrides . delete ( :security ) || { }
14- config = DEFAULTS . merge ( overrides )
15- config [ :security ] = DEFAULTS [ :security ] . merge ( security_attributes )
12+ def initialize ( overrides = { } , keep_security_attributes = false )
13+ if keep_security_attributes
14+ security_attributes = overrides . delete ( :security ) || { }
15+ config = DEFAULTS . merge ( overrides )
16+ config [ :security ] = DEFAULTS [ :security ] . merge ( security_attributes )
17+ else
18+ config = DEFAULTS . merge ( overrides )
19+ end
20+
1621 config . each do |k , v |
1722 acc = "#{ k . to_s } =" . to_sym
1823 if respond_to? acc
Original file line number Diff line number Diff line change @@ -77,7 +77,7 @@ class SettingsTest < Minitest::Test
7777 assert_equal new_settings . security [ :signature_method ] , XMLSecurity ::Document ::RSA_SHA1
7878 end
7979
80- it "overrides only provided security attributes" do
80+ it "overrides only provided security attributes passing a second parameter " do
8181 config = {
8282 :security => {
8383 :metadata_signed => true
@@ -86,11 +86,25 @@ class SettingsTest < Minitest::Test
8686
8787 @default_attributes = OneLogin ::RubySaml ::Settings ::DEFAULTS
8888
89- @settings = OneLogin ::RubySaml ::Settings . new ( config )
89+ @settings = OneLogin ::RubySaml ::Settings . new ( config , true )
9090 assert_equal @settings . security [ :metadata_signed ] , true
9191 assert_equal @settings . security [ :digest_method ] , @default_attributes [ :security ] [ :digest_method ]
9292 end
9393
94+ it "doesn't override only provided security attributes without passing a second parameter" do
95+ config = {
96+ :security => {
97+ :metadata_signed => true
98+ }
99+ }
100+
101+ @default_attributes = OneLogin ::RubySaml ::Settings ::DEFAULTS
102+
103+ @settings = OneLogin ::RubySaml ::Settings . new ( config )
104+ assert_equal @settings . security [ :metadata_signed ] , true
105+ assert_equal @settings . security [ :digest_method ] , nil
106+ end
107+
94108 describe "#single_logout_service_url" do
95109 it "when single_logout_service_url is nil but assertion_consumer_logout_service_url returns its value" do
96110 @settings . single_logout_service_url = nil
You can’t perform that action at this time.
0 commit comments