Project

General

Profile

Download (3.09 KB) Statistics
| Branch: | Tag: | Revision:
# encoding: UTF-8
require 'test_helper'

class ApacheTest < ActiveSupport::TestCase
def setup
Setting::Auth.load_defaults
end

def test_user_is_set_when_authenticated
Setting['authorize_login_delegation_auth_source_user_autocreate'] = 'apache'
apache = get_apache_method
assert apache.authenticated?
assert_equal apache.user, 'ares'
assert_equal apache.session[:sso_method], 'SSO::Apache'
end

def test_available?
# non api request
apache = get_apache_method(false)
Setting["authorize_login_delegation"] = true
assert apache.available?

Setting["authorize_login_delegation"] = false
assert !apache.available?

Setting["authorize_login_delegation"] = true
# api request
apache = get_apache_method(true)
Setting["authorize_login_delegation_api"] = true
assert apache.available?

Setting["authorize_login_delegation_api"] = false
assert !apache.available?
end


def test_authenticated?
Setting['authorize_login_delegation_auth_source_user_autocreate'] = 'apache'
apache = get_apache_method

apache.controller.request.env[SSO::Apache::CAS_USERNAME] = nil
assert !apache.authenticated?

apache.controller.request.env[SSO::Apache::CAS_USERNAME] = 'ares'
assert apache.authenticated?
end

def test_authenticated_passes_attributes
Setting['authorize_login_delegation_auth_source_user_autocreate'] = 'apache'
apache = get_apache_method

apache.controller.request.env[SSO::Apache::CAS_USERNAME] = 'ares'
apache.controller.request.env['REMOTE_USER_EMAIL'] = 'foobar@example.com'
apache.controller.request.env['REMOTE_USER_FIRSTNAME'] = 'Foo'
apache.controller.request.env['REMOTE_USER_LASTNAME'] = 'Bar'
User.expects(:find_or_create_external_user).
with({:login => 'ares', :mail => 'foobar@example.com', :firstname => 'Foo', :lastname => 'Bar'}, 'apache').
returns(true)
assert apache.authenticated?
end

def test_convert_encoding
apache = get_apache_method
assert apache.send(:convert_encoding, 'fó✗@e✗amp✓e.com')
end

def test_authenticate!
apache = get_apache_method
controller = apache.controller
controller.stubs(:redirect_to).returns('correct redirect')

response = apache.authenticate!
assert apache.has_rendered
assert_equal response, 'correct redirect'
end

def test_support_login
apache = get_apache_method
controller = apache.controller
controller.request.fullpath = '/something'

assert apache.support_login?

controller.request.fullpath = '/extlogin'
assert !apache.support_login?
end

def get_apache_method(api_request = false)
SSO::Apache.new(get_controller(api_request))
end

def get_controller(api_request)
main_app = stub
main_app.stubs(:extlogin_users_path).returns('/extlogin')
controller = Struct.new(:request, :session, :extlogin_users_path).new(Struct.new(:env, :fullpath).new({ SSO::Apache::CAS_USERNAME => 'ares' }))
controller.session = {}
controller.stubs(:api_request?).returns(api_request)
controller.stubs(:main_app).returns(main_app)
controller
end
end
(1-1/6)