Skip to content

Commit

Permalink
Add a mock_logger for testing
Browse files Browse the repository at this point in the history
  • Loading branch information
binarylogic committed Mar 30, 2009
1 parent 1ff5fbf commit 55ccfa2
Show file tree
Hide file tree
Showing 16 changed files with 47 additions and 87 deletions.
1 change: 0 additions & 1 deletion CHANGELOG.rdoc
@@ -1,7 +1,6 @@
== 2.0.5

* Stub out authenticate_with_http_basic for TestCase::Controller adapter.
* Added validates_login_field_options, validates_email_field_options, and validates_password_field_options to apply universal options for each fields validation calls.

== 2.0.4 released 2009-3-28

Expand Down
3 changes: 1 addition & 2 deletions Rakefile
Expand Up @@ -15,7 +15,6 @@ Hoe.new("Authlogic", Authlogic::Version::STRING) do |p|
p.readme_file = "README.rdoc"
p.extra_rdoc_files = ["CHANGELOG.rdoc", "README.rdoc"]
p.remote_rdoc_dir = ''
p.test_globs = ["test/*/test_*.rb", "test/*/*_test.rb"]
p.test_globs = ["test/*/test_*.rb", "test/*_test.rb", "test/*/*_test.rb"]
p.extra_deps = %w(activesupport)
p.post_install_message = "Version 2.0 introduces some changes that break backwards compatibility. The big change is how acts_as_authentic accepts configuration options. Instead of a hash, it now accepts a block: acts_as_authentic { |c| c.my_config_option = my_value}. See the docs for more details."
end
4 changes: 2 additions & 2 deletions lib/authlogic/acts_as_authentic/base.rb
Expand Up @@ -62,8 +62,7 @@ def acts_as_authentic_modules

def config(key, value, default_value = nil, read_value = nil)
if value == read_value
return read_inheritable_attribute(key) if inheritable_attributes.include?(key)
write_inheritable_attribute(key, default_value)
inheritable_attributes.include?(key) ? read_inheritable_attribute(key) : default_value
else
write_inheritable_attribute(key, value)
end
Expand All @@ -73,6 +72,7 @@ def first_column_to_exist(*columns_to_check) # :nodoc:
columns_to_check.each { |column_name| return column_name.to_sym if column_names.include?(column_name.to_s) }
columns_to_check.first ? columns_to_check.first.to_sym : nil
end

end
end
end
Expand Down
16 changes: 3 additions & 13 deletions lib/authlogic/acts_as_authentic/email.rb
Expand Up @@ -32,16 +32,6 @@ def validate_email_field(value = nil)
end
alias_method :validate_email_field=, :validate_email_field

# This allows you to set options to be applied to ANY of the validations called on the email field. So only use options
# that are universally supported by all of the validation functions. Such as :if or :unless, etc.
#
# * <tt>Default:</tt> {}
# * <tt>Accepts:</tt> A hash of options universally supported by the validation func
def validates_email_field_options(value = nil)
config(:validates_email_field_options, value, {})
end
alias_method :validates_email_field_options=, :validates_email_field_options

# A hash of options for the validates_length_of call for the email field. Allows you to change this however you want.
#
# * <tt>Default:</tt> {:within => 6..100}
Expand Down Expand Up @@ -84,9 +74,9 @@ module Methods
def self.included(klass)
klass.class_eval do
if validate_email_field && email_field
validates_length_of email_field, validates_email_field_options.merge(validates_length_of_email_field_options)
validates_format_of email_field, validates_email_field_options.merge(validates_format_of_email_field_options)
validates_uniqueness_of email_field, validates_email_field_options.merge(validates_uniqueness_of_email_field_options)
validates_length_of email_field, validates_length_of_email_field_options
validates_format_of email_field, validates_format_of_email_field_options
validates_uniqueness_of email_field, validates_uniqueness_of_email_field_options
end
end
end
Expand Down
16 changes: 3 additions & 13 deletions lib/authlogic/acts_as_authentic/login.rb
Expand Up @@ -29,16 +29,6 @@ def validate_login_field(value = nil)
end
alias_method :validate_login_field=, :validate_login_field

# This allows you to set options to be applied to ANY of the validations called on the login field. So only use options
# that are universally supported by all of the validation functions. Such as :if or :unless, etc.
#
# * <tt>Default:</tt> {}
# * <tt>Accepts:</tt> A hash of options universally supported by the validation func
def validates_login_field_options(value = nil)
config(:validates_login_field_options, value, {})
end
alias_method :validates_login_field_options=, :validates_login_field_options

