ruby-saml 0.8.6 → 0.8.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ruby-saml might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 57e7a2eb4f514972244fc12215e6586386fb5fe3
4
- data.tar.gz: cf05522f6c29de7ae71c30407a93ee2cfe5926b9
3
+ metadata.gz: 99b6868dbb0c85f62887107838735de63e1d9136
4
+ data.tar.gz: 15eeebe4a761be9840b5136dfe957fb966f9519d
5
5
  SHA512:
6
- metadata.gz: 039cc1a41f64dd95707f441afc2015bc44948944fa0356ead52280d5420ebc314d9b004f3e048694356aa40b36546c0a3a98e2f8e4c98f79079b199629f4872f
7
- data.tar.gz: 57a46834046c71fce8a1845487e6dfb53fb6b9dadac4d411462e2e2731c8457b162be13563fbad92f3f15e7639916c59e8a266842d018191c40cbfb5f77038c6
6
+ metadata.gz: 98a67ff93d0195daf43d1d4ecefea284be38566f85717314d2ec301d7fda271f14a1cbc60527d172fdc8314175f4ed67e30304ae9a2f840fa99988928c372745
7
+ data.tar.gz: e528f8945eea81bdbeedd9c2bf7bd9f66e466ca941852758b79d2ad84e05a59516057a9a173538de29336863f935bb649ca5083049e707f6f0bcb6a0b269ce3c
data/README.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Ruby SAML [![Build Status](https://secure.travis-ci.org/onelogin/ruby-saml.png)](http://travis-ci.org/onelogin/ruby-saml)
2
2
 
3
+ ## Note on versions 0.8.6 and 0.8.7
4
+ Version `0.8.6` introduced an incompatibility with regards to manipulating the `OneLogin::RubySaml::Response#attributes` property; in this version
5
+ the `#attributes` property is a class (`OneLogin::RubySaml::Attributes`) which implements the `Enumerator` module, thus any non-overriden Hash method
6
+ will throw a NoMethodError.
7
+ Version `0.8.7` overrides the behavior of class `OneLogin::RubySaml::Attributes` by making any method not found on the class be tested on the
8
+ internal hash structure, thus all methods available in the `Hash` class are now available in `OneLogin::RubySaml::Response#attributes`.
9
+
3
10
  ## Updating from 0.7.x to 0.8.x
4
11
  Version `0.8.x` changes the namespace of the gem from `OneLogin::Saml` to `OneLogin::RubySaml`. Please update your implementations of the gem accordingly.
5
12
 
@@ -48,7 +48,7 @@ module OneLogin
48
48
  # @param name [String] The attribute name to be checked
49
49
  #
50
50
  def include?(name)
51
- attributes.has_key?(canonize_name(name))
51
+ attributes.has_key?(canonize_name(name)) || attributes.has_key?(name)
52
52
  end
53
53
 
54
54
  # Return first value for an attribute
@@ -56,7 +56,7 @@ module OneLogin
56
56
  # @return [String] The value (First occurrence)
57
57
  #
58
58
  def single(name)
59
- attributes[canonize_name(name)].first if include?(name)
59
+ multi(name).first if include?(name)
60
60
  end
61
61
 
62
62
  # Return all values for an attribute
@@ -64,7 +64,15 @@ module OneLogin
64
64
  # @return [Array] Values of the attribute
65
65
  #
66
66
  def multi(name)
67
- attributes[canonize_name(name)]
67
+ values = attributes[canonize_name(name)] || attributes[name]
68
+
69
+ if values.is_a?(Array)
70
+ values
71
+ elsif !values.nil?
72
+ Array(values)
73
+ else
74
+ nil
75
+ end
68
76
  end
69
77
 
70
78
  # Retrieve attribute value(s)
@@ -76,7 +84,7 @@ module OneLogin
76
84
  # response.attributes['mail'] # => ['user@example.com','user@example.net']
77
85
  #
78
86
  def [](name)
79
- self.class.single_value_compatibility ? single(canonize_name(name)) : multi(canonize_name(name))
87
+ self.class.single_value_compatibility ? single(name) : multi(name)
80
88
  end
81
89
 
82
90
  # @return [Array] Return all attributes as an array
@@ -113,6 +121,10 @@ module OneLogin
113
121
  end
114
122
  end
115
123
 
124
+ def respond_to?(name)
125
+ attributes.respond_to?(name) || super
126
+ end
127
+
116
128
  protected
117
129
 
118
130
  # stringifies all names so both 'email' and :email return the same result
@@ -123,6 +135,13 @@ module OneLogin
123
135
  name.to_s
124
136
  end
125
137
 
138
+ def method_missing(name, *args, &block)
139
+ if attributes.respond_to?(name)
140
+ attributes.send(name, *args, &block)
141
+ else
142
+ super
143
+ end
144
+ end
126
145
  end
127
146
  end
128
147
  end
@@ -1,5 +1,5 @@
1
1
  module OneLogin
2
2
  module RubySaml
3
- VERSION = '0.8.6'
3
+ VERSION = '0.8.7'
4
4
  end
5
5
  end
@@ -236,6 +236,28 @@ class RubySamlTest < Test::Unit::TestCase
236
236
  assert_equal "smith", response_with_multiple_attribute_statements.attributes[:surname]
237
237
  assert_equal "bob", response_with_multiple_attribute_statements.attributes[:firstname]
238
238
  end
239
+
240
+ should "be manipulable by hash methods such as #merge and not raise an exception" do
241
+ response = OneLogin::RubySaml::Response.new(response_document)
242
+ response.attributes.merge({ :testing_attribute => "test" })
243
+ end
244
+
245
+ should "be manipulable by hash methods such as #shift and not raise an exception" do
246
+ response = OneLogin::RubySaml::Response.new(response_document)
247
+ response.attributes.shift
248
+ end
249
+
250
+ should "be manipulable by hash methods such as #merge! and actually contain the value" do
251
+ response = OneLogin::RubySaml::Response.new(response_document)
252
+ response.attributes.merge!({ :testing_attribute => "test" })
253
+ assert response.attributes[:testing_attribute]
254
+ end
255
+
256
+ should "be manipulable by hash methods such as #shift and actually remove the value" do
257
+ response = OneLogin::RubySaml::Response.new(response_document)
258
+ removed_value = response.attributes.shift
259
+ assert_nil response.attributes[removed_value[0]]
260
+ end
239
261
  end
240
262
 
241
263
  context "#session_expires_at" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-saml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.6
4
+ version: 0.8.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - OneLogin LLC
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-08 00:00:00.000000000 Z
11
+ date: 2019-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: uuid