janus 0.5.0 → 0.6.0
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/README.rdoc +65 -29
- data/lib/janus.rb +1 -13
- data/lib/janus/config.rb +9 -5
- data/lib/janus/controllers/confirmations_controller.rb +2 -0
- data/lib/janus/controllers/helpers.rb +17 -0
- data/lib/janus/controllers/internal_helpers.rb +12 -0
- data/lib/janus/controllers/passwords_controller.rb +3 -0
- data/lib/janus/controllers/sessions_controller.rb +58 -21
- data/lib/janus/manager.rb +7 -2
- data/lib/janus/models/database_authenticatable.rb +22 -6
- data/lib/janus/rails.rb +17 -0
- data/lib/janus/routes.rb +1 -2
- data/lib/janus/sinatra.rb +51 -0
- metadata +63 -169
- data/test/functional/home_controller_test.rb +0 -8
- data/test/functional/janus/mailer_test.rb +0 -14
- data/test/functional/janus/manager_test.rb +0 -94
- data/test/functional/users/confirmations_controller_test.rb +0 -59
- data/test/functional/users/passwords_controller_test.rb +0 -101
- data/test/functional/users/registrations_controller_test.rb +0 -112
- data/test/functional/users/sessions_controller_test.rb +0 -100
- data/test/functional/users_controller_test.rb +0 -22
- data/test/integration/users/rememberable_test.rb +0 -32
- data/test/integration/users/remote_test.rb +0 -72
- data/test/integration/users/sessions_test.rb +0 -18
- data/test/integration/users/trackable_test.rb +0 -22
- data/test/rails_app/app/controllers/application_controller.rb +0 -9
- data/test/rails_app/app/controllers/blogs_controller.rb +0 -6
- data/test/rails_app/app/controllers/home_controller.rb +0 -4
- data/test/rails_app/app/controllers/users/confirmations_controller.rb +0 -3
- data/test/rails_app/app/controllers/users/passwords_controller.rb +0 -3
- data/test/rails_app/app/controllers/users/registrations_controller.rb +0 -7
- data/test/rails_app/app/controllers/users/sessions_controller.rb +0 -11
- data/test/rails_app/app/controllers/users_controller.rb +0 -9
- data/test/rails_app/app/helpers/application_helper.rb +0 -2
- data/test/rails_app/app/mailers/janus_mailer.rb +0 -2
- data/test/rails_app/app/models/remote_token.rb +0 -6
- data/test/rails_app/app/models/user.rb +0 -8
- data/test/rails_app/config/application.rb +0 -42
- data/test/rails_app/config/boot.rb +0 -6
- data/test/rails_app/config/environment.rb +0 -5
- data/test/rails_app/config/environments/development.rb +0 -26
- data/test/rails_app/config/environments/production.rb +0 -49
- data/test/rails_app/config/environments/test.rb +0 -36
- data/test/rails_app/config/initializers/janus.rb +0 -11
- data/test/rails_app/config/initializers/secret_token.rb +0 -7
- data/test/rails_app/config/initializers/session_store.rb +0 -8
- data/test/rails_app/config/routes.rb +0 -12
- data/test/rails_app/db/migrate/20110323153820_create_users.rb +0 -34
- data/test/rails_app/db/migrate/20110331153546_create_remote_tokens.rb +0 -15
- data/test/rails_app/db/schema.rb +0 -45
- data/test/rails_app/db/seeds.rb +0 -7
- data/test/test_helper.rb +0 -103
- data/test/unit/confirmable_test.rb +0 -36
- data/test/unit/janus_test.rb +0 -27
- data/test/unit/rememberable_test.rb +0 -50
- data/test/unit/remote_authenticatable_test.rb +0 -37
- data/test/unit/remote_token_test.rb +0 -9
- data/test/unit/reset_password_test.rb +0 -45
- data/test/unit/trackable_test.rb +0 -21
- data/test/unit/user_test.rb +0 -60
data/test/rails_app/db/seeds.rb
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
# This file should contain all the record creation needed to seed the database with its default values.
|
2
|
-
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
|
3
|
-
#
|
4
|
-
# Examples:
|
5
|
-
#
|
6
|
-
# cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
|
7
|
-
# Mayor.create(:name => 'Daley', :city => cities.first)
|
data/test/test_helper.rb
DELETED
@@ -1,103 +0,0 @@
|
|
1
|
-
ENV["RAILS_ENV"] = "test"
|
2
|
-
|
3
|
-
require File.expand_path('../rails_app/config/environment', __FILE__)
|
4
|
-
require 'rails/test_help'
|
5
|
-
require 'capybara/rails'
|
6
|
-
|
7
|
-
class ActiveSupport::TestCase
|
8
|
-
self.fixture_path = File.expand_path('../fixtures', __FILE__)
|
9
|
-
fixtures :all
|
10
|
-
end
|
11
|
-
|
12
|
-
class ActionController::TestCase
|
13
|
-
include Janus::TestHelper
|
14
|
-
|
15
|
-
def assert_email(count = 1, message = nil)
|
16
|
-
assert_difference('ActionMailer::Base.deliveries.size', count, message) do
|
17
|
-
yield
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def assert_no_email(message = nil)
|
22
|
-
assert_no_difference('ActionMailer::Base.deliveries.size', message) do
|
23
|
-
yield
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
class ActionDispatch::IntegrationTest
|
29
|
-
self.fixture_path = File.expand_path('../fixtures', __FILE__)
|
30
|
-
|
31
|
-
include Capybara::DSL
|
32
|
-
|
33
|
-
teardown { page.reset! }
|
34
|
-
|
35
|
-
def sign_up(user, options = {})
|
36
|
-
scope = options[:scope]
|
37
|
-
route = "new_#{scope}_registration_url"
|
38
|
-
|
39
|
-
visit send(route, options[:url])
|
40
|
-
fill_in "#{scope}_email", :with => user[:email]
|
41
|
-
fill_in "#{scope}_password", :with => user[:password]
|
42
|
-
fill_in "#{scope}_password_confirmation", :with => user[:password]
|
43
|
-
find('input[name=commit]').click
|
44
|
-
end
|
45
|
-
|
46
|
-
def sign_in(user, options = {})
|
47
|
-
scope = options[:scope] || Janus.scope_for(user)
|
48
|
-
route = "new_#{scope}_session_url"
|
49
|
-
|
50
|
-
visit send(route, options[:url])
|
51
|
-
fill_in "#{scope}_email", :with => user.email
|
52
|
-
fill_in "#{scope}_password", :with => 'secret'
|
53
|
-
check "remember_me" if options[:remember_me]
|
54
|
-
find('input[name=commit]').click
|
55
|
-
end
|
56
|
-
|
57
|
-
def sign_out(user_or_scope)
|
58
|
-
scope = Janus.scope_for(user_or_scope)
|
59
|
-
route = "destroy_#{scope}_session_url"
|
60
|
-
visit send(route)
|
61
|
-
end
|
62
|
-
|
63
|
-
def service_login(scope, options)
|
64
|
-
route = "new_#{scope}_session_url"
|
65
|
-
visit send(route, options)
|
66
|
-
end
|
67
|
-
|
68
|
-
def close_user_session
|
69
|
-
driver = Capybara.current_session.driver
|
70
|
-
# case driver
|
71
|
-
# when Capybara::Driver::Selenium
|
72
|
-
# browser = driver.browser
|
73
|
-
# browser.manage.delete_cookie(cookie_name)
|
74
|
-
# when Capybara::Driver::RackTest
|
75
|
-
cookie_jar = driver.browser.current_session.instance_variable_get(:@rack_mock_session).cookie_jar
|
76
|
-
cookie_jar.instance_variable_get(:@cookies).reject! do |cookie|
|
77
|
-
expires = cookie.instance_variable_get(:@options)["expires"]
|
78
|
-
expires.nil? || Time.parse(expires) < Time.now
|
79
|
-
end
|
80
|
-
# end
|
81
|
-
end
|
82
|
-
|
83
|
-
def assert_authenticated
|
84
|
-
assert has_selector?("a#my_page"), "Expected user to be authenticated."
|
85
|
-
end
|
86
|
-
|
87
|
-
def assert_not_authenticated
|
88
|
-
assert has_selector?("a#sign_in"), "Expected user to not be authenticated."
|
89
|
-
end
|
90
|
-
|
91
|
-
def assert_select(selector)
|
92
|
-
assert has_selector?(selector), "Expected selector <#{selector}> but found none."
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
class ActionMailer::TestCase
|
97
|
-
include Rails.application.routes.url_helpers
|
98
|
-
|
99
|
-
def default_url_options
|
100
|
-
Rails.application.config.action_mailer.default_url_options
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
@@ -1,36 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ConfirmableTest < ActiveSupport::TestCase
|
4
|
-
setup do
|
5
|
-
@user = users(:julien)
|
6
|
-
end
|
7
|
-
|
8
|
-
test "generate_confirmation_token" do
|
9
|
-
@user.generate_confirmation_token
|
10
|
-
assert_not_nil @user.confirmation_token
|
11
|
-
assert_not_nil @user.confirmation_sent_at
|
12
|
-
assert_nil @user.confirmed_at
|
13
|
-
|
14
|
-
@user.reload
|
15
|
-
assert_nil @user.confirmation_token
|
16
|
-
assert_nil @user.confirmation_sent_at
|
17
|
-
assert_nil @user.confirmed_at
|
18
|
-
end
|
19
|
-
|
20
|
-
test "confirm!" do
|
21
|
-
@user.generate_confirmation_token
|
22
|
-
@user.confirm!
|
23
|
-
assert_nil @user.confirmation_token
|
24
|
-
assert_nil @user.confirmation_sent_at
|
25
|
-
assert_not_nil @user.confirmed_at
|
26
|
-
end
|
27
|
-
|
28
|
-
test "find_for_confirmation" do
|
29
|
-
assert_nil User.find_for_confirmation(nil)
|
30
|
-
assert_nil User.find_for_confirmation("amroiuzigsqjg")
|
31
|
-
|
32
|
-
@user.generate_confirmation_token
|
33
|
-
@user.save!
|
34
|
-
assert_equal @user, User.find_for_confirmation(@user.confirmation_token)
|
35
|
-
end
|
36
|
-
end
|
data/test/unit/janus_test.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class JanusTest < ActiveSupport::TestCase
|
4
|
-
test "scope_for symbol" do
|
5
|
-
assert_equal :user, Janus.scope_for(:user)
|
6
|
-
end
|
7
|
-
|
8
|
-
test "scope_for string" do
|
9
|
-
assert_equal :user, Janus.scope_for("user")
|
10
|
-
end
|
11
|
-
|
12
|
-
test "scope_for object" do
|
13
|
-
assert_equal :user, Janus.scope_for(User.new)
|
14
|
-
end
|
15
|
-
|
16
|
-
test "config" do
|
17
|
-
pepper = Janus.config.pepper
|
18
|
-
begin
|
19
|
-
Janus.config do |config|
|
20
|
-
config.pepper = "0123456789"
|
21
|
-
end
|
22
|
-
assert_equal "0123456789", Janus.config.pepper
|
23
|
-
ensure
|
24
|
-
Janus.config.pepper = pepper
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class RememberableTest < ActiveSupport::TestCase
|
4
|
-
setup do
|
5
|
-
@user = users(:julien)
|
6
|
-
end
|
7
|
-
|
8
|
-
test "remember_token" do
|
9
|
-
@user.remember_me!
|
10
|
-
assert_not_nil @user.remember_token
|
11
|
-
assert_not_nil @user.remember_created_at
|
12
|
-
|
13
|
-
@user.forget_me!
|
14
|
-
assert_nil @user.remember_token
|
15
|
-
assert_nil @user.remember_created_at
|
16
|
-
end
|
17
|
-
|
18
|
-
test "should not remember across browsers" do
|
19
|
-
@user.remember_me!
|
20
|
-
token = @user.remember_token
|
21
|
-
created_at = @user.remember_created_at
|
22
|
-
|
23
|
-
@user.remember_me!
|
24
|
-
assert_not_equal token, @user.remember_token
|
25
|
-
assert_not_equal created_at, @user.remember_created_at
|
26
|
-
end
|
27
|
-
|
28
|
-
test "find_for_remember_authentication" do
|
29
|
-
assert_nil User.find_for_remember_authentication(nil)
|
30
|
-
assert_nil User.find_for_remember_authentication(" ")
|
31
|
-
|
32
|
-
@user.remember_me!
|
33
|
-
token = @user.remember_token
|
34
|
-
|
35
|
-
assert_equal @user, User.find_for_remember_authentication(token)
|
36
|
-
assert_equal @user, User.find_for_remember_authentication(token)
|
37
|
-
|
38
|
-
@user.remember_me!
|
39
|
-
assert_nil User.find_for_remember_authentication(token), "token should no longer be valid"
|
40
|
-
|
41
|
-
@user.forget_me!
|
42
|
-
assert_nil User.find_for_remember_authentication(token), "token should have been erased"
|
43
|
-
end
|
44
|
-
|
45
|
-
test "expiration" do
|
46
|
-
@user.remember_me!
|
47
|
-
@user.update_attribute(:remember_created_at, 1.year.ago)
|
48
|
-
assert_nil User.find_for_remember_authentication(@user.remember_token)
|
49
|
-
end
|
50
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class RemoteAuthenticatableTest < ActiveSupport::TestCase
|
4
|
-
setup do
|
5
|
-
@user = users(:julien)
|
6
|
-
end
|
7
|
-
|
8
|
-
test "session token" do
|
9
|
-
@user.generate_session_token!
|
10
|
-
assert_not_nil @user.session_token
|
11
|
-
|
12
|
-
@user.destroy_session_token!
|
13
|
-
assert_nil @user.session_token
|
14
|
-
end
|
15
|
-
|
16
|
-
test "find_for_remote_authentication" do
|
17
|
-
assert_nil User.find_for_remote_authentication(nil)
|
18
|
-
assert_nil User.find_for_remote_authentication(" ")
|
19
|
-
|
20
|
-
token1 = token2 = nil
|
21
|
-
|
22
|
-
assert_difference('RemoteToken.count', 2) do
|
23
|
-
token1 = @user.generate_remote_token!
|
24
|
-
token2 = @user.generate_remote_token!
|
25
|
-
end
|
26
|
-
|
27
|
-
assert_difference('RemoteToken.count', -1) do
|
28
|
-
assert_equal @user, User.find_for_remote_authentication(token1)
|
29
|
-
assert_nil User.find_for_remote_authentication(token1)
|
30
|
-
end
|
31
|
-
|
32
|
-
assert_difference('RemoteToken.count', -1) do
|
33
|
-
assert_equal @user, User.find_for_remote_authentication(token2)
|
34
|
-
assert_nil User.find_for_remote_authentication(token2)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,9 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class RemoteTokenTest < ActiveSupport::TestCase
|
4
|
-
test "should create" do
|
5
|
-
remote_token = RemoteToken.create(:user => users(:julien))
|
6
|
-
assert remote_token.persisted?, remote_token.errors.to_xml
|
7
|
-
assert_not_nil remote_token.token
|
8
|
-
end
|
9
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ResetPasswordTest < ActiveSupport::TestCase
|
4
|
-
setup do
|
5
|
-
@user = users(:julien)
|
6
|
-
end
|
7
|
-
|
8
|
-
test "generate reset password token" do
|
9
|
-
assert @user.generate_reset_password_token!
|
10
|
-
assert @user.persisted?
|
11
|
-
assert_not_nil @user.reset_password_token
|
12
|
-
assert_not_nil @user.reset_password_sent_at
|
13
|
-
end
|
14
|
-
|
15
|
-
test "reset password" do
|
16
|
-
assert @user.generate_reset_password_token!
|
17
|
-
assert @user.reset_password!('password' => "azerty", 'password_confirmation' => "azerty")
|
18
|
-
assert @user.persisted?
|
19
|
-
assert_nil @user.reset_password_token
|
20
|
-
assert_nil @user.reset_password_sent_at
|
21
|
-
assert @user.valid_password?("azerty")
|
22
|
-
end
|
23
|
-
|
24
|
-
test "should find user with token" do
|
25
|
-
@user.generate_reset_password_token!
|
26
|
-
user = User.find_for_password_reset(@user.reset_password_token)
|
27
|
-
assert_equal @user, user
|
28
|
-
assert_not_nil user.reset_password_token
|
29
|
-
assert_not_nil user.reset_password_sent_at
|
30
|
-
end
|
31
|
-
|
32
|
-
test "should not find user with bad tokens" do
|
33
|
-
assert_nil User.find_for_password_reset(nil)
|
34
|
-
assert_nil User.find_for_password_reset("ariualfknsmgojqm")
|
35
|
-
end
|
36
|
-
|
37
|
-
test "token expiration" do
|
38
|
-
@user.generate_reset_password_token!
|
39
|
-
@user.update_attribute(:reset_password_sent_at, 1.week.ago)
|
40
|
-
assert_nil User.find_for_password_reset(@user.reset_password_token)
|
41
|
-
@user.reload
|
42
|
-
assert_nil @user.reset_password_token
|
43
|
-
assert_nil @user.reset_password_sent_at
|
44
|
-
end
|
45
|
-
end
|
data/test/unit/trackable_test.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class TrackableTest < ActiveSupport::TestCase
|
4
|
-
test "track!" do
|
5
|
-
users(:julien).track!('127.0.0.1')
|
6
|
-
users(:julien).reload
|
7
|
-
|
8
|
-
assert_nil users(:julien).last_sign_in_at
|
9
|
-
assert_nil users(:julien).last_sign_in_ip
|
10
|
-
assert_not_nil users(:julien).current_sign_in_at
|
11
|
-
assert_equal '127.0.0.1', users(:julien).current_sign_in_ip
|
12
|
-
|
13
|
-
users(:julien).track!('127.0.0.2')
|
14
|
-
users(:julien).reload
|
15
|
-
|
16
|
-
assert_not_nil users(:julien).last_sign_in_at
|
17
|
-
assert_not_nil users(:julien).last_sign_in_ip
|
18
|
-
assert_not_nil users(:julien).current_sign_in_at
|
19
|
-
assert_equal '127.0.0.2', users(:julien).current_sign_in_ip
|
20
|
-
end
|
21
|
-
end
|
data/test/unit/user_test.rb
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class UserTest < ActiveSupport::TestCase
|
4
|
-
setup do
|
5
|
-
@user = users(:julien)
|
6
|
-
end
|
7
|
-
|
8
|
-
test "valid_password?" do
|
9
|
-
user = User.new(:password => "azerty")
|
10
|
-
assert user.valid_password?("azerty")
|
11
|
-
assert !user.valid_password?("secret")
|
12
|
-
|
13
|
-
assert @user.valid_password?('secret')
|
14
|
-
assert users(:martha).valid_password?('vacances')
|
15
|
-
end
|
16
|
-
|
17
|
-
test "should validate current_password on update" do
|
18
|
-
@user.update_attributes(:email => 'julien@example.fr', :current_password => 'secret')
|
19
|
-
assert @user.persisted?, @user.errors.to_xml
|
20
|
-
|
21
|
-
@user.update_attributes(:email => 'julien@example.fr', :current_password => 'bad secret')
|
22
|
-
assert @user.errors[:current_password].any?, @user.errors.to_xml
|
23
|
-
end
|
24
|
-
|
25
|
-
test "password" do
|
26
|
-
user = User.new(:password => "my pwd")
|
27
|
-
assert_equal "my pwd", user.password
|
28
|
-
assert_not_nil user.encrypted_password
|
29
|
-
end
|
30
|
-
|
31
|
-
test "should confirm password" do
|
32
|
-
user = User.create(:password => "my pwd", :password_confirmation => "my pwd")
|
33
|
-
assert user.errors[:password].empty?, user.errors.to_xml
|
34
|
-
|
35
|
-
user = User.create(:password => "my pwd", :password_confirmation => "my PWD")
|
36
|
-
assert user.errors[:password].any?, user.errors.to_xml
|
37
|
-
end
|
38
|
-
|
39
|
-
test "clean_up_passwords" do
|
40
|
-
user = User.new(:email => 'julien@example.com', :password => 'abc', :password_confirmation => 'def')
|
41
|
-
assert_not_nil user.email
|
42
|
-
assert_not_nil user.password
|
43
|
-
assert_not_nil user.password_confirmation
|
44
|
-
|
45
|
-
user.clean_up_passwords
|
46
|
-
assert_not_nil user.email
|
47
|
-
assert_nil user.password
|
48
|
-
assert_nil user.password_confirmation
|
49
|
-
end
|
50
|
-
|
51
|
-
test "should update" do
|
52
|
-
@user.update_attributes(:email => 'julien@example.fr')
|
53
|
-
assert @user.persisted?
|
54
|
-
end
|
55
|
-
|
56
|
-
test "find_for_database_authentication" do
|
57
|
-
assert_equal @user, User.find_for_database_authentication(:email => @user.email)
|
58
|
-
assert_equal users(:martha), User.find_for_database_authentication(:email => users(:martha).email)
|
59
|
-
end
|
60
|
-
end
|