# A hash of options for the validates_length_of call for the login field. Allows you to change this however you want.
#
# * <tt>Default:</tt> {:within => 6..100}
Expand Down Expand Up @@ -72,9 +62,9 @@ module Methods
def self.included(klass)
klass.class_eval do
if validate_login_field && login_field
validates_length_of login_field, validates_login_field_options.merge(validates_length_of_login_field_options)
validates_format_of login_field, validates_login_field_options.merge(validates_format_of_login_field_options)
validates_uniqueness_of login_field, validates_login_field_options.merge(validates_uniqueness_of_login_field_options)
validates_length_of login_field, validates_length_of_login_field_options
validates_format_of login_field, validates_format_of_login_field_options
validates_uniqueness_of login_field, validates_uniqueness_of_login_field_options
end
end
end
Expand Down
25 changes: 10 additions & 15 deletions lib/authlogic/acts_as_authentic/password.rb
Expand Up @@ -40,16 +40,6 @@ def validate_password_field(value = nil)
end
alias_method :validate_password_field=, :validate_password_field

# This allows you to set options to be applied to ANY of the validations called on the password field. So only use options
# that are universally supported by all of the validation functions. Such as :if or :unless, etc.
#
# * <tt>Default:</tt> {}
# * <tt>Accepts:</tt> A hash of options universally supported by the validation func
def validates_password_field_options(value = nil)
config(:validates_password_field_options, value, {})
end
alias_method :validates_password_field_options=, :validates_password_field_options

# A hash of options for the validates_length_of call for the password field. Allows you to change this however you want.
#
# * <tt>Default:</tt> {:minimum => 4, :if => :require_password?}
Expand All @@ -64,7 +54,7 @@ def validates_length_of_password_field_options(value = nil)
# * <tt>Default:</tt> {:minimum => 4, :if => "#{password_salt_field}_changed?".to_sym}
# * <tt>Accepts:</tt> Hash of options accepted by validates_confirmation_of
def validates_confirmation_of_password_field_options(value = nil)
config(:validates_confirmation_of_password_field_options, value, {:minimum => 4, :if => (password_salt_field ? "#{password_salt_field}_changed?".to_sym : nil)})
config(:validates_confirmation_of_password_field_options, value, {:minimum => 4, :if => :require_password?})
end
alias_method :validates_confirmation_of_password_field_options=, :validates_confirmation_of_password_field_options

Expand Down Expand Up @@ -130,9 +120,9 @@ module Methods
def self.included(klass)
klass.class_eval do
if validate_password_field
validates_length_of :password, validates_password_field_options.merge(validates_length_of_password_field_options)
validates_confirmation_of :password, validates_password_field_options.merge(validates_confirmation_of_password_field_options)
validates_length_of :password_confirmation, validates_password_field_options.merge(validates_length_of_password_confirmation_field_options)
validates_length_of :password, validates_length_of_password_field_options
validates_confirmation_of :password, validates_confirmation_of_password_field_options
validates_length_of :password_confirmation, validates_length_of_password_confirmation_field_options
end
end
end
Expand All @@ -150,6 +140,7 @@ def password=(pass)
@password = pass
send("#{password_salt_field}=", Authlogic::Random.friendly_token) if password_salt_field
send("#{crypted_password_field}=", crypto_provider.encrypt(*encrypt_arguments(@password, act_like_restful_authentication? ? :restful_authentication : nil)))
@password_changed = true
after_password_set
end

Expand Down Expand Up @@ -211,7 +202,11 @@ def encrypt_arguments(raw_password, arguments_type = nil)
end

def require_password?
new_record? || (password_salt_field && send("#{password_salt_field}_changed?")) || send(crypted_password_field).blank?
new_record? || password_changed? || send(crypted_password_field).blank?
end

def password_changed?
@password_changed == true
end

def crypted_password_field
Expand Down
9 changes: 5 additions & 4 deletions lib/authlogic/test_case.rb
@@ -1,7 +1,8 @@
require "authlogic/test_case/controller_adapter"
require "authlogic/test_case/mock_cookie_jar"
require "authlogic/test_case/mock_request"
require "authlogic/test_case/mock_controller"
require File.dirname(__FILE__) + "/test_case/controller_adapter"
require File.dirname(__FILE__) + "/test_case/mock_cookie_jar"
require File.dirname(__FILE__) + "/test_case/mock_controller"
require File.dirname(__FILE__) + "/test_case/mock_logger"
require File.dirname(__FILE__) + "/test_case/mock_request"

module Authlogic
# This is a collection of methods and classes that help you easily test Authlogic. In fact, I use these same tools
Expand Down
4 changes: 4 additions & 0 deletions lib/authlogic/test_case/mock_controller.rb
Expand Up @@ -20,6 +20,10 @@ def cookies
def cookie_domain
nil
end

def logger
@logger ||= MockLogger.new
end

