rubycas-client 2.3.7 → 2.3.8

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.
@@ -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: