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.
- data/History.txt +7 -0
- data/VERSION +1 -1
- data/lib/casclient/responses.rb +29 -19
- data/rubycas-client.gemspec +2 -2
- data/spec/casclient/validation_response_spec.rb +16 -1
- metadata +19 -19
data/History.txt
CHANGED
@@ -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.
|
1
|
+
2.3.8
|
data/lib/casclient/responses.rb
CHANGED
@@ -72,25 +72,7 @@ module CASClient
|
|
72
72
|
|
73
73
|
# unserialize extra attributes
|
74
74
|
@extra_attributes.each do |k, v|
|
75
|
-
|
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
|
data/rubycas-client.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "rubycas-client"
|
8
|
-
s.version = "2.3.
|
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-
|
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.
|
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-
|
14
|
+
date: 2011-12-19 00:00:00.000000000Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: activesupport
|
18
|
-
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: *
|
26
|
+
version_requirements: *70206959748580
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: json
|
29
|
-
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: *
|
37
|
+
version_requirements: *70206959747260
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: rspec
|
40
|
-
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: *
|
48
|
+
version_requirements: *70206959746080
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: bundler
|
51
|
-
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: *
|
59
|
+
version_requirements: *70206959745140
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: jeweler
|
62
|
-
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: *
|
70
|
+
version_requirements: *70206959743740
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: actionpack
|
73
|
-
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: *
|
81
|
+
version_requirements: *70206959742080
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: rake
|
84
|
-
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: *
|
92
|
+
version_requirements: *70206959740920
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
94
|
name: rcov
|
95
|
-
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: *
|
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:
|
180
|
+
hash: -2445786591382746754
|
181
181
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
182
|
none: false
|
183
183
|
requirements:
|