authpds-nyu 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2012 YOURNAME
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,3 @@
1
+ = AuthpdsNyu
2
+
3
+ Gem to connect to NYU PDS system for user authentication and authorization.
data/Rakefile ADDED
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+ begin
8
+ require 'rdoc/task'
9
+ rescue LoadError
10
+ require 'rdoc/rdoc'
11
+ require 'rake/rdoctask'
12
+ RDoc::Task = Rake::RDocTask
13
+ end
14
+
15
+ RDoc::Task.new(:rdoc) do |rdoc|
16
+ rdoc.rdoc_dir = 'rdoc'
17
+ rdoc.title = 'AuthpdsNyu'
18
+ rdoc.options << '--line-numbers'
19
+ rdoc.rdoc_files.include('README.rdoc')
20
+ rdoc.rdoc_files.include('lib/**/*.rb')
21
+ end
22
+
23
+
24
+
25
+
26
+ Bundler::GemHelper.install_tasks
27
+
28
+ require 'rake/testtask'
29
+
30
+ Rake::TestTask.new(:test) do |t|
31
+ t.libs << 'lib'
32
+ t.libs << 'test'
33
+ t.pattern = 'test/**/*_test.rb'
34
+ t.verbose = false
35
+ end
36
+
37
+
38
+ task :default => :test
@@ -0,0 +1,12 @@
1
+ require 'active_support/dependencies'
2
+ require 'authpds'
3
+ AUTHPDS_NYU_PATH = File.dirname(__FILE__) + "/authpds-nyu/"
4
+ [
5
+ 'session',
6
+ 'sun/opensso',
7
+ 'exlibris/aleph'
8
+ ].each do |library|
9
+ require AUTHPDS_NYU_PATH + library
10
+ end
11
+ Authlogic::Session::Base.send(:include, AuthpdsNyu::Session)
12
+
@@ -0,0 +1,41 @@
1
+ module AuthpdsNyu
2
+ module Exlibris
3
+ module Aleph
4
+ require 'open-uri'
5
+ class BorAuth
6
+ attr_reader :response, :error, :session_id
7
+ def initialize(aleph_url, library, sub_library, translate, bor_id, bor_verification)
8
+ url = "#{aleph_url}/X?"
9
+ url += "op=bor-auth&library=#{library}&"
10
+ url += "sub_library=#{sub_library}&translate=#{translate}&"
11
+ url += "bor_id=#{bor_id}&verification=#{bor_verification}&"
12
+ @response = Nokogiri.XML(open(url))
13
+ @session_id = @response.at("//session-id").inner_text unless @response.at("//session-id").nil?
14
+ @error = @response.at("//error").inner_text unless @response.at("//error").nil?
15
+ end
16
+
17
+ def permissions
18
+ rv = {}
19
+ return rv unless @response and self.error.nil?
20
+ rv[:home_sub_library] = @response.at("z303-home-library").inner_text unless @response.at("z303-home-library").nil?
21
+ rv[:bor_status] = @response.at("z305-bor-status").inner_text unless @response.at("z305-bor-status").nil?
22
+ rv[:bor_type] = @response.at("z305-bor-type").inner_text unless @response.at("z305-bor-type").nil?
23
+ rv[:loan_permission] = @response.at("z305-loan-permission").inner_text unless @response.at("z305-loan-permission").nil?
24
+ rv[:photo_permission] = @response.at("z305-photo-permission").inner_text unless @response.at("z305-photo-permission").nil?
25
+ rv[:over_permission] = @response.at("z305-over-permission").inner_text unless @response.at("z305-over-permission").nil?
26
+ rv[:multi_hold] = @response.at("z305-multi-hold").inner_text unless @response.at("z305-multi-hold").nil?
27
+ rv[:loan_check] = @response.at("z305-loan-check").inner_text unless @response.at("z305-loan-check").nil?
28
+ rv[:hold_permission] = @response.at("z305-hold-permission").inner_text unless @response.at("z305-hold-permission").nil?
29
+ rv[:renew_permission] = @response.at("z305-renew-permission").inner_text unless @response.at("z305-renew-permission").nil?
30
+ rv[:rr_permission] = @response.at("z305-rr-permission").inner_text unless @response.at("z305-rr-permission").nil?
31
+ rv[:ignore_late_return] = @response.at("z305-ignore-late-return").inner_text unless @response.at("z305-ignore-late-return").nil?
32
+ rv[:hold_on_shelf] = @response.at("z305-hold-on-shelf").inner_text unless @response.at("z305-hold-on-shelf").nil?
33
+ rv[:end_block_date] = @response.at("z305-end-block-date").inner_text unless @response.at("z305-end-block-date").nil?
34
+ rv[:booking_permission] = @response.at("z305-booking-permission").inner_text unless @response.at("z305-booking-permission").nil?
35
+ rv[:booking_ignore_hours] = @response.at("z305-booking-ignore-hours").inner_text unless @response.at("z305-booking-ignore-hours").nil?
36
+ return rv
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,97 @@
1
+ module AuthpdsNyu
2
+ module Session
3
+ def self.included(klass)
4
+ klass.class_eval do
5
+ extend Config
6
+ include AuthpdsCallbackMethods
7
+ include InstanceMethods
8
+ end
9
+ end
10
+
11
+ module Config
12
+ # Base opensso url
13
+ def opensso_url(value = nil)
14
+ rw_config(:opensso_url, value, "https://login.nyu.edu:443/sso")
15
+ end
16
+ alias_method :opensso_url=, :opensso_url
17
+
18
+ # Base aleph url
19
+ def aleph_url(value = nil)
20
+ rw_config(:aleph_url, value, "http://aleph.library.nyu.edu")
21
+ end
22
+ alias_method :aleph_url=, :aleph_url
23
+
24
+ # Default aleph ADM
25
+ def aleph_default_adm(value = nil)
26
+ rw_config(:aleph_default_adm, value, "NYU50")
27
+ end
28
+ alias_method :aleph_default_adm=, :aleph_default_adm
29
+
30
+ # Default aleph sublibrary
31
+ def aleph_default_sublibrary(value = nil)
32
+ rw_config(:aleph_default_sublibrary, value, "BOBST")
33
+ end
34
+ alias_method :aleph_default_sublibrary=, :aleph_default_sublibrary
35
+ end
36
+
37
+ module AuthpdsCallbackMethods
38
+ def pds_record_identifier
39
+ (pds_user.opensso.nil?) ? pds_user.id : pds_user.uid
40
+ end
41
+
42
+ def valid_sso_session?
43
+ begin
44
+ @valid_sso_session ||= AuthpdsNyu::Sun::Opensso.new(controller, self.class.opensso_url).is_valid?
45
+ rescue Exception => e
46
+ handle_login_exception e
47
+ return false
48
+ end
49
+ return @valid_sso_session
50
+ end
51
+ end
52
+
53
+ module InstanceMethods
54
+ def self.included(klass)
55
+ klass.class_eval do
56
+ pds_attributes :id => "id", :uid => "uid",
57
+ :opensso => "opensso", :name => "name", :firstname => "givenname",
58
+ :lastname => "sn", :commonname => "cn", :email => "email",
59
+ :nyuidn => "nyuidn", :verification => "verification", :institute => "institute",
60
+ :bor_status => "bor-status", :bor_type => "bor-type",
61
+ :college_code => "college_code", :college_name => "college_name",
62
+ :dept_name => "dept_name", :dept_code => "dept_code",
63
+ :major_code => "major_code", :major => "major", :ill_permission => "ill-permission",
64
+ :newschool_ldap => "newschool_ldap"
65
+ remember_me true
66
+ remember_me_for 300
67
+ httponly true
68
+ secure true
69
+ login_inaccessible_url "http://library.nyu.edu/errors/login-library-nyu-edu/"
70
+ end
71
+ end
72
+
73
+ def aleph_bor_auth_permissions(bor_id=nil, verification=nil, adm=nil, sublibrary=nil)
74
+ bor_auth = aleph_bor_auth(bor_id, verification, adm, sublibrary)
75
+ return (bor_auth.nil? or bor_auth.error) ? {} : bor_auth.permissions
76
+ end
77
+
78
+ def aleph_bor_auth(bor_id=nil, verification=nil, adm=nil, sublibrary=nil)
79
+ bor_id = pds_user.id if bor_id.nil?
80
+ verification = pds_user.verification if verification.nil?
81
+ aleph_url = self.class.aleph_url
82
+ adm = self.class.aleph_default_adm if adm.nil?
83
+ sublibrary = self.class.aleph_default_sublibrary if sublibrary.nil?
84
+ # Call X-Service
85
+ bor_auth =
86
+ AuthPdsNyu::Exlibris::Aleph::BorAuth.
87
+ new(aleph_url, adm, sublibrary, "N", bor_id, bor_verification)
88
+ controller.logger.error(
89
+ "Error in #{self.class}. "+
90
+ "No permissions returned from Aleph bor-auth for user with bor_id #{bor_id}."+
91
+ "Error: #{(bor_auth.nil?) ? "bor_auth is nil." : bor_auth.error.inspect}"
92
+ ) and return nil if bor_auth.nil? or bor_auth.error
93
+ return bor_auth
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,81 @@
1
+ module AuthpdsNyu
2
+ module Sun
3
+ require 'net/http'
4
+ require 'net/https'
5
+ class Opensso
6
+ def initialize(controller, opensso_url)
7
+ raise ArgumentError.new("Argument Error in #{self.class}. :opensso_url not specified.") if opensso_url.nil?;
8
+ @cookies = controller.cookies
9
+ @opensso_uri = URI.parse(opensso_url)
10
+ opensso_uri_split = URI.split(opensso_url)
11
+ # @scheme= opensso_uri_split[0]
12
+ @host= opensso_uri_split[2]
13
+ @port= opensso_uri_split[3]
14
+ end
15
+
16
+ def is_valid?
17
+ @http = Net::HTTP.new(@host, @port)
18
+ # Set read timeout to 15 seconds.
19
+ @http.read_timeout = 15
20
+ @http.use_ssl = true if @opensso_uri.is_a?(URI::HTTPS)
21
+ # Suppress "peer certificate" warning
22
+ @http.verify_mode = OpenSSL::SSL::VERIFY_NONE if @http.use_ssl?
23
+ return validate_token(get_token_cookie(get_cookie_name_for_token))
24
+ # validate_token(token_cookie) ? get_opensso_user(token_cookie) : nil
25
+ end
26
+
27
+ private
28
+ def get_cookie_name_for_token
29
+ return @cookies[:nyulibrary_opensso_cookiename] unless @cookies[:nyulibrary_opensso_cookiename].nil?
30
+ req = Net::HTTP::Get.new(@opensso_uri.path + '/identity/getCookieNameForToken')
31
+ res = @http.request(req, '')
32
+ raise RuntimeError.new(
33
+ "Error in #{self.class}."+
34
+ "Unrecognized response: #{res}") unless res.body.starts_with?("string=")
35
+ cookie_name = res.body.split('=').at(1).chomp unless res.body.split('=').at(1).nil?
36
+ @cookies[:nyulibrary_opensso_cookiename] = { 'value' => cookie_name, 'domain' => ".library.nyu.edu", 'path' => "/" }
37
+ return cookie_name
38
+ end
39
+
40
+ def get_token_cookie(token_cookie_name)
41
+ return nil if token_cookie_name.nil?
42
+ token_cookie = @cookies.fetch(token_cookie_name, nil)
43
+ token_cookie = @cookies[token_cookie_name.to_sym] if token_cookie.nil?
44
+ token_cookie = CGI.unescape(token_cookie.to_s.gsub('+', '%2B'))
45
+ token_cookie = (token_cookie != '') ?
46
+ (token_cookie.start_with?(token_cookie_name)) ?
47
+ token_cookie : "#{token_cookie_name}=#{token_cookie}; path=" : nil
48
+ end
49
+
50
+ def validate_token(token_cookie)
51
+ return false if token_cookie.nil?
52
+ req = Net::HTTP::Get.new(@opensso_uri.path + '/identity/isTokenValid')
53
+ req['Cookie'] = token_cookie
54
+ res = @http.request(req, '')
55
+ raise RuntimeError.new(
56
+ "Error in #{self.class}."+
57
+ "Unrecognized response: #{res}") unless res.body.starts_with?("boolean=")
58
+ res.body.split('=').at(1).chomp == 'true'
59
+ end
60
+
61
+ def get_opensso_user(token_cookie)
62
+ return if token_cookie.nil?
63
+ opensso_user = Hash[]
64
+ attribute_name = ''
65
+ req = Net::HTTP::Get.new(@opensso_uri.path + '/identity/attributes')
66
+ req['Cookie'] = token_cookie
67
+ res = @http.request(req, '')
68
+ lines = res.body.split(/\n/)
69
+ lines.each do |line|
70
+ if line.match(/^userdetails.attribute.name=/)
71
+ attribute_name = line.gsub(/^userdetails.attribute.name=/, '')
72
+ opensso_user[attribute_name] = Array.new
73
+ elsif line.match(/^userdetails.attribute.value=/)
74
+ opensso_user[attribute_name] << line.gsub(/^userdetails.attribute.value=/, '')
75
+ end
76
+ end
77
+ return opensso_user
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,3 @@
1
+ module AuthpdsNyu
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :authpds-nyu do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class AuthpdsNyuTest < ActiveSupport::TestCase
4
+ test "truth" do
5
+ assert_kind_of Module, AuthpdsNyu
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ class User < ActiveRecord::Base
2
+ serialize :user_attributes
3
+
4
+ acts_as_authentic do |c|
5
+ c.validations_scope = :username
6
+ c.validate_password_field = false
7
+ c.require_password_confirmation = false
8
+ end
9
+ end
@@ -0,0 +1,6 @@
1
+ class UserSession < Authlogic::Session::Base
2
+ pds_url "https://logindev.library.nyu.edu"
3
+ redirect_logout_url "https://logindev.library.nyu.edu/logout"
4
+ aleph_url "http://alephstage.library.nyu.edu"
5
+ calling_system "authpds-nyu"
6
+ end
@@ -0,0 +1,82 @@
1
+ require 'active_support/dependencies'
2
+ require 'authpds'
3
+ require 'authlogic/test_case'
4
+ require "test/unit"
5
+ require 'rubygems'
6
+ require "active_record"
7
+ require "active_record/fixtures"
8
+ # Configure Rails Environment
9
+ ENV["RAILS_ENV"] = "test"
10
+
11
+ ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
12
+ logger = Logger.new(STDOUT)
13
+ logger.level= Logger::FATAL
14
+ ActiveRecord::Base.logger = logger
15
+ ActiveRecord::Base.configurations = true
16
+ ActiveRecord::Schema.define(:version => 1) do
17
+ drop_table :users if table_exists?(:users)
18
+ create_table :users do |t|
19
+ t.string "username", :default => "", :null => false
20
+ t.string "email"
21
+ t.string "firstname", :limit => 100
22
+ t.string "lastname", :limit => 100
23
+ t.string "mobile_phone"
24
+ t.string "crypted_password"
25
+ t.string "password_salt"
26
+ t.string "session_id"
27
+ t.string "persistence_token", :null => false
28
+ t.integer "login_count", :default => 0, :null => false
29
+ t.datetime "last_request_at"
30
+ t.datetime "current_login_at"
31
+ t.datetime "last_login_at"
32
+ t.string "last_login_ip"
33
+ t.string "current_login_ip"
34
+ t.text "user_attributes"
35
+ t.datetime "refreshed_at"
36
+ t.timestamps
37
+ end unless table_exists?(:users)
38
+ end
39
+
40
+ # Load support files
41
+ require File.dirname(__FILE__) + '/../lib/authpds-nyu' unless defined?(AuthpdsNyu)
42
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
43
+
44
+ class ActiveSupport::TestCase
45
+ VALID_OPENSSO_FOR_NYU = 'AQIC5wM2LY4SfcxDSwCymgKWMu6OksqGN0zuRV5cUdz33Bo.*AAJTSQACMDIAAlNLAAstMTg5NTE2OTAzNQACUzEAAjA2*'
46
+ INVALID_OPENSSO = "Invalid"
47
+ VALID_PDS_HANDLE_FOR_NYU = '132012112947113134742310506860'
48
+ VALID_PDS_HANDLE_FOR_NEWSCHOOL = '272201212284614806184193096120278'
49
+ VALID_PDS_HANDLE_FOR_COOPER = '272201212284614806184193096120278'
50
+ INVALID_PDS_HANDLE = "Invalid"
51
+ SESSION_ID = "qwertyuiopasdfghjkllzxcvbnm1234567890"
52
+ include ActiveRecord::TestFixtures
53
+ include Authlogic::TestCase
54
+ self.fixture_path = File.dirname(__FILE__) + "/fixtures"
55
+ self.use_transactional_fixtures = false
56
+ self.use_instantiated_fixtures = false
57
+ self.pre_loaded_fixtures = false
58
+ fixtures :all
59
+ setup :activate_authlogic
60
+ end
61
+
62
+ class Authlogic::TestCase::MockController
63
+ def self.helper_method(*args)
64
+ end
65
+
66
+ include Authpds::Controllers::AuthpdsController
67
+
68
+ def url_for(options={})
69
+ return "http://railsapp.library.nyu.edu/validate?return_url=#{options[:return_url]}"
70
+ end
71
+
72
+ def root_url
73
+ end
74
+
75
+ def performed?
76
+ false
77
+ end
78
+
79
+ def redirect_to(*args)
80
+ puts args.inspect
81
+ end
82
+ end
@@ -0,0 +1,28 @@
1
+ require 'test_helper'
2
+ class AlephBorAuthTest < ActiveSupport::TestCase
3
+
4
+ def setup
5
+ activate_authlogic
6
+ controller.session[:session_id] = "FakeSessionID"
7
+ # controller.cookies[:PDS_HANDLE] = { :value => VALID_PDS_HANDLE_FOR_NYU }
8
+ controller.cookies[:iPlanetDirectoryPro] = { :value => VALID_OPENSSO_FOR_NYU }
9
+ end
10
+
11
+ test "new" do
12
+ bor_auth =
13
+ AuthpdsNyu::Exlibris::Aleph::BorAuth.new(
14
+ "http://alephstage.library.nyu.edu", "NYU50", "BOBST", "N",
15
+ "N12162279", "d4465aacaa645f2164908cd4184c09f0")
16
+ assert_nil(bor_auth.error, "Error is not nil.")
17
+ end
18
+
19
+ test "permissions" do
20
+ bor_auth =
21
+ AuthpdsNyu::Exlibris::Aleph::BorAuth.new(
22
+ "http://alephstage.library.nyu.edu", "NYU50", "BOBST", "N",
23
+ "N12162279", "d4465aacaa645f2164908cd4184c09f0")
24
+ assert_equal("51", bor_auth.permissions[:bor_status])
25
+ assert_equal("CB", bor_auth.permissions[:bor_type])
26
+ assert_equal("Y", bor_auth.permissions[:hold_on_shelf])
27
+ end
28
+ end
@@ -0,0 +1,51 @@
1
+ require 'test_helper'
2
+ class OpenssoTest < ActiveSupport::TestCase
3
+ def setup
4
+ activate_authlogic
5
+ controller.session[:session_id] = "FakeSessionID"
6
+ # controller.cookies[:PDS_HANDLE] = { :value => VALID_PDS_HANDLE_FOR_NYU }
7
+ controller.cookies[:iPlanetDirectoryPro] = { :value => VALID_OPENSSO_FOR_NYU }
8
+ end
9
+
10
+ test "initialize" do
11
+ valid_opensso, invalid_opensso = nil, nil
12
+ assert_raise(ArgumentError){ AuthpdsNyu::Sun::Opensso.new(controller, nil) }
13
+ assert_nothing_raised(Exception){ valid_opensso = AuthpdsNyu::Sun::Opensso.new(controller, "https://login.nyu.edu:443/sso") }
14
+ assert_not_nil(valid_opensso.instance_variable_get(:@cookies))
15
+ assert_equal( VALID_OPENSSO_FOR_NYU, valid_opensso.instance_variable_get(:@cookies)[:iPlanetDirectoryPro])
16
+ assert_not_nil(valid_opensso.instance_variable_get(:@opensso_uri))
17
+ assert_equal( URI.parse("https://login.nyu.edu:443/sso"), valid_opensso.instance_variable_get(:@opensso_uri))
18
+ assert_nothing_raised(Exception){ invalid_opensso = AuthpdsNyu::Sun::Opensso.new(invalid_controller, "https://login.nyu.edu:443/sso") }
19
+ assert_not_nil(invalid_opensso.instance_variable_get(:@cookies))
20
+ assert_equal( INVALID_OPENSSO, invalid_opensso.instance_variable_get(:@cookies)[:iPlanetDirectoryPro])
21
+ assert_not_nil(invalid_opensso.instance_variable_get(:@opensso_uri))
22
+ assert_equal( URI.parse("https://login.nyu.edu:443/sso"), invalid_opensso.instance_variable_get(:@opensso_uri))
23
+ end
24
+
25
+ test "unresponsive_url" do
26
+ flunk("Implement Unresponsive URL Test!")
27
+ end
28
+
29
+ test "error_response" do
30
+ assert_raise(RuntimeError){ AuthpdsNyu::Sun::Opensso.new(controller, "http://www.nyu.edu").is_valid? }
31
+ end
32
+
33
+ test "is_valid?_valid" do
34
+ valid_opensso = AuthpdsNyu::Sun::Opensso.new(controller, "https://login.nyu.edu:443/sso")
35
+ assert(valid_opensso.is_valid?)
36
+ end
37
+
38
+ test "is_valid?_invalid" do
39
+ invalid_opensso = AuthpdsNyu::Sun::Opensso.new(invalid_controller, "https://login.nyu.edu:443/sso")
40
+ assert(!invalid_opensso.is_valid?)
41
+ end
42
+
43
+ def invalid_controller
44
+ activate_authlogic
45
+ controller.session[:session_id] = SESSION_ID
46
+ controller.cookies[:iPlanetDirectoryPro] = {
47
+ :value => INVALID_OPENSSO
48
+ }
49
+ return controller
50
+ end
51
+ end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+ class UserSessionTest < ActiveSupport::TestCase
3
+
4
+ def setup
5
+ activate_authlogic
6
+ controller.session[:session_id] = "FakeSessionID"
7
+ # controller.cookies[:PDS_HANDLE] = { :value => VALID_PDS_HANDLE_FOR_NYU }
8
+ controller.cookies[:iPlanetDirectoryPro] = { :value => VALID_OPENSSO_FOR_NYU }
9
+ end
10
+
11
+ test "valid_sso_session?" do
12
+ user_session = UserSession.new
13
+ assert(user_session.valid_sso_session?)
14
+ controller.cookies[:iPlanetDirectoryPro] = { :value => INVALID_OPENSSO }
15
+ user_session = UserSession.new
16
+ assert(!user_session.valid_sso_session?)
17
+ end
18
+
19
+ test "find" do
20
+ user_session = UserSession.new
21
+ assert_nil(controller.session["authpds_credentials"])
22
+ assert_nil(user_session.send(:attempted_record))
23
+ assert_nil(user_session.record)
24
+ user_session = UserSession.find
25
+ end
26
+ end
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: authpds-nyu
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Scot Dalton
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-03-05 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: &2152624780 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 3.2.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2152624780
25
+ - !ruby/object:Gem::Dependency
26
+ name: sqlite3
27
+ requirement: &2152624000 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *2152624000
36
+ - !ruby/object:Gem::Dependency
37
+ name: authpds
38
+ requirement: &2152623360 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *2152623360
47
+ description: NYU libraries SSO client.
48
+ email:
49
+ - scotdalton@gmail.com
50
+ executables: []
51
+ extensions: []
52
+ extra_rdoc_files: []
53
+ files:
54
+ - lib/authpds-nyu/exlibris/aleph.rb
55
+ - lib/authpds-nyu/session.rb
56
+ - lib/authpds-nyu/sun/opensso.rb
57
+ - lib/authpds-nyu/version.rb
58
+ - lib/authpds-nyu.rb
59
+ - lib/tasks/authpds-nyu_tasks.rake
60
+ - MIT-LICENSE
61
+ - Rakefile
62
+ - README.rdoc
63
+ - test/authpds-nyu_test.rb
64
+ - test/support/user.rb
65
+ - test/support/user_session.rb
66
+ - test/test_helper.rb
67
+ - test/unit/aleph_bor_auth_test.rb
68
+ - test/unit/opensso_test.rb
69
+ - test/unit/user_session_test.rb
70
+ homepage: http://github.com/scotdalton/authpds-nyu
71
+ licenses: []
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ none: false
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ requirements: []
89
+ rubyforge_project:
90
+ rubygems_version: 1.8.15
91
+ signing_key:
92
+ specification_version: 3
93
+ summary: NYU libraries SSO client.
94
+ test_files:
95
+ - test/authpds-nyu_test.rb
96
+ - test/support/user.rb
97
+ - test/support/user_session.rb
98
+ - test/test_helper.rb
99
+ - test/unit/aleph_bor_auth_test.rb
100
+ - test/unit/opensso_test.rb
101
+ - test/unit/user_session_test.rb