devise_invitable 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -12,7 +12,7 @@ begin
12
12
  gem.authors = ["Sergio Cambra"]
13
13
  gem.add_development_dependency 'mocha'
14
14
  gem.add_development_dependency 'webrat'
15
- gem.add_dependency 'devise', '>= 0.7.1'
15
+ gem.add_dependency 'devise', '~> 0.7.2'
16
16
  end
17
17
  Jeweler::GemcutterTasks.new
18
18
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.1.4
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{devise_invitable}
8
- s.version = "0.1.3"
8
+ s.version = "0.1.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Sergio Cambra"]
12
- s.date = %q{2009-12-12}
12
+ s.date = %q{2009-12-23}
13
13
  s.description = %q{It adds support for send invitations by email (it requires to be authenticated) and accept the invitation setting the password}
14
14
  s.email = %q{sergio@entrecables.com}
15
15
  s.extra_rdoc_files = [
@@ -73,31 +73,31 @@ Gem::Specification.new do |s|
73
73
  s.rubygems_version = %q{1.3.5}
74
74
  s.summary = %q{An invitation strategy for devise}
75
75
  s.test_files = [
76
- "test/model_tests_helper.rb",
76
+ "test/integration/invitable_test.rb",
77
77
  "test/integration_tests_helper.rb",
78
- "test/models_test.rb",
79
78
  "test/mailers/invitation_test.rb",
80
- "test/routes_test.rb",
81
- "test/integration/invitable_test.rb",
79
+ "test/model_tests_helper.rb",
82
80
  "test/models/invitable_test.rb",
83
- "test/test_helper.rb",
84
- "test/rails_app/app/controllers/application_controller.rb",
81
+ "test/models_test.rb",
85
82
  "test/rails_app/app/controllers/admins_controller.rb",
83
+ "test/rails_app/app/controllers/application_controller.rb",
86
84
  "test/rails_app/app/controllers/home_controller.rb",
87
85
  "test/rails_app/app/controllers/users_controller.rb",
88
- "test/rails_app/app/models/user.rb",
89
86
  "test/rails_app/app/helpers/application_helper.rb",
90
- "test/rails_app/config/routes.rb",
87
+ "test/rails_app/app/models/user.rb",
88
+ "test/rails_app/config/boot.rb",
89
+ "test/rails_app/config/environment.rb",
90
+ "test/rails_app/config/environments/development.rb",
91
+ "test/rails_app/config/environments/production.rb",
92
+ "test/rails_app/config/environments/test.rb",
91
93
  "test/rails_app/config/initializers/backtrace_silencers.rb",
94
+ "test/rails_app/config/initializers/inflections.rb",
92
95
  "test/rails_app/config/initializers/new_rails_defaults.rb",
93
96
  "test/rails_app/config/initializers/session_store.rb",
94
- "test/rails_app/config/initializers/inflections.rb",
95
- "test/rails_app/config/environments/test.rb",
96
- "test/rails_app/config/environments/development.rb",
97
- "test/rails_app/config/environments/production.rb",
98
- "test/rails_app/config/environment.rb",
99
- "test/rails_app/config/boot.rb",
100
- "test/rails_app/vendor/plugins/devise_invitable/init.rb"
97
+ "test/rails_app/config/routes.rb",
98
+ "test/rails_app/vendor/plugins/devise_invitable/init.rb",
99
+ "test/routes_test.rb",
100
+ "test/test_helper.rb"
101
101
  ]
102
102
 
103
103
  if s.respond_to? :specification_version then
@@ -107,16 +107,16 @@ Gem::Specification.new do |s|
107
107
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
108
108
  s.add_development_dependency(%q<mocha>, [">= 0"])
109
109
  s.add_development_dependency(%q<webrat>, [">= 0"])
110
- s.add_runtime_dependency(%q<devise>, [">= 0.7.1"])
110
+ s.add_runtime_dependency(%q<devise>, ["~> 0.7.2"])
111
111
  else
112
112
  s.add_dependency(%q<mocha>, [">= 0"])
113
113
  s.add_dependency(%q<webrat>, [">= 0"])
114
- s.add_dependency(%q<devise>, [">= 0.7.1"])
114
+ s.add_dependency(%q<devise>, ["~> 0.7.2"])
115
115
  end
116
116
  else
117
117
  s.add_dependency(%q<mocha>, [">= 0"])
118
118
  s.add_dependency(%q<webrat>, [">= 0"])
119
- s.add_dependency(%q<devise>, [">= 0.7.1"])
119
+ s.add_dependency(%q<devise>, ["~> 0.7.2"])
120
120
  end
121
121
  end
122
122
 
@@ -17,32 +17,19 @@ module Devise
17
17
  # User.send_invitation(:email => 'someone@example.com') # send invitation
18
18
  # User.accept_invitation!(:invitation_token => '...') # accept invitation with a token
19
19
  # User.find(1).accept_invitation! # accept invitation
20
- # User.find(1).reset_invitation! # reset invitation status and send invitation again
20
+ # User.find(1).resend_invitation! # reset invitation status and send invitation again
21
21
  module Invitable
22
22
 
23
23
  def self.included(base)
24
24
  base.class_eval do
25
25
  extend ClassMethods
26
- callbacks = []
27
- callbacks.concat before_create_callback_chain.select {|c| c.method == :generate_confirmation_token}
28
- callbacks.concat after_create_callback_chain.select {|c| c.method == :send_confirmation_instructions}
29
- callbacks.each do |c|
30
- c.options[:unless] = lambda{|r| r.class.devise_modules.include?(:invitable) && r.invitation_token}
31
- end
32
26
  end
33
27
  end
34
28
 
35
29
  # Accept an invitation by clearing invitation token and confirming it if model
36
30
  # is confirmable
37
31
  def accept_invitation!
38
- if self.invited?
39
- self.invitation_token = nil
40
- if self.class.devise_modules.include? :confirmable
41
- self.confirm!
42
- else
43
- save
44
- end
45
- end
32
+ self.update_attribute :invitation_token, nil if self.invited?
46
33
  end
47
34
 
48
35
  # Verifies whether a user has been invited or not
@@ -56,8 +43,9 @@ module Devise
56
43
  end
57
44
 
58
45
  # Reset invitation token and send invitation again
59
- def reset_invitation!
46
+ def resend_invitation!
60
47
  if new_record? || invited?
48
+ self.skip_confirmation! if self.new_record? and self.respond_to? :skip_confirmation!
61
49
  generate_invitation_token
62
50
  save(false)
63
51
  send_invitation
@@ -113,7 +101,7 @@ module Devise
113
101
  if invitable.email.blank?
114
102
  invitable.errors.add(:email, :blank)
115
103
  elsif invitable.new_record? || invitable.invited?
116
- invitable.reset_invitation!
104
+ invitable.resend_invitation!
117
105
  else
118
106
  invitable.errors.add(:email, :already_exits, :default => 'already exists')
119
107
  end
@@ -10,6 +10,7 @@ class ActionController::IntegrationTest
10
10
 
11
11
  def create_user(accept_invitation = true)
12
12
  user = User.new :email => 'newuser@test.com'
13
+ user.skip_confirmation!
13
14
  user.invitation_token = 'token'
14
15
  user.invitation_sent_at = Time.now.utc
15
16
  user.save(false)
@@ -1,6 +1,6 @@
1
1
  require 'test/test_helper'
2
2
 
3
- class InviationTest < ActionMailer::TestCase
3
+ class InvitationMailTest < ActionMailer::TestCase
4
4
 
5
5
  def setup
6
6
  setup_mailer
@@ -36,6 +36,7 @@ class ActiveSupport::TestCase
36
36
 
37
37
  def create_user_with_invitation(invitation_token, attributes={})
38
38
  user = new_user({:password => nil, :password_confirmation => nil}.update(attributes))
39
+ user.skip_confirmation!
39
40
  user.invitation_token = invitation_token
40
41
  user.invitation_sent_at = Time.now.utc
41
42
  user.save(false)
@@ -15,7 +15,7 @@ class InvitableTest < ActiveSupport::TestCase
15
15
  user = new_user
16
16
  3.times do
17
17
  token = user.invitation_token
18
- user.reset_invitation!
18
+ user.resend_invitation!
19
19
  assert_not_equal token, user.invitation_token
20
20
  end
21
21
  end
@@ -52,7 +52,7 @@ class InvitableTest < ActiveSupport::TestCase
52
52
  invitation_tokens = []
53
53
  3.times do
54
54
  user = new_user
55
- user.reset_invitation!
55
+ user.resend_invitation!
56
56
  token = user.invitation_token
57
57
  assert !invitation_tokens.include?(token)
58
58
  invitation_tokens << token
@@ -74,6 +74,7 @@ class InvitableTest < ActiveSupport::TestCase
74
74
 
75
75
  test 'should clear invitation token while setting the password' do
76
76
  user = new_user
77
+ user.skip_confirmation!
77
78
  user.update_attribute(:invitation_token, 'valid_token')
78
79
  assert_present user.invitation_token
79
80
  assert user.accept_invitation!
@@ -82,6 +83,7 @@ class InvitableTest < ActiveSupport::TestCase
82
83
 
83
84
  test 'should not clear invitation token if record is invalid' do
84
85
  user = new_user
86
+ user.skip_confirmation!
85
87
  user.update_attribute(:invitation_token, 'valid_token')
86
88
  assert_present user.invitation_token
87
89
  User.any_instance.stubs(:valid?).returns(false)
@@ -94,7 +96,7 @@ class InvitableTest < ActiveSupport::TestCase
94
96
  user = new_user
95
97
  assert_difference('ActionMailer::Base.deliveries.size') do
96
98
  token = user.invitation_token
97
- user.reset_invitation!
99
+ user.resend_invitation!
98
100
  assert_not_equal token, user.invitation_token
99
101
  end
100
102
  end
@@ -121,7 +123,7 @@ class InvitableTest < ActiveSupport::TestCase
121
123
 
122
124
  test 'should find a user to set his password based on invitation_token' do
123
125
  user = new_user
124
- user.reset_invitation!
126
+ user.resend_invitation!
125
127
 
126
128
  invited_user = User.accept_invitation!(:invitation_token => user.invitation_token)
127
129
  assert_equal invited_user, user
@@ -150,7 +152,7 @@ class InvitableTest < ActiveSupport::TestCase
150
152
 
151
153
  test 'should set successfully user password given the new password and confirmation' do
152
154
  user = new_user(:password => nil, :password_confirmation => nil)
153
- user.reset_invitation!
155
+ user.resend_invitation!
154
156
 
155
157
  invited_user = User.accept_invitation!(
156
158
  :invitation_token => user.invitation_token,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_invitable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergio Cambra
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-12 00:00:00 +01:00
12
+ date: 2009-12-23 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -38,9 +38,9 @@ dependencies:
38
38
  version_requirement:
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - ">="
41
+ - - ~>
42
42
  - !ruby/object:Gem::Version
43
- version: 0.7.1
43
+ version: 0.7.2
44
44
  version:
45
45
  description: It adds support for send invitations by email (it requires to be authenticated) and accept the invitation setting the password
46
46
  email: sergio@entrecables.com
@@ -130,28 +130,28 @@ signing_key:
130
130
  specification_version: 3
131
131
  summary: An invitation strategy for devise
132
132
  test_files:
133
- - test/model_tests_helper.rb
133
+ - test/integration/invitable_test.rb
134
134
  - test/integration_tests_helper.rb
135
- - test/models_test.rb
136
135
  - test/mailers/invitation_test.rb
137
- - test/routes_test.rb
138
- - test/integration/invitable_test.rb
136
+ - test/model_tests_helper.rb
139
137
  - test/models/invitable_test.rb
140
- - test/test_helper.rb
141
- - test/rails_app/app/controllers/application_controller.rb
138
+ - test/models_test.rb
142
139
  - test/rails_app/app/controllers/admins_controller.rb
140
+ - test/rails_app/app/controllers/application_controller.rb
143
141
  - test/rails_app/app/controllers/home_controller.rb
144
142
  - test/rails_app/app/controllers/users_controller.rb
145
- - test/rails_app/app/models/user.rb
146
143
  - test/rails_app/app/helpers/application_helper.rb
147
- - test/rails_app/config/routes.rb
144
+ - test/rails_app/app/models/user.rb
145
+ - test/rails_app/config/boot.rb
146
+ - test/rails_app/config/environment.rb
147
+ - test/rails_app/config/environments/development.rb
148
+ - test/rails_app/config/environments/production.rb
149
+ - test/rails_app/config/environments/test.rb
148
150
  - test/rails_app/config/initializers/backtrace_silencers.rb
151
+ - test/rails_app/config/initializers/inflections.rb
149
152
  - test/rails_app/config/initializers/new_rails_defaults.rb
150
153
  - test/rails_app/config/initializers/session_store.rb
151
- - test/rails_app/config/initializers/inflections.rb
152
- - test/rails_app/config/environments/test.rb
153
- - test/rails_app/config/environments/development.rb
154
- - test/rails_app/config/environments/production.rb
155
- - test/rails_app/config/environment.rb
156
- - test/rails_app/config/boot.rb
154
+ - test/rails_app/config/routes.rb
157
155
  - test/rails_app/vendor/plugins/devise_invitable/init.rb
156
+ - test/routes_test.rb
157
+ - test/test_helper.rb