def params
@params ||= {}
Expand Down
10 changes: 10 additions & 0 deletions lib/authlogic/test_case/mock_logger.rb
@@ -0,0 +1,10 @@
module Authlogic
module TestCase
# Simple class to replace real loggers, so that we can raise any errors being logged.
class MockLogger
def error(message)
raise message
end
end
end
end
4 changes: 4 additions & 0 deletions lib/authlogic/test_case/mock_request.rb
@@ -1,6 +1,10 @@
module Authlogic
module TestCase
class MockRequest # :nodoc:
def request_method
nil
end

def remote_ip
"1.1.1.1"
end
Expand Down
11 changes: 0 additions & 11 deletions test/acts_as_authentic_test/email_test.rb
Expand Up @@ -22,17 +22,6 @@ def test_validate_email_field_config
assert User.validate_email_field
end

def test_validates_email_field_options_config
default = {}
assert_equal default, User.validates_email_field_options
assert_equal default, Employee.validates_email_field_options

User.validates_email_field_options = {:yes => "no"}
assert_equal({:yes => "no"}, User.validates_email_field_options)
User.validates_email_field_options default
assert_equal default, User.validates_email_field_options
end

def test_validates_length_of_email_field_options_config
assert_equal({:within => 6..100}, User.validates_length_of_email_field_options)
assert_equal({:within => 6..100}, Employee.validates_length_of_email_field_options)
Expand Down
11 changes: 0 additions & 11 deletions test/acts_as_authentic_test/login_test.rb
Expand Up @@ -22,17 +22,6 @@ def test_validate_login_field_config
assert User.validate_login_field
end

def test_validates_login_field_options_config
default = {}
assert_equal default, User.validates_login_field_options
assert_equal default, Employee.validates_login_field_options

User.validates_login_field_options = {:yes => "no"}
assert_equal({:yes => "no"}, User.validates_login_field_options)
User.validates_login_field_options default
assert_equal default, User.validates_login_field_options
end

def test_validates_length_of_login_field_options_config
assert_equal({:within => 3..100}, User.validates_length_of_login_field_options)
assert_equal({:within => 3..100}, Employee.validates_length_of_login_field_options)
Expand Down
13 changes: 1 addition & 12 deletions test/acts_as_authentic_test/password_test.rb
Expand Up @@ -32,17 +32,6 @@ def test_validate_password_field_config
assert User.validate_password_field
end

def test_validates_password_field_options_config
default = {}
assert_equal default, User.validates_password_field_options
assert_equal default, Employee.validates_password_field_options

User.validates_password_field_options = {:yes => "no"}
assert_equal({:yes => "no"}, User.validates_password_field_options)
User.validates_password_field_options default
assert_equal default, User.validates_password_field_options
end

def test_validates_length_of_password_field_options_config
default = {:minimum => 4, :if => :require_password?}
assert_equal default, User.validates_length_of_password_field_options
Expand All @@ -55,7 +44,7 @@ def test_validates_length_of_password_field_options_config
end

def test_validates_confirmation_of_password_field_options_config
default = {:minimum => 4, :if => "#{User.password_salt_field}_changed?".to_sym}
default = {:minimum => 4, :if => :require_password?}
assert_equal default, User.validates_confirmation_of_password_field_options
assert_equal default, Employee.validates_confirmation_of_password_field_options

Expand Down
4 changes: 2 additions & 2 deletions test/random_test.rb
@@ -1,4 +1,4 @@
require File.dirname(__FILE__) + '/../test_helper.rb'
require File.dirname(__FILE__) + '/test_helper.rb'

class RandomTest < ActiveSupport::TestCase
def test_random_tokens_have_consisten_length
Expand Down Expand Up @@ -36,7 +36,7 @@ def with_secure_random_enabled(enabled = true)
def reload_authlogic_with_sec_random!(secure_random, enabled = true)
silence_warnings do
secure_random.parent.const_set(secure_random.name.sub("#{secure_random.parent}::", ''), enabled ? secure_random : nil)
load(File.dirname(__FILE__) + '/../../lib/authlogic/random.rb')
load(File.dirname(__FILE__) + '/../lib/authlogic/random.rb')
end
end

Expand Down
1 change: 1 addition & 0 deletions test/session_test/activation_test.rb
Expand Up @@ -7,6 +7,7 @@ def test_activated
assert UserSession.activated?
Authlogic::Session::Base.controller = nil
assert !UserSession.activated?
debugger
end

def test_controller
Expand Down
2 changes: 1 addition & 1 deletion test/test_helper.rb
Expand Up @@ -2,7 +2,7 @@
require "rubygems"
require "ruby-debug"
require "active_record"
require 'active_record/fixtures'
require "active_record/fixtures"

ActiveRecord::Schema.verbose = false
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :dbfile => ":memory:")
Expand Down

0 comments on commit 55ccfa2

Please sign in to comment.