authpds-nyu 0.0.1

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/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