rubycas-client 2.3.7 → 2.3.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,12 @@
1
1
  = RubyCAS-Client Changelog
2
2
 
3
+ == Version 2.3.8 :: 2011-12-19
4
+
5
+ * Bug Fixes
6
+ * Fix some undesired behavior when parsing extra attributes as JSON
7
+ * Simple attributes (that aren't JSON Objects) stay strings
8
+ * We don't fallback to the YAML parser if JSON parsing fails
9
+
3
10
  == Version 2.3.7 :: 2011-11-29
4
11
 
5
12
  * Bug Fixes
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.3.7
1
+ 2.3.8
@@ -72,25 +72,7 @@ module CASClient
72
72
 
73
73
  # unserialize extra attributes
74
74
  @extra_attributes.each do |k, v|
75
- if v.blank?
76
- @extra_attributes[k] = nil
77
- elsif !options[:encode_extra_attributes_as]
78
- begin
79
- @extra_attributes[k] = YAML.load(v)
80
- rescue ArgumentError
81
- raise ArgumentError, "Did not find :encode_extra_attributes_as config parameter, hence default encoding scheme is YAML but CAS response recieved in encoded differently "
82
- end
83
- else
84
- if options[:encode_extra_attributes_as] == :json
85
- begin
86
- @extra_attributes[k] = JSON.parse(v)
87
- rescue JSON::ParserError
88
- @extra_attributes[k] = YAML.load(v)
89
- end
90
- else
91
- @extra_attributes[k] = YAML.load(v)
92
- end
93
- end
75
+ @extra_attributes[k] = parse_extra_attribute_value(v, options[:encode_extra_attributes_as])
94
76
  end
95
77
  elsif is_failure?
96
78
  @failure_code = @xml.elements['//cas:authenticationFailure'].attributes['code']
@@ -101,6 +83,34 @@ module CASClient
101
83
  end
102
84
  end
103
85
 
86
+ def parse_extra_attribute_value(value, encode_extra_attributes_as)
87
+ attr_value = if value.blank?
88
+ nil
89
+ elsif !encode_extra_attributes_as
90
+ begin
91
+ YAML.load(value)
92
+ rescue ArgumentError
93
+ raise ArgumentError, "Did not find :encode_extra_attributes_as config parameter, hence default encoding scheme is YAML but CAS response recieved in encoded differently "
94
+ end
95
+ else
96
+ if encode_extra_attributes_as == :json
97
+ begin
98
+ JSON.parse(value)
99
+ rescue JSON::ParserError
100
+ value
101
+ end
102
+ else
103
+ YAML.load(value)
104
+ end
105
+ end
106
+
107
+ unless (attr_value.kind_of? Enumerable) || attr_value.nil?
108
+ attr_value.to_s
109
+ else
110
+ attr_value
111
+ end
112
+ end
113
+
104
114
  def is_success?
105
115
  (instance_variable_defined?(:@valid) && @valid) || (protocol > 1.0 && xml.name == "authenticationSuccess")
106
116
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "rubycas-client"
8
- s.version = "2.3.7"
8
+ s.version = "2.3.8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Matt Zukowski", "Matt Walker", "Matt Campbell"]
12
- s.date = "2011-11-30"
12
+ s.date = "2011-12-19"
13
13
  s.extra_rdoc_files = [
14
14
  "LICENSE.txt",
15
15
  "README.rdoc"
@@ -9,9 +9,12 @@ describe CASClient::ValidationResponse do
9
9
  <cas:authenticationSuccess>
10
10
  <cas:attributes>
11
11
  <cas:first_name>Jack</cas:first_name>
12
+ <cas:last_name>92.5</cas:last_name>
12
13
  <cas:mobile_phone></cas:mobile_phone>
13
14
  <cas:global_roles><![CDATA[]]></cas:global_roles>
14
15
  <cas:foo_data> <![CDATA[[{"id":10529}]]]></cas:foo_data>
16
+ <cas:food_data> <![CDATA[{"id":10529}]]></cas:food_data>
17
+ <cas:allegedly_yaml>- 10</cas:allegedly_yaml>
15
18
  </cas:attributes>
16
19
  </cas:authenticationSuccess>
17
20
  </cas:serviceResponse>
@@ -32,8 +35,20 @@ RESPONSE_TEXT
32
35
  subject.extra_attributes["first_name"].should == "Jack"
33
36
  end
34
37
 
35
- it "sets the value of JSON attributes to their parsed value" do
38
+ it "sets the value of JSON attributes containing Arrays to their parsed value" do
36
39
  subject.extra_attributes["foo_data"][0]["id"].should == 10529
37
40
  end
41
+
42
+ it "sets the value of JSON attributes containing Hashes to their parsed value" do
43
+ subject.extra_attributes["food_data"]["id"].should == 10529
44
+ end
45
+
46
+ it "sets non-hash attributes as strings" do
47
+ subject.extra_attributes["last_name"].should be_a_kind_of String
48
+ end
49
+
50
+ it "sets the value of attributes which are not valid JSON but are valid YAML to their literal value" do
51
+ subject.extra_attributes["allegedly_yaml"].should == '- 10'
52
+ end
38
53
  end
39
54
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubycas-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.7
4
+ version: 2.3.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2011-11-30 00:00:00.000000000Z
14
+ date: 2011-12-19 00:00:00.000000000Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activesupport
18
- requirement: &70156582713280 !ruby/object:Gem::Requirement
18
+ requirement: &70206959748580 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: '0'
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *70156582713280
26
+ version_requirements: *70206959748580
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
- requirement: &70156582712380 !ruby/object:Gem::Requirement
29
+ requirement: &70206959747260 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ~>
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: 1.6.1
35
35
  type: :development
36
36
  prerelease: false
37
- version_requirements: *70156582712380
37
+ version_requirements: *70206959747260
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: rspec
40
- requirement: &70156582711420 !ruby/object:Gem::Requirement
40
+ requirement: &70206959746080 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ~>
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: 2.7.0
46
46
  type: :development
47
47
  prerelease: false
48
- version_requirements: *70156582711420
48
+ version_requirements: *70206959746080
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: bundler
51
- requirement: &70156582709900 !ruby/object:Gem::Requirement
51
+ requirement: &70206959745140 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ! '>='
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: '1.0'
57
57
  type: :development
58
58
  prerelease: false
59
- version_requirements: *70156582709900
59
+ version_requirements: *70206959745140
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: jeweler
62
- requirement: &70156582708880 !ruby/object:Gem::Requirement
62
+ requirement: &70206959743740 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ~>
@@ -67,10 +67,10 @@ dependencies:
67
67
  version: 1.6.2
68
68
  type: :development
69
69
  prerelease: false
70
- version_requirements: *70156582708880
70
+ version_requirements: *70206959743740
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: actionpack
73
- requirement: &70156582695320 !ruby/object:Gem::Requirement
73
+ requirement: &70206959742080 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
76
  - - ! '>='
@@ -78,10 +78,10 @@ dependencies:
78
78
  version: '0'
79
79
  type: :development
80
80
  prerelease: false
81
- version_requirements: *70156582695320
81
+ version_requirements: *70206959742080
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: rake
84
- requirement: &70156582694500 !ruby/object:Gem::Requirement
84
+ requirement: &70206959740920 !ruby/object:Gem::Requirement
85
85
  none: false
86
86
  requirements:
87
87
  - - ! '>='
@@ -89,10 +89,10 @@ dependencies:
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
- version_requirements: *70156582694500
92
+ version_requirements: *70206959740920
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: rcov
95
- requirement: &70156582693440 !ruby/object:Gem::Requirement
95
+ requirement: &70206959740000 !ruby/object:Gem::Requirement
96
96
  none: false
97
97
  requirements:
98
98
  - - ! '>='
@@ -100,7 +100,7 @@ dependencies:
100
100
  version: '0'
101
101
  type: :development
102
102
  prerelease: false
103
- version_requirements: *70156582693440
103
+ version_requirements: *70206959740000
104
104
  description:
105
105
  email:
106
106
  executables: []
@@ -177,7 +177,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
177
177
  version: '0'
178
178
  segments:
179
179
  - 0
180
- hash: 1034418483670907189
180
+ hash: -2445786591382746754
181
181
  required_rubygems_version: !ruby/object:Gem::Requirement
182
182
  none: false
183
183
  requirements: