authpds 0.0.17 → 0.0.18
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/lib/authpds/exlibris/pds.rb +12 -5
- data/lib/authpds/session.rb +14 -22
- data/lib/authpds/version.rb +1 -1
- data/test/support/user_session.rb +1 -10
- data/test/test_helper.rb +4 -1
- data/test/unit/pds_test.rb +7 -7
- data/test/unit/user_session_test.rb +2 -2
- metadata +8 -8
data/lib/authpds/exlibris/pds.rb
CHANGED
@@ -42,16 +42,23 @@ module Authpds
|
|
42
42
|
class BorInfo < GetAttribute
|
43
43
|
|
44
44
|
protected
|
45
|
-
def initialize(pds_url, calling_system, pds_handle
|
45
|
+
def initialize(pds_url, calling_system, pds_handle)
|
46
46
|
super(pds_url, calling_system, pds_handle, "bor_info")
|
47
47
|
raise RuntimeError.new(
|
48
48
|
"Error in #{self.class}."+
|
49
49
|
"Unrecognized response: #{@response}.") unless @response.root.name.eql?("bor-info") or @response.root.name.eql?("pds")
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
50
|
+
return unless @response.root.name.eql?("bor-info")
|
51
|
+
bor_info = @response.root.children.each { |xml_element|
|
52
|
+
pds_attr = xml_element.name.gsub("-", "_")
|
53
|
+
self.class.send(:attr_reader, pds_attr)
|
54
|
+
instance_variable_set("@#{pds_attr}".to_sym, xml_element.inner_text) unless xml_element.inner_text.nil?
|
54
55
|
}
|
56
|
+
# bor_info_attributes.each_value { |xml_element|
|
57
|
+
# pds_attr = xml_element.gsub("-", "_")
|
58
|
+
# self.class.send(:attr_reader, pds_attr)
|
59
|
+
# instance_variable_set("@#{pds_attr}".to_sym,
|
60
|
+
# @response.at("#{xml_element}").inner_text) unless @response.at("//bor-info/#{xml_element}").nil?
|
61
|
+
# }
|
55
62
|
end
|
56
63
|
end
|
57
64
|
end
|
data/lib/authpds/session.rb
CHANGED
@@ -110,7 +110,8 @@ module Authpds
|
|
110
110
|
|
111
111
|
# Mapping of PDS attributes
|
112
112
|
def pds_attributes(value = nil)
|
113
|
-
|
113
|
+
value.each_value { |pds_attr| pds_attr.gsub!("-", "_") } unless value.nil?
|
114
|
+
rw_config(:pds_attributes, value, {:email => "email", :firstname => "name", :lastname => "name", :primary_institution => "institute" })
|
114
115
|
end
|
115
116
|
alias_method :pds_attributes=, :pds_attributes
|
116
117
|
|
@@ -132,12 +133,6 @@ module Authpds
|
|
132
133
|
end
|
133
134
|
alias_method :pds_record_identifier=, :pds_record_identifier
|
134
135
|
|
135
|
-
# PDS user method to call to get users primary institution
|
136
|
-
def pds_record_primary_institution(value = nil)
|
137
|
-
rw_config(:pds_record_primary_institution, value, :institute)
|
138
|
-
end
|
139
|
-
alias_method :pds_record_primary_institution=, :pds_record_primary_institution
|
140
|
-
|
141
136
|
# Querystring parameter key for the institution value
|
142
137
|
def institution_param_key(value = nil)
|
143
138
|
rw_config(:institution_param_key, value, "institute")
|
@@ -154,12 +149,7 @@ module Authpds
|
|
154
149
|
module AuthpdsCallbackMethods
|
155
150
|
# Hook for more complicated logic to determine PDS user record identifier
|
156
151
|
def pds_record_identifier
|
157
|
-
self.class.pds_record_identifier
|
158
|
-
end
|
159
|
-
|
160
|
-
# Hook for more complicated logic to determine PDS user primary institution
|
161
|
-
def pds_record_primary_institution
|
162
|
-
self.class.pds_record_primary_institution
|
152
|
+
@pds_record_identifier ||= self.class.pds_record_identifier
|
163
153
|
end
|
164
154
|
|
165
155
|
# Hook to determine if we should set up an SSO session
|
@@ -215,7 +205,7 @@ module Authpds
|
|
215
205
|
|
216
206
|
def pds_user
|
217
207
|
begin
|
218
|
-
@pds_user ||= Authpds::Exlibris::Pds::BorInfo.new(self.class.pds_url, self.class.calling_system, pds_handle
|
208
|
+
@pds_user ||= Authpds::Exlibris::Pds::BorInfo.new(self.class.pds_url, self.class.calling_system, pds_handle) unless pds_handle.nil?
|
219
209
|
return @pds_user unless @pds_user.nil? or @pds_user.error
|
220
210
|
rescue Exception => e
|
221
211
|
# Delete the PDS_HANDLE, since this isn't working.
|
@@ -252,9 +242,9 @@ module Authpds
|
|
252
242
|
end
|
253
243
|
|
254
244
|
# Get the record associated with this PDS user.
|
255
|
-
def get_record(
|
256
|
-
record = klass.
|
257
|
-
record = klass.new
|
245
|
+
def get_record(login)
|
246
|
+
record = klass.find_by_smart_case_login_field(login)
|
247
|
+
record = klass.new login_field => login if record.nil?
|
258
248
|
return record
|
259
249
|
end
|
260
250
|
|
@@ -264,12 +254,14 @@ module Authpds
|
|
264
254
|
self.attempted_record.expiration_date = expiration_date
|
265
255
|
# Do this part only if user data has expired.
|
266
256
|
if self.attempted_record.expired?
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
257
|
+
pds_attributes.each do |record_attr, pds_attr|
|
258
|
+
self.attempted_record.send("#{record_attr}=".to_sym,
|
259
|
+
pds_user.send(pds_attr.to_sym)) if self.attempted_record.respond_to?("#{record_attr}=".to_sym)
|
260
|
+
end
|
261
|
+
pds_user.class.public_instance_methods(false).each do |pds_attr_reader|
|
271
262
|
self.attempted_record.user_attributes = {
|
272
|
-
|
263
|
+
pds_attr_reader.to_sym => pds_user.send(pds_attr_reader.to_sym) }
|
264
|
+
end
|
273
265
|
end
|
274
266
|
self.attempted_record.user_attributes= additional_attributes
|
275
267
|
end
|
data/lib/authpds/version.rb
CHANGED
@@ -7,16 +7,7 @@ class UserSession < Authlogic::Session::Base
|
|
7
7
|
httponly true
|
8
8
|
secure true
|
9
9
|
login_inaccessible_url "http://library.nyu.edu/errors/bobcat-library-nyu-edu/"
|
10
|
-
pds_attributes :
|
11
|
-
:opensso => "opensso", :name => "name", :firstname => "givenname",
|
12
|
-
:lastname => "sn", :commonname => "cn", :email => "email",
|
13
|
-
:nyuidn => "nyuidn", :verification => "verification", :institute => "institute",
|
14
|
-
:bor_status => "bor-status", :bor_type => "bor-type",
|
15
|
-
:college_code => "college_code", :college_name => "college_name",
|
16
|
-
:dept_name => "dept_name", :dept_code => "dept_code",
|
17
|
-
:major_code => "major_code", :major => "major", :ill_permission => "ill-permission",
|
18
|
-
:newschool_ldap => "newschool_ldap"
|
19
|
-
|
10
|
+
pds_attributes :firstname => "givenname", :lastname => "sn", :email => "email", :primary_institution => "institute"
|
20
11
|
def expiration_date
|
21
12
|
1.day.ago
|
22
13
|
end
|
data/test/test_helper.rb
CHANGED
@@ -41,7 +41,7 @@ require File.dirname(__FILE__) + '/../lib/authpds'
|
|
41
41
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
42
42
|
|
43
43
|
class ActiveSupport::TestCase
|
44
|
-
VALID_PDS_HANDLE_FOR_NYU = '
|
44
|
+
VALID_PDS_HANDLE_FOR_NYU = '83201295456116368349190324314'
|
45
45
|
VALID_PDS_HANDLE_FOR_NEWSCHOOL = '272201212284614806184193096120278'
|
46
46
|
VALID_PDS_HANDLE_FOR_COOPER = '272201212284614806184193096120278'
|
47
47
|
INVALID_PDS_HANDLE = "Invalid"
|
@@ -69,6 +69,9 @@ class Authlogic::TestCase::MockController
|
|
69
69
|
def root_url
|
70
70
|
end
|
71
71
|
|
72
|
+
def redirect_to(*args)
|
73
|
+
end
|
74
|
+
|
72
75
|
def validate_url(options={})
|
73
76
|
return "http://railsapp.library.nyu.edu/validate?return_url=#{options[:return_url]}"
|
74
77
|
end
|
data/test/unit/pds_test.rb
CHANGED
@@ -38,7 +38,7 @@ class PdsTest < ActiveSupport::TestCase
|
|
38
38
|
end
|
39
39
|
|
40
40
|
test "bor_info_valid_nyu" do
|
41
|
-
nyu = Authpds::Exlibris::Pds::BorInfo.new(@pds_url, @calling_system, @valid_pds_handle_for_nyu
|
41
|
+
nyu = Authpds::Exlibris::Pds::BorInfo.new(@pds_url, @calling_system, @valid_pds_handle_for_nyu)
|
42
42
|
assert_equal("N12162279", nyu.id)
|
43
43
|
assert_equal("std5", nyu.uid)
|
44
44
|
assert_equal("N12162279", nyu.nyuidn)
|
@@ -46,8 +46,8 @@ class PdsTest < ActiveSupport::TestCase
|
|
46
46
|
assert_equal("CB", nyu.bor_type)
|
47
47
|
assert_equal("true", nyu.opensso)
|
48
48
|
assert_equal("Scot Thomas", nyu.name)
|
49
|
-
assert_equal("Scot Thomas", nyu.
|
50
|
-
assert_equal("Dalton", nyu.
|
49
|
+
assert_equal("Scot Thomas", nyu.givenname)
|
50
|
+
assert_equal("Dalton", nyu.sn)
|
51
51
|
assert_equal("Y", nyu.ill_permission)
|
52
52
|
assert_equal("GA", nyu.college_code)
|
53
53
|
assert_equal("CSCI", nyu.dept_code)
|
@@ -55,7 +55,7 @@ class PdsTest < ActiveSupport::TestCase
|
|
55
55
|
end
|
56
56
|
|
57
57
|
test "bor_info_valid_newschool" do
|
58
|
-
newschool = Authpds::Exlibris::Pds::BorInfo.new(@pds_url, @calling_system, @valid_pds_handle_for_newschool
|
58
|
+
newschool = Authpds::Exlibris::Pds::BorInfo.new(@pds_url, @calling_system, @valid_pds_handle_for_newschool)
|
59
59
|
assert_equal("N00206454", newschool.id)
|
60
60
|
assert_equal("314519567249252", newschool.uid)
|
61
61
|
assert_equal("N00206454", newschool.nyuidn)
|
@@ -63,13 +63,13 @@ class PdsTest < ActiveSupport::TestCase
|
|
63
63
|
assert_equal("0", newschool.bor_type)
|
64
64
|
assert_equal("true", newschool.newschool_ldap)
|
65
65
|
assert_equal("Allen", newschool.name)
|
66
|
-
assert_equal("Allen", newschool.
|
67
|
-
assert_equal("Jones", newschool.
|
66
|
+
assert_equal("Allen", newschool.givenname)
|
67
|
+
assert_equal("Jones", newschool.sn)
|
68
68
|
assert_equal("Y", newschool.ill_permission)
|
69
69
|
end
|
70
70
|
|
71
71
|
test "bor_info_invalid" do
|
72
|
-
get_attribute = Authpds::Exlibris::Pds::BorInfo.new(@pds_url, @calling_system, @invalid_pds_handle
|
72
|
+
get_attribute = Authpds::Exlibris::Pds::BorInfo.new(@pds_url, @calling_system, @invalid_pds_handle)
|
73
73
|
assert_equal("Error User does not exist", get_attribute.error)
|
74
74
|
end
|
75
75
|
end
|
@@ -56,8 +56,8 @@ class UserSessionTest < ActiveSupport::TestCase
|
|
56
56
|
assert_equal("CB", pds_user.bor_type)
|
57
57
|
assert_equal("true", pds_user.opensso)
|
58
58
|
assert_equal("Scot Thomas", pds_user.name)
|
59
|
-
assert_equal("Scot Thomas", pds_user.
|
60
|
-
assert_equal("Dalton", pds_user.
|
59
|
+
assert_equal("Scot Thomas", pds_user.givenname)
|
60
|
+
assert_equal("Dalton", pds_user.sn)
|
61
61
|
assert_equal("Y", pds_user.ill_permission)
|
62
62
|
assert_equal("GA", pds_user.college_code)
|
63
63
|
assert_equal("CSCI", pds_user.dept_code)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: authpds
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.18
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-03-
|
12
|
+
date: 2012-03-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &2151878000 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.2.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2151878000
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: authlogic
|
27
|
-
requirement: &
|
27
|
+
requirement: &2151876500 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2151876500
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: nokogiri
|
38
|
-
requirement: &
|
38
|
+
requirement: &2151870800 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2151870800
|
47
47
|
description: Libraries that use Ex Libris products, can integrate Rails application
|
48
48
|
with PDS to provide single sign-on across systems.
|
49
49
|
email:
|