goma 0.0.1.rc2 → 0.0.1.rc3
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/Rakefile +11 -6
- data/lib/generators/goma/helpers/helpers.rb +39 -0
- data/lib/generators/goma/install/templates/goma.rb +1 -2
- data/lib/generators/goma/mailer/templates/mailer.rb +1 -1
- data/lib/generators/goma/model/active_record_generator.rb +3 -1
- data/lib/generators/goma/scaffold/user_generator.rb +2 -0
- data/lib/generators/goma/scaffold_controller/scaffold_controller_generator.rb +2 -0
- data/lib/generators/goma/scaffold_controller/templates/confirmation_controller.rb +4 -4
- data/lib/generators/goma/scaffold_controller/templates/user_controller.rb +3 -3
- data/lib/generators/test_unit/goma/model/model_generator.rb +13 -0
- data/lib/generators/test_unit/goma/model/templates/fixtures.yml +30 -0
- data/lib/generators/test_unit/goma/model/templates/unit_test.rb +9 -0
- data/lib/generators/test_unit/goma/scaffold/scaffold_generator.rb +36 -0
- data/lib/generators/test_unit/goma/scaffold/templates/confirmation_functional_test.rb +137 -0
- data/lib/generators/test_unit/goma/scaffold/templates/functional_test.rb +51 -0
- data/lib/generators/test_unit/goma/scaffold/templates/oauth_functional_test.rb +6 -0
- data/lib/generators/test_unit/goma/scaffold/templates/password_functional_test.rb +67 -0
- data/lib/generators/test_unit/goma/scaffold/templates/session_functional_test.rb +122 -0
- data/lib/generators/test_unit/goma/scaffold/templates/unlock_functional_test.rb +47 -0
- data/lib/generators/test_unit/goma/scaffold/templates/user_functional_test.rb +118 -0
- data/lib/goma.rb +1 -1
- data/lib/goma/config.rb +0 -1
- data/lib/goma/controller_test_helpers.rb +65 -0
- data/lib/goma/controllers.rb +1 -1
- data/lib/goma/models/authenticatable.rb +20 -11
- data/lib/goma/models/confirmable.rb +1 -1
- data/lib/goma/models/lockable.rb +1 -2
- data/lib/goma/version.rb +1 -1
- data/test/models/lockable_test.rb +0 -2
- data/test/rails_app/app/controllers/confirmations_controller.rb +4 -4
- data/test/rails_app/app/controllers/users_controller.rb +3 -3
- data/test/rails_app/app/mailers/user_mailer.rb +1 -1
- data/test/rails_app/config/initializers/goma.rb +1 -2
- data/test/rails_app/db/migrate/{20140515111009_create_users.rb → 20140524062919_create_users.rb} +0 -1
- data/test/rails_app/db/migrate/{20140515111010_create_authentications.rb → 20140524062920_create_authentications.rb} +0 -0
- data/test/rails_app/db/schema.rb +1 -2
- data/test/rails_app/test/controllers/authentications_controller_test.rb +4 -0
- data/test/rails_app/test/controllers/confirmations_controller_test.rb +127 -0
- data/test/rails_app/test/controllers/passwords_controller_test.rb +65 -0
- data/test/rails_app/test/controllers/sessions_controller_test.rb +70 -0
- data/test/rails_app/test/controllers/unlocks_controller_test.rb +43 -0
- data/test/rails_app/test/controllers/users_controller_test.rb +109 -0
- data/test/rails_app/test/fixtures/authentications.yml +11 -0
- data/test/rails_app/test/fixtures/users.yml +17 -0
- data/test/rails_app/test/helpers/authentications_helper_test.rb +4 -0
- data/test/rails_app/test/helpers/confirmations_helper_test.rb +4 -0
- data/test/rails_app/test/helpers/passwords_helper_test.rb +4 -0
- data/test/rails_app/test/helpers/sessions_helper_test.rb +4 -0
- data/test/rails_app/test/helpers/unlocks_helper_test.rb +4 -0
- data/test/rails_app/test/helpers/users_helper_test.rb +4 -0
- data/test/rails_app/test/mailers/user_mailer_test.rb +7 -0
- data/test/rails_app/test/models/authentication_test.rb +7 -0
- data/test/rails_app/test/models/user_test.rb +7 -0
- data/test/rails_app/test/test_helper.rb +16 -0
- data/test/test_helper.rb +1 -1
- metadata +54 -7
- data/lib/goma/test_helpers.rb +0 -67
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 398a6fc63442ad680bca1a497b146163cd7d9403
|
4
|
+
data.tar.gz: f55f88ac4e630605297ce4f054453ee7a3677adc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eca7341609661f75c09dce50bf54a854b55a0f8d56a1fb8bbd4edf30bbe5c72fca1a098544afdb42ce6b025b41accc4d3f084f809f9d234f352ed5b4a8c5e3d5
|
7
|
+
data.tar.gz: 70c6036f1ba70bde98f26887287f79664d66b712f91bb1fbcb84c49fcd3172f83fa06c65cccbfce16b33a73dd704bebda255a246d86203ee9d164bc94640b475
|
data/Gemfile.lock
CHANGED
data/Rakefile
CHANGED
@@ -25,23 +25,28 @@ require 'single_test/tasks'
|
|
25
25
|
Rake::TestTask.new(:test) do |t|
|
26
26
|
t.libs << 'lib'
|
27
27
|
t.libs << 'test'
|
28
|
-
t.pattern = 'test
|
28
|
+
t.pattern = 'test/{models,controllers,integration}/*_test.rb'
|
29
29
|
t.verbose = false
|
30
30
|
end
|
31
31
|
|
32
32
|
desc "Rebuild test app's resources"
|
33
33
|
task "rebuild_test_app" do
|
34
|
-
migration = '
|
34
|
+
migration = (ENV['MIGRATE'] || ENV['MIGRATION']) ? '' : ' --no-migration'
|
35
|
+
quiet = ENV['VERVOSE'] ? '' : ' --quiet'
|
35
36
|
cd "test/rails_app"
|
36
|
-
sh "bundle exec rails d goma:scaffold User#{migration}"
|
37
|
-
sh "bundle exec rails g goma:scaffold User#{migration}"
|
37
|
+
sh "bundle exec rails d goma:scaffold User#{migration}#{quiet}"
|
38
|
+
sh "bundle exec rails g goma:scaffold User#{migration}#{quiet}"
|
38
39
|
if migration.empty?
|
39
40
|
sh "RAILS_ENV=test bundle exec rake db:drop"
|
40
41
|
sh "RAILS_ENV=test bundle exec rake db:create"
|
41
42
|
sh "RAILS_ENV=test bundle exec rake db:migrate"
|
42
43
|
end
|
43
|
-
|
44
|
-
|
44
|
+
end
|
45
|
+
|
46
|
+
desc "Run test in test app"
|
47
|
+
task "in_app_test" do
|
48
|
+
cd "test/rails_app"
|
49
|
+
sh "bundle exec rake test"
|
45
50
|
end
|
46
51
|
|
47
52
|
desc "Run tests for all environment variables"
|
@@ -59,9 +59,42 @@ module Goma
|
|
59
59
|
false
|
60
60
|
end
|
61
61
|
|
62
|
+
def login_path
|
63
|
+
longer_name? ? "new_#{resource_name}_session_path" : "new_session_path"
|
64
|
+
end
|
65
|
+
|
62
66
|
def login_url
|
63
67
|
longer_name? ? "new_#{resource_name}_session_url" : "new_session_url"
|
64
68
|
end
|
69
|
+
|
70
|
+
def expire(within)
|
71
|
+
within.inspect.gsub(/^(\d+)\s*(\w*)$/) { "#{$1.to_i + 1}.#{$2}" }
|
72
|
+
end
|
73
|
+
|
74
|
+
def a_resource
|
75
|
+
"#{resource_name.to_s.pluralize}(:#{resource_name})"
|
76
|
+
end
|
77
|
+
|
78
|
+
def new_resource_attributes
|
79
|
+
h = {}
|
80
|
+
i = counter
|
81
|
+
goma_config.authentication_keys.map do |key|
|
82
|
+
if key == goma_config.email_attribute_name
|
83
|
+
h[key] = "#{goma_scope}#{i}@example.com"
|
84
|
+
else
|
85
|
+
h[key] = "#{key}#{i}"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
[goma_config.password_attribute_name, goma_config.password_confirmation_attribute_name].map do |key|
|
89
|
+
h[key] = 'password'
|
90
|
+
end
|
91
|
+
h
|
92
|
+
end
|
93
|
+
|
94
|
+
def counter
|
95
|
+
@counter ||= 0
|
96
|
+
@counter += 1
|
97
|
+
end
|
65
98
|
end
|
66
99
|
end
|
67
100
|
end
|
@@ -71,3 +104,9 @@ class Array
|
|
71
104
|
self.to_sentence(words_connector: '_', two_words_connector: '_or_', last_word_connector: '_or_')
|
72
105
|
end
|
73
106
|
end
|
107
|
+
|
108
|
+
class Hash
|
109
|
+
def inspect19
|
110
|
+
'{ ' + map { |k, v| "#{k}: \"#{v}\"" }.join(', ') + ' }'
|
111
|
+
end
|
112
|
+
end
|
@@ -35,7 +35,7 @@ Goma.configure do |config|
|
|
35
35
|
# config.activation_mailer_name = nil
|
36
36
|
# config.email_confirmation_mailer_name = nil
|
37
37
|
# config.confirmation_keys = [ :email ]
|
38
|
-
# config.
|
38
|
+
# config.allow_unactivated_access_for = 0
|
39
39
|
# config.activate_within = 3.days
|
40
40
|
# config.activation_needed_email_method_name = :activation_needed_email
|
41
41
|
# config.activation_success_email_method_name = :activation_success_email
|
@@ -78,7 +78,6 @@ Goma.configure do |config|
|
|
78
78
|
# config.unlock_in = 1.hour
|
79
79
|
# config.last_attempt_warning = false # TODO not yet implemented
|
80
80
|
# config.unlock_token_attribute_name = :unlock_token
|
81
|
-
# config.unlock_token_sent_at_attribute_name = :unlock_token_sent_at
|
82
81
|
# config.unlock_token_to_send_attribute_name = :raw_unlock_token
|
83
82
|
|
84
83
|
####################################################
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<% module_namespacing do -%>
|
2
2
|
class <%= class_name %> < ActionMailer::Base
|
3
|
-
default from:
|
3
|
+
default from: Goma.config(:<%= resource_name %>).mailer_sender
|
4
4
|
|
5
5
|
<% goma_actions.each do |action, subject| -%>
|
6
6
|
# Subject can be set in your I18n file at config/locales/en.yml
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'rails/generators/active_record/model/model_generator'
|
2
|
+
require 'generators/test_unit/goma/model/model_generator'
|
2
3
|
|
3
4
|
module Goma
|
4
5
|
module Generators
|
@@ -24,6 +25,8 @@ module Goma
|
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
28
|
+
hook_for :test_framework, as: 'goma:model'
|
29
|
+
|
27
30
|
private
|
28
31
|
def merge_goma_user_attributes!
|
29
32
|
self.attributes = (goma_user_attributes.map do |attr|
|
@@ -69,7 +72,6 @@ module Goma
|
|
69
72
|
attrs << {type: :integer, field: goma_config.failed_attempts_attribute_name}
|
70
73
|
attrs << {type: :datetime, field: goma_config.locked_at_attribute_name}
|
71
74
|
attrs << {type: :string, field: goma_config.unlock_token_attribute_name, index: :uniq}
|
72
|
-
attrs << {type: :datetime, field: goma_config.unlock_token_sent_at_attribute_name}
|
73
75
|
end
|
74
76
|
|
75
77
|
if goma_config.modules.include? :recoverable
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator'
|
2
2
|
require 'generators/goma/helpers/helpers'
|
3
|
+
require 'generators/test_unit/goma/scaffold/scaffold_generator'
|
3
4
|
|
4
5
|
module Goma
|
5
6
|
module Generators
|
@@ -19,6 +20,7 @@ module Goma
|
|
19
20
|
end
|
20
21
|
|
21
22
|
hook_for :template_engine, in: 'goma'
|
23
|
+
hook_for :test_framework, as: 'goma:scaffold'
|
22
24
|
end
|
23
25
|
end
|
24
26
|
end
|
@@ -46,15 +46,15 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
46
46
|
redirect_to root_url, notice: 'Your new email was successfully confirmed.'
|
47
47
|
else
|
48
48
|
if err == :token_expired
|
49
|
-
flash
|
49
|
+
flash[:alert] = "Your email confirmation URL has expired, please change your email again."
|
50
50
|
else
|
51
|
-
flash
|
51
|
+
flash[:alert] = "Email confirmation failed. Please make sure you used the full URL provided."
|
52
52
|
end
|
53
53
|
|
54
54
|
if current_<%= resource_name %>
|
55
|
-
|
55
|
+
redirect_to edit_<%= resource_name%>_url(current_<%= resource_name %>)
|
56
56
|
else
|
57
|
-
|
57
|
+
redirect_to root_url
|
58
58
|
end
|
59
59
|
end
|
60
60
|
end
|
@@ -23,7 +23,7 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
23
23
|
|
24
24
|
# GET <%= route_url %>/1/edit
|
25
25
|
def edit
|
26
|
-
<%= goma_config.not_authenticated_action %> unless current_user
|
26
|
+
<%= goma_config.not_authenticated_action %> unless current_user == @user
|
27
27
|
end
|
28
28
|
|
29
29
|
# POST <%= route_url %>
|
@@ -49,7 +49,7 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
49
49
|
|
50
50
|
# PATCH/PUT <%= route_url %>/1
|
51
51
|
def update
|
52
|
-
<%= goma_config.not_authenticated_action %> unless current_user
|
52
|
+
<%= goma_config.not_authenticated_action %> unless current_user == @user
|
53
53
|
if @<%= orm_instance.update("#{singular_table_name}_params") %>
|
54
54
|
<% if goma_config.modules.include?(:confirmable) && goma_config.email_confirmation_enabled -%>
|
55
55
|
flash[:notice] = @<%= singular_table_name %>.<%= goma_config.confirmation_token_to_send_attribute_name %> ?
|
@@ -66,7 +66,7 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
66
66
|
|
67
67
|
# DELETE <%= route_url %>/1
|
68
68
|
def destroy
|
69
|
-
<%= goma_config.not_authenticated_action %> unless current_user
|
69
|
+
<%= goma_config.not_authenticated_action %> unless current_user == @user
|
70
70
|
@<%= orm_instance.destroy %>
|
71
71
|
redirect_to <%= index_helper %>_url, notice: <%= "'#{human_name} was successfully destroyed.'" %>
|
72
72
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'rails/generators/test_unit/model/model_generator'
|
2
|
+
require 'generators/goma/helpers/helpers'
|
3
|
+
|
4
|
+
module TestUnit
|
5
|
+
module Generators
|
6
|
+
module Goma
|
7
|
+
class ModelGenerator < ::TestUnit::Generators::ModelGenerator
|
8
|
+
include ::Goma::Generators::Helpers
|
9
|
+
source_root File.expand_path('../templates', __FILE__)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
2
|
+
|
3
|
+
<% [:one, :two].each do |name| -%>
|
4
|
+
<%= name %>:
|
5
|
+
<% if goma_config.modules.include?(:password_authenticatable) -%>
|
6
|
+
<% (goma_config.authentication_keys - [goma_config.email_attribute_name]).each do |key| -%>
|
7
|
+
<%= key %>: '<%= "#{name}_#{key}" %>'
|
8
|
+
<% end -%>
|
9
|
+
<% if goma_config.email_attribute_name -%>
|
10
|
+
<%= goma_config.email_attribute_name %>: <%= name %>@example.com
|
11
|
+
<% end -%>
|
12
|
+
<%= goma_config.encrypted_password_attribute_name %>: <%%= Goma.encryptor.encrypt('password', '<%= goma_config.pepper %>') %>
|
13
|
+
<% end -%>
|
14
|
+
<% if goma_config.modules.include?(:confirmable) -%>
|
15
|
+
<%= goma_config.activated_at_attribute_name %>: <%%= Time.now.utc %>
|
16
|
+
<% end -%>
|
17
|
+
<% end -%>
|
18
|
+
|
19
|
+
<% if goma_config.modules.include?(:confirmable) -%>
|
20
|
+
unactivated_<%= resource_name %>:
|
21
|
+
<% if goma_config.modules.include?(:password_authenticatable) -%>
|
22
|
+
<% (goma_config.authentication_keys - [goma_config.email_attribute_name]).each do |key| -%>
|
23
|
+
<%= key %>: '<%= "unactivated_#{goma_scope}_#{key}" %>'
|
24
|
+
<% end -%>
|
25
|
+
<% if goma_config.email_attribute_name -%>
|
26
|
+
<%= goma_config.email_attribute_name %>: unactivated_<%= goma_scope %>@example.com
|
27
|
+
<% end -%>
|
28
|
+
<%= goma_config.encrypted_password_attribute_name %>: <%%= Goma.encryptor.encrypt('password', '<%= goma_config.pepper %>') %>
|
29
|
+
<% end -%>
|
30
|
+
<% end -%>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'rails/generators/test_unit/scaffold/scaffold_generator'
|
2
|
+
require 'generators/goma/helpers/helpers'
|
3
|
+
|
4
|
+
module TestUnit
|
5
|
+
module Generators
|
6
|
+
module Goma
|
7
|
+
class ScaffoldGenerator < ::TestUnit::Generators::ScaffoldGenerator
|
8
|
+
include ::Goma::Generators::Helpers
|
9
|
+
source_root File.expand_path('../templates', __FILE__)
|
10
|
+
|
11
|
+
class_option :controller_type, required: true
|
12
|
+
class_option :resource_name
|
13
|
+
|
14
|
+
def create_test_files
|
15
|
+
template "#{options[:controller_type]}_functional_test.rb",
|
16
|
+
File.join("test/controllers", controller_class_path, "#{controller_file_name}_controller_test.rb")
|
17
|
+
end
|
18
|
+
|
19
|
+
def inject_controller_test_helpers
|
20
|
+
path = File.expand_path('test/test_helper.rb', destination_root)
|
21
|
+
File.open path do |f|
|
22
|
+
unless f.read =~ /class\s+ActionController::TestCase/
|
23
|
+
append_to_file path do
|
24
|
+
<<-RUBY.strip_heredoc
|
25
|
+
class ActionController::TestCase
|
26
|
+
end
|
27
|
+
RUBY
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
inject_into_class('test/test_helper.rb', 'ActionController::TestCase', " include Goma::ControllerTestHelpers\n")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,137 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
<% module_namespacing do -%>
|
4
|
+
class <%= controller_class_name %>ControllerTest < ActionController::TestCase
|
5
|
+
setup do
|
6
|
+
@<%= resource_name %> = <%= resource_name.pluralize %>(:unactivated_<%= resource_name %>)
|
7
|
+
end
|
8
|
+
|
9
|
+
test "should get new" do
|
10
|
+
get :new
|
11
|
+
assert_response :success
|
12
|
+
end
|
13
|
+
|
14
|
+
test "should create <%= singular_table_name %>" do
|
15
|
+
<%= resource_name %> = <%= resource_class_name %>.create(<%= new_resource_attributes.inspect19 %>)
|
16
|
+
assert_difference 'ActionMailer::Base.deliveries.size', 1 do
|
17
|
+
post :create, <%= goma_config.authentication_keys.to_field_name %>: <%= resource_name %>.<%= goma_config.email_attribute_name %>
|
18
|
+
end
|
19
|
+
assert_redirected_to <%= login_url %>
|
20
|
+
assert_match /You will receive new activation email/, flash[:notice]
|
21
|
+
end
|
22
|
+
|
23
|
+
test "should activate <%= resource_name %>" do
|
24
|
+
<%= resource_name %> = <%= resource_class_name %>.create(<%= new_resource_attributes.inspect19 %>)
|
25
|
+
<% if goma_config.activation_success_email_method_name -%>
|
26
|
+
assert_difference 'ActionMailer::Base.deliveries.size', 1 do
|
27
|
+
<% else -%>
|
28
|
+
assert_no_difference 'ActionMailer::Base.deliveries.size' do
|
29
|
+
<% end -%>
|
30
|
+
get :show, id: <%= resource_name %>.<%= goma_config.confirmation_token_to_send_attribute_name %>
|
31
|
+
end
|
32
|
+
assert_redirected_to <%= login_url %>
|
33
|
+
assert_match /Your account was successfully activated/, flash[:notice]
|
34
|
+
<%= resource_name %>.reload
|
35
|
+
assert <%= resource_name %>.activated?
|
36
|
+
end
|
37
|
+
|
38
|
+
test "should not activate <%= resource_name %> with wrong token" do
|
39
|
+
<%= resource_name %> = <%= resource_class_name %>.create(<%= new_resource_attributes.inspect19 %>)
|
40
|
+
assert_no_difference 'ActionMailer::Base.deliveries.size' do
|
41
|
+
get :show, id: 'oops'
|
42
|
+
end
|
43
|
+
assert_response :success
|
44
|
+
assert_template :new
|
45
|
+
assert_match /Not found any account by this URL/, flash[:alert]
|
46
|
+
<%= resource_name %>.reload
|
47
|
+
refute <%= resource_name %>.activated?
|
48
|
+
end
|
49
|
+
|
50
|
+
test "should not activate <%= resource_name %> with expired token" do
|
51
|
+
<%= resource_name %> = <%= resource_class_name %>.create(<%= new_resource_attributes.inspect19 %>)
|
52
|
+
<%= resource_name %>.update_column(:<%= goma_config.confirmation_token_sent_at_attribute_name %>, <%= expire(goma_config.activate_within) %>.ago)
|
53
|
+
assert_no_difference 'ActionMailer::Base.deliveries.size' do
|
54
|
+
get :show, id: <%= resource_name %>.<%= goma_config.confirmation_token_to_send_attribute_name %>
|
55
|
+
end
|
56
|
+
assert_response :success
|
57
|
+
assert_template :new
|
58
|
+
assert_match /Your activation URL has expired/, flash[:alert]
|
59
|
+
<%= resource_name %>.reload
|
60
|
+
refute <%= resource_name %>.activated?
|
61
|
+
end
|
62
|
+
|
63
|
+
test "should confirm email" do
|
64
|
+
<%= resource_name %> = <%= resource_name.pluralize %>(:one)
|
65
|
+
<%= goma_config.email_attribute_name %> = <%= resource_name %>.<%= goma_config.email_attribute_name %>
|
66
|
+
<%= resource_name %>.update(<%= goma_config.email_attribute_name %>: 'new@example.com')
|
67
|
+
assert_equal 'new@example.com', <%= resource_name %>.<%= goma_config.unconfirmed_email_attribute_name %>
|
68
|
+
assert_equal <%= goma_config.email_attribute_name %>, <%= resource_name %>.<%= goma_config.email_attribute_name %>
|
69
|
+
<% if goma_config.activation_success_email_method_name -%>
|
70
|
+
assert_difference 'ActionMailer::Base.deliveries.size', 1 do
|
71
|
+
<% else -%>
|
72
|
+
assert_no_difference 'ActionMailer::Base.deliveries.size' do
|
73
|
+
<% end -%>
|
74
|
+
get :email, id: <%= resource_name %>.<%= goma_config.confirmation_token_to_send_attribute_name %>
|
75
|
+
end
|
76
|
+
assert_redirected_to root_path
|
77
|
+
assert_match /Your new email was successfully confirmed/, flash[:notice]
|
78
|
+
<%= resource_name %>.reload
|
79
|
+
assert_equal 'new@example.com', <%= resource_name %>.<%= goma_config.email_attribute_name %>
|
80
|
+
assert_nil <%= resource_name %>.<%= goma_config.unconfirmed_email_attribute_name %>
|
81
|
+
end
|
82
|
+
|
83
|
+
test "should not confirm email with wrong token" do
|
84
|
+
<%= resource_name %> = <%= resource_name.pluralize %>(:one)
|
85
|
+
<%= goma_config.email_attribute_name %> = <%= resource_name %>.<%= goma_config.email_attribute_name %>
|
86
|
+
<%= resource_name %>.update(<%= goma_config.email_attribute_name %>: 'new@example.com')
|
87
|
+
assert_equal 'new@example.com', <%= resource_name %>.<%= goma_config.unconfirmed_email_attribute_name %>
|
88
|
+
assert_equal <%= goma_config.email_attribute_name %>, <%= resource_name %>.<%= goma_config.email_attribute_name %>
|
89
|
+
assert_no_difference 'ActionMailer::Base.deliveries.size' do
|
90
|
+
get :email, id: 'oops'
|
91
|
+
end
|
92
|
+
assert_redirected_to root_path
|
93
|
+
assert_match /Please make sure you used the full URL provided/, flash[:alert]
|
94
|
+
<%= resource_name %>.reload
|
95
|
+
assert_equal <%= goma_config.email_attribute_name %>, <%= resource_name %>.<%= goma_config.email_attribute_name %>
|
96
|
+
assert_equal 'new@example.com', <%= resource_name %>.<%= goma_config.unconfirmed_email_attribute_name %>
|
97
|
+
end
|
98
|
+
|
99
|
+
test "should not confirm email with expired token" do
|
100
|
+
<%= resource_name %> = <%= resource_name.pluralize %>(:one)
|
101
|
+
<%= goma_config.email_attribute_name %> = <%= resource_name %>.<%= goma_config.email_attribute_name %>
|
102
|
+
<%= resource_name %>.update(<%= goma_config.email_attribute_name %>: 'new@example.com')
|
103
|
+
<%= resource_name %>.update_column(:<%= goma_config.confirmation_token_sent_at_attribute_name %>, <%= expire(goma_config.confirm_email_within) %>.ago)
|
104
|
+
assert_equal 'new@example.com', <%= resource_name %>.<%= goma_config.unconfirmed_email_attribute_name %>
|
105
|
+
assert_equal <%= goma_config.email_attribute_name %>, <%= resource_name %>.<%= goma_config.email_attribute_name %>
|
106
|
+
assert_no_difference 'ActionMailer::Base.deliveries.size' do
|
107
|
+
get :email, id: <%= resource_name %>.<%= goma_config.confirmation_token_to_send_attribute_name %>
|
108
|
+
end
|
109
|
+
assert_redirected_to root_path
|
110
|
+
assert_match /Your email confirmation URL has expired/, flash[:alert]
|
111
|
+
<%= resource_name %>.reload
|
112
|
+
assert_equal <%= goma_config.email_attribute_name %>, <%= resource_name %>.<%= goma_config.email_attribute_name %>
|
113
|
+
assert_equal 'new@example.com', <%= resource_name %>.<%= goma_config.unconfirmed_email_attribute_name %>
|
114
|
+
end
|
115
|
+
|
116
|
+
test "should be redirected to edit_user_url when failed to confirm email with wrong token if logged in" do
|
117
|
+
<%= resource_name %> = <%= resource_name.pluralize %>(:one)
|
118
|
+
force_login(<%= resource_name %>)
|
119
|
+
<%= resource_name %>.update(<%= goma_config.email_attribute_name %>: 'new@example.com')
|
120
|
+
get :email, id: 'oops'
|
121
|
+
assert_redirected_to edit_user_url(<%= resource_name %>)
|
122
|
+
assert_match /Please make sure you used the full URL provided/, flash[:alert]
|
123
|
+
<%= resource_name %>.reload
|
124
|
+
end
|
125
|
+
|
126
|
+
test "should be redirected to edit_user_url when failed to confirm email with expired token if logged in" do
|
127
|
+
<%= resource_name %> = <%= resource_name.pluralize %>(:one)
|
128
|
+
force_login(<%= resource_name %>)
|
129
|
+
<%= resource_name %>.update(<%= goma_config.email_attribute_name %>: 'new@example.com')
|
130
|
+
<%= resource_name %>.update_column(:<%= goma_config.confirmation_token_sent_at_attribute_name %>, <%= expire(goma_config.confirm_email_within) %>.ago)
|
131
|
+
get :email, id: <%= resource_name %>.<%= goma_config.confirmation_token_to_send_attribute_name %>
|
132
|
+
assert_redirected_to edit_user_url(<%= resource_name %>)
|
133
|
+
assert_match /Your email confirmation URL has expired/, flash[:alert]
|
134
|
+
end
|
135
|
+
|
136
|
+
end
|
137
|
+
<% end -%>
|