devise_token_auth 0.2.0 → 1.0.0.rc1
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.
Potentially problematic release.
This version of devise_token_auth might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +1 -2
- data/Rakefile +9 -4
- data/app/controllers/devise_token_auth/application_controller.rb +5 -7
- data/app/controllers/devise_token_auth/concerns/resource_finder.rb +2 -2
- data/app/controllers/devise_token_auth/concerns/set_user_by_token.rb +18 -10
- data/app/controllers/devise_token_auth/confirmations_controller.rb +2 -2
- data/app/controllers/devise_token_auth/omniauth_callbacks_controller.rb +17 -23
- data/app/controllers/devise_token_auth/passwords_controller.rb +23 -27
- data/app/controllers/devise_token_auth/registrations_controller.rb +17 -15
- data/app/controllers/devise_token_auth/sessions_controller.rb +8 -12
- data/app/controllers/devise_token_auth/token_validations_controller.rb +3 -3
- data/app/controllers/devise_token_auth/unlocks_controller.rb +10 -12
- data/app/models/devise_token_auth/concerns/user.rb +27 -36
- data/config/initializers/devise.rb +1 -1
- data/lib/devise_token_auth.rb +6 -6
- data/lib/devise_token_auth/controllers/helpers.rb +14 -4
- data/lib/devise_token_auth/engine.rb +11 -13
- data/lib/devise_token_auth/errors.rb +1 -1
- data/lib/devise_token_auth/rails/routes.rb +29 -29
- data/lib/devise_token_auth/url.rb +6 -4
- data/lib/devise_token_auth/version.rb +1 -1
- data/lib/generators/devise_token_auth/install_generator.rb +52 -39
- data/lib/generators/devise_token_auth/install_views_generator.rb +5 -5
- data/lib/generators/devise_token_auth/templates/devise_token_auth_create_users.rb.erb +1 -1
- data/lib/generators/devise_token_auth/templates/{user.rb → user.rb.erb} +0 -0
- data/test/controllers/custom/custom_confirmations_controller_test.rb +3 -1
- data/test/controllers/custom/custom_omniauth_callbacks_controller_test.rb +2 -0
- data/test/controllers/custom/custom_passwords_controller_test.rb +4 -2
- data/test/controllers/custom/custom_registrations_controller_test.rb +6 -8
- data/test/controllers/custom/custom_sessions_controller_test.rb +5 -5
- data/test/controllers/custom/custom_token_validations_controller_test.rb +3 -3
- data/test/controllers/demo_group_controller_test.rb +2 -6
- data/test/controllers/demo_mang_controller_test.rb +2 -5
- data/test/controllers/demo_user_controller_test.rb +8 -17
- data/test/controllers/devise_token_auth/confirmations_controller_test.rb +2 -2
- data/test/controllers/devise_token_auth/passwords_controller_test.rb +13 -9
- data/test/controllers/devise_token_auth/registrations_controller_test.rb +8 -8
- data/test/controllers/devise_token_auth/sessions_controller_test.rb +22 -33
- data/test/controllers/devise_token_auth/token_validations_controller_test.rb +2 -6
- data/test/controllers/devise_token_auth/unlocks_controller_test.rb +1 -1
- data/test/controllers/overrides/confirmations_controller_test.rb +3 -1
- data/test/controllers/overrides/omniauth_callbacks_controller_test.rb +3 -1
- data/test/controllers/overrides/passwords_controller_test.rb +25 -29
- data/test/controllers/overrides/registrations_controller_test.rb +4 -2
- data/test/controllers/overrides/sessions_controller_test.rb +4 -4
- data/test/controllers/overrides/token_validations_controller_test.rb +3 -3
- data/test/dummy/app/controllers/custom/confirmations_controller.rb +0 -2
- data/test/dummy/app/controllers/custom/passwords_controller.rb +1 -4
- data/test/dummy/app/controllers/custom/registrations_controller.rb +1 -2
- data/test/dummy/app/controllers/custom/sessions_controller.rb +1 -3
- data/test/dummy/app/controllers/custom/token_validations_controller.rb +1 -3
- data/test/dummy/app/controllers/overrides/confirmations_controller.rb +3 -3
- data/test/dummy/app/controllers/overrides/omniauth_callbacks_controller.rb +3 -3
- data/test/dummy/app/controllers/overrides/passwords_controller.rb +5 -5
- data/test/dummy/app/controllers/overrides/registrations_controller.rb +2 -2
- data/test/dummy/app/controllers/overrides/sessions_controller.rb +8 -10
- data/test/dummy/app/controllers/overrides/token_validations_controller.rb +3 -5
- data/test/dummy/app/helpers/application_helper.rb +1027 -1036
- data/test/dummy/app/models/scoped_user.rb +2 -2
- data/test/dummy/app/models/unregisterable_user.rb +2 -2
- data/test/dummy/app/models/user.rb +1 -1
- data/test/dummy/config.ru +5 -3
- data/test/dummy/config/application.rb +2 -2
- data/test/dummy/config/boot.rb +2 -2
- data/test/dummy/config/environment.rb +1 -1
- data/test/dummy/config/environments/development.rb +3 -3
- data/test/dummy/config/environments/test.rb +1 -1
- data/test/dummy/config/initializers/omniauth.rb +2 -2
- data/test/dummy/config/routes.rb +10 -29
- data/test/dummy/db/migrate/20140715061447_devise_token_auth_create_users.rb +8 -8
- data/test/dummy/db/migrate/20140715061805_devise_token_auth_create_mangs.rb +7 -7
- data/test/dummy/db/migrate/20141222035835_devise_token_auth_create_only_email_users.rb +4 -4
- data/test/dummy/db/migrate/20141222053502_devise_token_auth_create_unregisterable_users.rb +7 -7
- data/test/dummy/db/migrate/20150708104536_devise_token_auth_create_unconfirmable_users.rb +7 -7
- data/test/dummy/db/migrate/20160103235141_devise_token_auth_create_scoped_users.rb +7 -7
- data/test/dummy/db/migrate/20160629184441_devise_token_auth_create_lockable_users.rb +6 -6
- data/test/dummy/db/schema.rb +2 -60
- data/test/factories/users.rb +40 -0
- data/test/lib/devise_token_auth/url_test.rb +6 -6
- data/test/lib/generators/devise_token_auth/install_generator_test.rb +22 -14
- data/test/lib/generators/devise_token_auth/install_generator_with_namespace_test.rb +30 -22
- data/test/lib/generators/devise_token_auth/install_views_generator_test.rb +1 -1
- data/test/models/user_test.rb +15 -46
- data/test/support/controllers/routes.rb +43 -0
- data/test/test_helper.rb +12 -12
- metadata +8 -14
- data/test/dummy/app/models/evil_user.rb +0 -5
- data/test/dummy/app/models/nice_user.rb +0 -9
- data/test/dummy/db/migrate/20140928231203_devise_token_auth_create_evil_users.rb +0 -66
- data/test/dummy/db/migrate/20150409095712_devise_token_auth_create_nice_users.rb +0 -63
- data/test/integration/navigation_test.rb +0 -12
data/test/dummy/db/schema.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# This file is auto-generated from the current state of the database. Instead
|
2
4
|
# of editing this file, please use the migrations feature of Active Record to
|
3
5
|
# incrementally modify your database, and then regenerate this schema definition.
|
@@ -12,37 +14,6 @@
|
|
12
14
|
|
13
15
|
ActiveRecord::Schema.define(version: 20160629184441) do
|
14
16
|
|
15
|
-
create_table "evil_users", force: :cascade do |t|
|
16
|
-
t.string "email"
|
17
|
-
t.string "encrypted_password", default: "", null: false
|
18
|
-
t.string "reset_password_token"
|
19
|
-
t.datetime "reset_password_sent_at"
|
20
|
-
t.boolean "allow_password_change", default: false
|
21
|
-
t.datetime "remember_created_at"
|
22
|
-
t.integer "sign_in_count", default: 0, null: false
|
23
|
-
t.datetime "current_sign_in_at"
|
24
|
-
t.datetime "last_sign_in_at"
|
25
|
-
t.string "current_sign_in_ip"
|
26
|
-
t.string "last_sign_in_ip"
|
27
|
-
t.string "confirmation_token"
|
28
|
-
t.datetime "confirmed_at"
|
29
|
-
t.datetime "confirmation_sent_at"
|
30
|
-
t.string "unconfirmed_email"
|
31
|
-
t.string "name"
|
32
|
-
t.string "nickname"
|
33
|
-
t.string "image"
|
34
|
-
t.string "provider"
|
35
|
-
t.string "uid", default: "", null: false
|
36
|
-
t.text "tokens"
|
37
|
-
t.string "favorite_color"
|
38
|
-
t.datetime "created_at"
|
39
|
-
t.datetime "updated_at"
|
40
|
-
t.index ["confirmation_token"], name: "index_evil_users_on_confirmation_token", unique: true
|
41
|
-
t.index ["email"], name: "index_evil_users_on_email"
|
42
|
-
t.index ["reset_password_token"], name: "index_evil_users_on_reset_password_token", unique: true
|
43
|
-
t.index ["uid", "provider"], name: "index_evil_users_on_uid_and_provider", unique: true
|
44
|
-
end
|
45
|
-
|
46
17
|
create_table "lockable_users", force: :cascade do |t|
|
47
18
|
t.string "provider", null: false
|
48
19
|
t.string "uid", default: "", null: false
|
@@ -94,35 +65,6 @@ ActiveRecord::Schema.define(version: 20160629184441) do
|
|
94
65
|
t.index ["uid", "provider"], name: "index_mangs_on_uid_and_provider", unique: true
|
95
66
|
end
|
96
67
|
|
97
|
-
create_table "nice_users", force: :cascade do |t|
|
98
|
-
t.string "provider", null: false
|
99
|
-
t.string "uid", default: "", null: false
|
100
|
-
t.string "encrypted_password", default: "", null: false
|
101
|
-
t.string "reset_password_token"
|
102
|
-
t.datetime "reset_password_sent_at"
|
103
|
-
t.boolean "allow_password_change", default: false
|
104
|
-
t.datetime "remember_created_at"
|
105
|
-
t.integer "sign_in_count", default: 0, null: false
|
106
|
-
t.datetime "current_sign_in_at"
|
107
|
-
t.datetime "last_sign_in_at"
|
108
|
-
t.string "current_sign_in_ip"
|
109
|
-
t.string "last_sign_in_ip"
|
110
|
-
t.string "confirmation_token"
|
111
|
-
t.datetime "confirmed_at"
|
112
|
-
t.datetime "confirmation_sent_at"
|
113
|
-
t.string "unconfirmed_email"
|
114
|
-
t.string "name"
|
115
|
-
t.string "nickname"
|
116
|
-
t.string "image"
|
117
|
-
t.string "email"
|
118
|
-
t.text "tokens"
|
119
|
-
t.datetime "created_at"
|
120
|
-
t.datetime "updated_at"
|
121
|
-
t.index ["email"], name: "index_nice_users_on_email"
|
122
|
-
t.index ["reset_password_token"], name: "index_nice_users_on_reset_password_token", unique: true
|
123
|
-
t.index ["uid", "provider"], name: "index_nice_users_on_uid_and_provider", unique: true
|
124
|
-
end
|
125
|
-
|
126
68
|
create_table "only_email_users", force: :cascade do |t|
|
127
69
|
t.string "provider", null: false
|
128
70
|
t.string "uid", default: "", null: false
|
@@ -0,0 +1,40 @@
|
|
1
|
+
FactoryBot.define do
|
2
|
+
factory :user do
|
3
|
+
email { Faker::Internet.safe_email }
|
4
|
+
password { Faker::Internet.password }
|
5
|
+
provider { 'email' }
|
6
|
+
|
7
|
+
transient do
|
8
|
+
allow_unconfirmed_period { Time.now.utc - Devise.allow_unconfirmed_access_for }
|
9
|
+
end
|
10
|
+
|
11
|
+
trait :with_nickname do
|
12
|
+
nickname { Faker::Internet.username }
|
13
|
+
end
|
14
|
+
|
15
|
+
trait :confirmed do
|
16
|
+
after(:create) { |user| user.confirm }
|
17
|
+
end
|
18
|
+
|
19
|
+
# confirmation period is expired
|
20
|
+
trait :unconfirmed do
|
21
|
+
after(:create) do |user, evaluator|
|
22
|
+
user.update_attribute(:confirmation_sent_at, evaluator.allow_unconfirmed_period - 1.day )
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
trait :facebook do
|
27
|
+
uid { Faker::Number.number(10) }
|
28
|
+
provider { 'facebook' }
|
29
|
+
end
|
30
|
+
|
31
|
+
trait :locked do
|
32
|
+
after(:create) { |user| user.lock_access! }
|
33
|
+
end
|
34
|
+
|
35
|
+
factory :lockable_user, class: 'LockableUser'
|
36
|
+
factory :mang_user, class: 'Mang'
|
37
|
+
factory :only_email_user, class: 'OnlyEmailUser'
|
38
|
+
factory :scoped_user, class: 'ScopedUser'
|
39
|
+
end
|
40
|
+
end
|
@@ -3,23 +3,23 @@
|
|
3
3
|
require 'test_helper'
|
4
4
|
|
5
5
|
class DeviseTokenAuth::UrlTest < ActiveSupport::TestCase
|
6
|
-
describe
|
6
|
+
describe 'DeviseTokenAuth::Url#generate' do
|
7
7
|
test 'URI fragment should appear at the end of URL' do
|
8
|
-
params = {client_id: 123}
|
8
|
+
params = { client_id: 123 }
|
9
9
|
url = 'http://example.com#fragment'
|
10
|
-
assert_equal DeviseTokenAuth::Url.send(:generate, url, params),
|
10
|
+
assert_equal DeviseTokenAuth::Url.send(:generate, url, params), 'http://example.com?client_id=123#fragment'
|
11
11
|
end
|
12
12
|
|
13
13
|
describe 'with existing query params' do
|
14
14
|
test 'should preserve existing query params' do
|
15
15
|
url = 'http://example.com?a=1'
|
16
|
-
assert_equal DeviseTokenAuth::Url.send(:generate, url),
|
16
|
+
assert_equal DeviseTokenAuth::Url.send(:generate, url), 'http://example.com?a=1'
|
17
17
|
end
|
18
18
|
|
19
19
|
test 'should marge existing query params with new ones' do
|
20
|
-
params = {client_id: 123}
|
20
|
+
params = { client_id: 123 }
|
21
21
|
url = 'http://example.com?a=1'
|
22
|
-
assert_equal DeviseTokenAuth::Url.send(:generate, url, params),
|
22
|
+
assert_equal DeviseTokenAuth::Url.send(:generate, url, params), 'http://example.com?a=1&client_id=123'
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -41,15 +41,24 @@ module DeviseTokenAuth
|
|
41
41
|
test 'subsequent runs raise no errors' do
|
42
42
|
run_generator
|
43
43
|
end
|
44
|
+
|
45
|
+
test 'add primary key type with rails 5 when specified in rails generator' do
|
46
|
+
run_generator %w[--primary_key_type=uuid --force]
|
47
|
+
if Rails::VERSION::MAJOR >= 5
|
48
|
+
assert_migration 'db/migrate/devise_token_auth_create_users.rb', /create_table\(:users, id: :uuid\) do/
|
49
|
+
else
|
50
|
+
assert_migration 'db/migrate/devise_token_auth_create_users.rb', /create_table\(:users\) do/
|
51
|
+
end
|
52
|
+
end
|
44
53
|
end
|
45
54
|
|
46
55
|
describe 'existing user model' do
|
47
56
|
setup :prepare_destination
|
48
57
|
|
49
58
|
before do
|
50
|
-
@dir = File.join(destination_root,
|
59
|
+
@dir = File.join(destination_root, 'app', 'models')
|
51
60
|
|
52
|
-
@fname = File.join(@dir,
|
61
|
+
@fname = File.join(@dir, 'user.rb')
|
53
62
|
|
54
63
|
# make dir if not exists
|
55
64
|
FileUtils.mkdir_p(@dir)
|
@@ -57,7 +66,7 @@ module DeviseTokenAuth
|
|
57
66
|
# account for rails version 5
|
58
67
|
active_record_needle = (Rails::VERSION::MAJOR == 5) ? 'ApplicationRecord' : 'ActiveRecord::Base'
|
59
68
|
|
60
|
-
@f = File.open(@fname, 'w')
|
69
|
+
@f = File.open(@fname, 'w') do |f|
|
61
70
|
f.write <<-RUBY
|
62
71
|
class User < #{active_record_needle}
|
63
72
|
|
@@ -66,7 +75,7 @@ module DeviseTokenAuth
|
|
66
75
|
end
|
67
76
|
end
|
68
77
|
RUBY
|
69
|
-
|
78
|
+
end
|
70
79
|
|
71
80
|
run_generator
|
72
81
|
end
|
@@ -86,25 +95,24 @@ module DeviseTokenAuth
|
|
86
95
|
end
|
87
96
|
end
|
88
97
|
|
89
|
-
|
90
98
|
describe 'routes' do
|
91
99
|
setup :prepare_destination
|
92
100
|
|
93
101
|
before do
|
94
|
-
@dir = File.join(destination_root,
|
102
|
+
@dir = File.join(destination_root, 'config')
|
95
103
|
|
96
|
-
@fname = File.join(@dir,
|
104
|
+
@fname = File.join(@dir, 'routes.rb')
|
97
105
|
|
98
106
|
# make dir if not exists
|
99
107
|
FileUtils.mkdir_p(@dir)
|
100
108
|
|
101
|
-
@f = File.open(@fname, 'w')
|
109
|
+
@f = File.open(@fname, 'w') do |f|
|
102
110
|
f.write <<-RUBY
|
103
111
|
Rails.application.routes.draw do
|
104
112
|
patch '/chong', to: 'bong#index'
|
105
113
|
end
|
106
114
|
RUBY
|
107
|
-
|
115
|
+
end
|
108
116
|
|
109
117
|
run_generator
|
110
118
|
end
|
@@ -125,7 +133,7 @@ module DeviseTokenAuth
|
|
125
133
|
|
126
134
|
describe 'subsequent models' do
|
127
135
|
before do
|
128
|
-
run_generator %w
|
136
|
+
run_generator %w[Mang mangs]
|
129
137
|
end
|
130
138
|
|
131
139
|
test 'migration is created' do
|
@@ -151,14 +159,14 @@ module DeviseTokenAuth
|
|
151
159
|
setup :prepare_destination
|
152
160
|
|
153
161
|
before do
|
154
|
-
@dir = File.join(destination_root,
|
162
|
+
@dir = File.join(destination_root, 'app', 'controllers')
|
155
163
|
|
156
|
-
@fname = File.join(@dir,
|
164
|
+
@fname = File.join(@dir, 'application_controller.rb')
|
157
165
|
|
158
166
|
# make dir if not exists
|
159
167
|
FileUtils.mkdir_p(@dir)
|
160
168
|
|
161
|
-
@f = File.open(@fname, 'w')
|
169
|
+
@f = File.open(@fname, 'w') do |f|
|
162
170
|
f.write <<-RUBY
|
163
171
|
class ApplicationController < ActionController::Base
|
164
172
|
def whatever
|
@@ -166,7 +174,7 @@ module DeviseTokenAuth
|
|
166
174
|
end
|
167
175
|
end
|
168
176
|
RUBY
|
169
|
-
|
177
|
+
end
|
170
178
|
|
171
179
|
run_generator
|
172
180
|
end
|
@@ -10,15 +10,15 @@ module DeviseTokenAuth
|
|
10
10
|
destination Rails.root.join('tmp/generators')
|
11
11
|
|
12
12
|
# The namespaced user model for testing
|
13
|
-
let(:user_class) {
|
13
|
+
let(:user_class) { 'Azpire::V1::HumanResource::User' }
|
14
14
|
let(:namespace_path) { user_class.underscore }
|
15
|
-
let(:table_name) { user_class.pluralize.underscore.gsub(
|
15
|
+
let(:table_name) { user_class.pluralize.underscore.gsub('/','_') }
|
16
16
|
|
17
17
|
describe 'user model with namespace, clean install' do
|
18
18
|
setup :prepare_destination
|
19
19
|
|
20
20
|
before do
|
21
|
-
run_generator %W
|
21
|
+
run_generator %W[#{user_class} auth]
|
22
22
|
end
|
23
23
|
|
24
24
|
test 'user model (with namespace) is created, concern is included' do
|
@@ -44,7 +44,16 @@ module DeviseTokenAuth
|
|
44
44
|
end
|
45
45
|
|
46
46
|
test 'subsequent runs raise no errors' do
|
47
|
-
run_generator %W
|
47
|
+
run_generator %W[#{user_class} auth]
|
48
|
+
end
|
49
|
+
|
50
|
+
test 'add primary key type with rails 5 when specified in rails generator' do
|
51
|
+
run_generator %W[#{user_class} auth --primary_key_type=uuid --force]
|
52
|
+
if Rails::VERSION::MAJOR >= 5
|
53
|
+
assert_migration "db/migrate/devise_token_auth_create_#{table_name}.rb", /create_table\(:#{table_name}, id: :uuid\) do/
|
54
|
+
else
|
55
|
+
assert_migration "db/migrate/devise_token_auth_create_#{table_name}.rb", /create_table\(:#{table_name}\) do/
|
56
|
+
end
|
48
57
|
end
|
49
58
|
end
|
50
59
|
|
@@ -52,9 +61,9 @@ module DeviseTokenAuth
|
|
52
61
|
setup :prepare_destination
|
53
62
|
|
54
63
|
before do
|
55
|
-
@dir = File.join(destination_root,
|
64
|
+
@dir = File.join(destination_root, 'app', 'models')
|
56
65
|
|
57
|
-
@fname = File.join(@dir,
|
66
|
+
@fname = File.join(@dir, 'user.rb')
|
58
67
|
|
59
68
|
# make dir if not exists
|
60
69
|
FileUtils.mkdir_p(@dir)
|
@@ -62,7 +71,7 @@ module DeviseTokenAuth
|
|
62
71
|
# account for rails version 5
|
63
72
|
active_record_needle = (Rails::VERSION::MAJOR == 5) ? 'ApplicationRecord' : 'ActiveRecord::Base'
|
64
73
|
|
65
|
-
@f = File.open(@fname, 'w')
|
74
|
+
@f = File.open(@fname, 'w') do |f|
|
66
75
|
f.write <<-RUBY
|
67
76
|
class User < #{active_record_needle}
|
68
77
|
|
@@ -71,7 +80,7 @@ module DeviseTokenAuth
|
|
71
80
|
end
|
72
81
|
end
|
73
82
|
RUBY
|
74
|
-
|
83
|
+
end
|
75
84
|
|
76
85
|
run_generator
|
77
86
|
end
|
@@ -91,27 +100,26 @@ module DeviseTokenAuth
|
|
91
100
|
end
|
92
101
|
end
|
93
102
|
|
94
|
-
|
95
103
|
describe 'routes' do
|
96
104
|
setup :prepare_destination
|
97
105
|
|
98
106
|
before do
|
99
|
-
@dir = File.join(destination_root,
|
107
|
+
@dir = File.join(destination_root, 'config')
|
100
108
|
|
101
|
-
@fname = File.join(@dir,
|
109
|
+
@fname = File.join(@dir, 'routes.rb')
|
102
110
|
|
103
111
|
# make dir if not exists
|
104
112
|
FileUtils.mkdir_p(@dir)
|
105
113
|
|
106
|
-
@f = File.open(@fname, 'w')
|
114
|
+
@f = File.open(@fname, 'w') do |f|
|
107
115
|
f.write <<-RUBY
|
108
116
|
Rails.application.routes.draw do
|
109
117
|
patch '/chong', to: 'bong#index'
|
110
118
|
end
|
111
119
|
RUBY
|
112
|
-
|
120
|
+
end
|
113
121
|
|
114
|
-
run_generator %W
|
122
|
+
run_generator %W[#{user_class} auth]
|
115
123
|
end
|
116
124
|
|
117
125
|
test 'route method for user model with namespace is appended to routes file' do
|
@@ -121,7 +129,7 @@ module DeviseTokenAuth
|
|
121
129
|
end
|
122
130
|
|
123
131
|
test 'subsequent runs do not modify file' do
|
124
|
-
run_generator %W
|
132
|
+
run_generator %W[#{user_class} auth]
|
125
133
|
assert_file 'config/routes.rb' do |routes|
|
126
134
|
matches = routes.scan(/mount_devise_token_auth_for '#{user_class}', at: 'auth'/m).size
|
127
135
|
assert_equal 1, matches
|
@@ -130,7 +138,7 @@ module DeviseTokenAuth
|
|
130
138
|
|
131
139
|
describe 'subsequent models' do
|
132
140
|
before do
|
133
|
-
run_generator %w
|
141
|
+
run_generator %w[Mang mangs]
|
134
142
|
end
|
135
143
|
|
136
144
|
test 'migration is created' do
|
@@ -156,14 +164,14 @@ module DeviseTokenAuth
|
|
156
164
|
setup :prepare_destination
|
157
165
|
|
158
166
|
before do
|
159
|
-
@dir = File.join(destination_root,
|
167
|
+
@dir = File.join(destination_root, 'app', 'controllers')
|
160
168
|
|
161
|
-
@fname = File.join(@dir,
|
169
|
+
@fname = File.join(@dir, 'application_controller.rb')
|
162
170
|
|
163
171
|
# make dir if not exists
|
164
172
|
FileUtils.mkdir_p(@dir)
|
165
173
|
|
166
|
-
@f = File.open(@fname, 'w')
|
174
|
+
@f = File.open(@fname, 'w') do |f|
|
167
175
|
f.write <<-RUBY
|
168
176
|
class ApplicationController < ActionController::Base
|
169
177
|
def whatever
|
@@ -171,9 +179,9 @@ module DeviseTokenAuth
|
|
171
179
|
end
|
172
180
|
end
|
173
181
|
RUBY
|
174
|
-
|
182
|
+
end
|
175
183
|
|
176
|
-
run_generator %W
|
184
|
+
run_generator %W[#{user_class} auth]
|
177
185
|
end
|
178
186
|
|
179
187
|
test 'controller concern is appended to application controller' do
|
@@ -183,7 +191,7 @@ module DeviseTokenAuth
|
|
183
191
|
end
|
184
192
|
|
185
193
|
test 'subsequent runs do not modify file' do
|
186
|
-
run_generator %W
|
194
|
+
run_generator %W[#{user_class} auth]
|
187
195
|
assert_file 'app/controllers/application_controller.rb' do |controller|
|
188
196
|
matches = controller.scan(/include DeviseTokenAuth::Concerns::SetUserByToken/m).size
|
189
197
|
assert_equal 1, matches
|
@@ -16,7 +16,7 @@ module DeviseTokenAuth
|
|
16
16
|
run_generator
|
17
17
|
end
|
18
18
|
|
19
|
-
test
|
19
|
+
test 'files are copied' do
|
20
20
|
assert_file 'app/views/devise/mailer/reset_password_instructions.html.erb'
|
21
21
|
assert_file 'app/views/devise/mailer/confirmation_instructions.html.erb'
|
22
22
|
end
|
data/test/models/user_test.rb
CHANGED
@@ -4,21 +4,16 @@ require 'test_helper'
|
|
4
4
|
|
5
5
|
class UserTest < ActiveSupport::TestCase
|
6
6
|
describe User do
|
7
|
-
before do
|
8
|
-
@password = Faker::Internet.password(10, 20)
|
9
|
-
@email = Faker::Internet.email
|
10
|
-
@success_url = Faker::Internet.url
|
11
|
-
@resource = User.new()
|
12
|
-
end
|
13
|
-
|
14
7
|
describe 'serialization' do
|
15
8
|
test 'hash should not include sensitive info' do
|
9
|
+
@resource = build(:user)
|
16
10
|
refute @resource.as_json[:tokens]
|
17
11
|
end
|
18
12
|
end
|
19
13
|
|
20
14
|
describe 'creation' do
|
21
15
|
test 'save fails if uid is missing' do
|
16
|
+
@resource = User.new
|
22
17
|
@resource.uid = nil
|
23
18
|
@resource.save
|
24
19
|
|
@@ -28,40 +23,25 @@ class UserTest < ActiveSupport::TestCase
|
|
28
23
|
|
29
24
|
describe 'email registration' do
|
30
25
|
test 'model should not save if email is blank' do
|
31
|
-
@resource
|
32
|
-
@resource.password = @password
|
33
|
-
@resource.password_confirmation = @password
|
26
|
+
@resource = build(:user, email: nil)
|
34
27
|
|
35
28
|
refute @resource.save
|
36
|
-
assert @resource.errors.messages[:email] == [I18n.t(
|
29
|
+
assert @resource.errors.messages[:email] == [I18n.t('errors.messages.blank')]
|
37
30
|
end
|
38
31
|
|
39
32
|
test 'model should not save if email is not an email' do
|
40
|
-
@resource
|
41
|
-
@resource.email = '@example.com'
|
42
|
-
@resource.password = @password
|
43
|
-
@resource.password_confirmation = @password
|
33
|
+
@resource = build(:user, email: '@example.com')
|
44
34
|
|
45
35
|
refute @resource.save
|
46
|
-
assert @resource.errors.messages[:email] == [I18n.t(
|
36
|
+
assert @resource.errors.messages[:email] == [I18n.t('errors.messages.not_email')]
|
47
37
|
end
|
48
38
|
end
|
49
39
|
|
50
40
|
describe 'email uniqueness' do
|
51
41
|
test 'model should not save if email is taken' do
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
email: @email,
|
56
|
-
provider: provider,
|
57
|
-
password: @password,
|
58
|
-
password_confirmation: @password
|
59
|
-
)
|
60
|
-
|
61
|
-
@resource.email = @email
|
62
|
-
@resource.provider = provider
|
63
|
-
@resource.password = @password
|
64
|
-
@resource.password_confirmation = @password
|
42
|
+
user_attributes = attributes_for(:user)
|
43
|
+
create(:user, user_attributes)
|
44
|
+
@resource = build(:user, user_attributes)
|
65
45
|
|
66
46
|
refute @resource.save
|
67
47
|
assert @resource.errors.messages[:email] == [I18n.t('errors.messages.taken')]
|
@@ -71,10 +51,7 @@ class UserTest < ActiveSupport::TestCase
|
|
71
51
|
|
72
52
|
describe 'oauth2 authentication' do
|
73
53
|
test 'model should save even if email is blank' do
|
74
|
-
@resource
|
75
|
-
@resource.uid = 123
|
76
|
-
@resource.password = @password
|
77
|
-
@resource.password_confirmation = @password
|
54
|
+
@resource = build(:user, :facebook, email: nil)
|
78
55
|
|
79
56
|
assert @resource.save
|
80
57
|
assert @resource.errors.messages[:email].blank?
|
@@ -83,9 +60,7 @@ class UserTest < ActiveSupport::TestCase
|
|
83
60
|
|
84
61
|
describe 'token expiry' do
|
85
62
|
before do
|
86
|
-
@resource =
|
87
|
-
@resource.skip_confirmation!
|
88
|
-
@resource.save!
|
63
|
+
@resource = create(:user, :confirmed)
|
89
64
|
|
90
65
|
@auth_headers = @resource.create_new_auth_token
|
91
66
|
|
@@ -103,9 +78,7 @@ class UserTest < ActiveSupport::TestCase
|
|
103
78
|
|
104
79
|
describe 'user specific token lifespan' do
|
105
80
|
before do
|
106
|
-
@resource =
|
107
|
-
@resource.skip_confirmation!
|
108
|
-
@resource.save!
|
81
|
+
@resource = create(:user, :confirmed)
|
109
82
|
|
110
83
|
auth_headers = @resource.create_new_auth_token
|
111
84
|
@token_global = auth_headers['access-token']
|
@@ -137,9 +110,7 @@ class UserTest < ActiveSupport::TestCase
|
|
137
110
|
|
138
111
|
describe 'expired tokens are destroyed on save' do
|
139
112
|
before do
|
140
|
-
@resource =
|
141
|
-
@resource.skip_confirmation!
|
142
|
-
@resource.save!
|
113
|
+
@resource = create(:user, :confirmed)
|
143
114
|
|
144
115
|
@old_auth_headers = @resource.create_new_auth_token
|
145
116
|
@new_auth_headers = @resource.create_new_auth_token
|
@@ -151,15 +122,13 @@ class UserTest < ActiveSupport::TestCase
|
|
151
122
|
end
|
152
123
|
|
153
124
|
test 'current token was not removed' do
|
154
|
-
assert @resource.tokens[@new_auth_headers[
|
125
|
+
assert @resource.tokens[@new_auth_headers['client']]
|
155
126
|
end
|
156
127
|
end
|
157
128
|
|
158
129
|
describe 'nil tokens are handled properly' do
|
159
130
|
before do
|
160
|
-
@resource =
|
161
|
-
@resource.skip_confirmation!
|
162
|
-
@resource.save!
|
131
|
+
@resource = create(:user, :confirmed)
|
163
132
|
end
|
164
133
|
|
165
134
|
test 'tokens can be set to nil' do
|