adva_user 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README +114 -0
- data/README.md +29 -0
- data/Rakefile +2 -0
- data/adva_user.gemspec +17 -0
- data/app/controllers/admin/base_account_controller.rb +13 -0
- data/app/controllers/admin/users_controller.rb +95 -0
- data/app/controllers/password_controller.rb +36 -0
- data/app/controllers/session_controller.rb +30 -0
- data/app/helpers/users_helper.rb +27 -0
- data/app/models/account.rb +7 -0
- data/app/models/membership.rb +16 -0
- data/app/models/password_mailer.rb +43 -0
- data/app/models/user.rb +106 -0
- data/app/views/admin/users/_form.html.erb +29 -0
- data/app/views/admin/users/_sidebar.html.erb +8 -0
- data/app/views/admin/users/edit.html.erb +7 -0
- data/app/views/admin/users/index.html.erb +13 -0
- data/app/views/admin/users/new.html.erb +5 -0
- data/app/views/admin/users/show.html.erb +27 -0
- data/app/views/layouts/login.html.erb +24 -0
- data/app/views/password/edit.html.erb +14 -0
- data/app/views/password/new.html.erb +13 -0
- data/app/views/password_mailer/reset_password_email.html.erb +3 -0
- data/app/views/password_mailer/updated_password_email.html.erb +1 -0
- data/app/views/session/new.html.erb +17 -0
- data/config/initializers/menus.rb +25 -0
- data/config/routes.rb +14 -0
- data/db/migrate/20080402000001_create_users_table.rb +33 -0
- data/db/migrate/20080402000005_create_memberships_table.rb +13 -0
- data/db/migrate/20090625124502_create_accounts.rb +13 -0
- data/db/migrate/20090625133231_add_account_to_user.rb +10 -0
- data/lib/action_controller/authenticate_anonymous.rb +70 -0
- data/lib/action_controller/authenticate_user.rb +201 -0
- data/lib/active_record/belongs_to_author.rb +37 -0
- data/lib/adva_user.rb +28 -0
- data/lib/adva_user/version.rb +3 -0
- data/lib/login/helper_integration.rb +11 -0
- data/lib/login/mail_config.rb +39 -0
- data/test/contexts.rb +42 -0
- data/test/fixtures.rb +18 -0
- data/test/functional/admin/users_controller_test.rb +176 -0
- data/test/functional/password_controller_test.rb +96 -0
- data/test/functional/session_controller_test.rb +1 -0
- data/test/functional/user_controller_test.rb +95 -0
- data/test/integration/anonymous_login_test.rb +39 -0
- data/test/integration/edit_user_test.rb +44 -0
- data/test/integration/memberships_test.rb +52 -0
- data/test/integration/user_deletion_test.rb +27 -0
- data/test/integration/user_login_test.rb +53 -0
- data/test/integration/user_login_with_remember_me_test.rb +20 -0
- data/test/integration/user_registration_test.rb +64 -0
- data/test/test_helper.rb +1 -0
- data/test/unit/cells/user_cell_test.rb +13 -0
- data/test/unit/helpers/users_helper_test.rb +52 -0
- data/test/unit/models/account_test.rb +21 -0
- data/test/unit/models/anonymous_test.rb +54 -0
- data/test/unit/models/password_mailer_test.rb +26 -0
- data/test/unit/models/user_mailer_test.rb +16 -0
- data/test/unit/models/user_test.rb +173 -0
- data/vendor/gems/authentication/.gitignore +17 -0
- data/vendor/gems/authentication/Gemfile +4 -0
- data/vendor/gems/authentication/LICENSE +22 -0
- data/vendor/gems/authentication/MIT-LICENSE +38 -0
- data/vendor/gems/authentication/README +39 -0
- data/vendor/gems/authentication/README.md +29 -0
- data/vendor/gems/authentication/RUNNING_UNIT_TESTS +13 -0
- data/vendor/gems/authentication/Rakefile +61 -0
- data/vendor/gems/authentication/authentication.gemspec +17 -0
- data/vendor/gems/authentication/lib/authentication.rb +270 -0
- data/vendor/gems/authentication/lib/authentication/active_record_extensions.rb +11 -0
- data/vendor/gems/authentication/lib/authentication/bogus.rb +13 -0
- data/vendor/gems/authentication/lib/authentication/hash_helper.rb +26 -0
- data/vendor/gems/authentication/lib/authentication/ldap.rb +49 -0
- data/vendor/gems/authentication/lib/authentication/remember_me.rb +52 -0
- data/vendor/gems/authentication/lib/authentication/salted_hash.rb +53 -0
- data/vendor/gems/authentication/lib/authentication/single_token.rb +53 -0
- data/vendor/gems/authentication/lib/authentication/version.rb +3 -0
- data/vendor/gems/authentication/lib/radius/dictionary +207 -0
- data/vendor/gems/authentication/test_backup/abstract_unit.rb +30 -0
- data/vendor/gems/authentication/test_backup/active_record_extension_test.rb +17 -0
- data/vendor/gems/authentication/test_backup/authentication_test.rb +231 -0
- data/vendor/gems/authentication/test_backup/database.yml +12 -0
- data/vendor/gems/authentication/test_backup/fixtures/user.rb +3 -0
- data/vendor/gems/authentication/test_backup/fixtures/users.yml +3 -0
- data/vendor/gems/authentication/test_backup/options_test.rb +100 -0
- data/vendor/gems/authentication/test_backup/remember_me_test.rb +41 -0
- data/vendor/gems/authentication/test_backup/salted_hash_test.rb +38 -0
- data/vendor/gems/authentication/test_backup/schema.rb +10 -0
- data/vendor/gems/authentication/test_backup/single_token_test.rb +44 -0
- data/vendor/gems/authentication/test_backup/test_helper.rb +8 -0
- metadata +157 -0
@@ -0,0 +1,176 @@
|
|
1
|
+
# FIXME implement these
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
|
3
|
+
|
4
|
+
class AdminUsersControllerTest < ActionController::TestCase
|
5
|
+
tests Admin::UsersController
|
6
|
+
|
7
|
+
with_common :a_site, :is_superuser
|
8
|
+
|
9
|
+
test "should be an Admin::BaseController" do
|
10
|
+
@controller.should be_kind_of(Admin::BaseController)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "routing" do
|
14
|
+
with_options :path_prefix => '/admin/sites/1/', :site_id => "1" do |r|
|
15
|
+
r.it_maps :get, "users", :action => 'index'
|
16
|
+
r.it_maps :get, "users/1", :action => 'show', :id => '1'
|
17
|
+
r.it_maps :get, "users/new", :action => 'new'
|
18
|
+
r.it_maps :post, "users", :action => 'create'
|
19
|
+
r.it_maps :get, "users/1/edit", :action => 'edit', :id => '1'
|
20
|
+
r.it_maps :put, "users/1", :action => 'update', :id => '1'
|
21
|
+
r.it_maps :delete, "users/1", :action => 'destroy', :id => '1'
|
22
|
+
end
|
23
|
+
|
24
|
+
with_options :path_prefix => '/admin/' do |r|
|
25
|
+
r.it_maps :get, "users", :action => 'index'
|
26
|
+
r.it_maps :get, "users/1", :action => 'show', :id => '1'
|
27
|
+
r.it_maps :get, "users/new", :action => 'new'
|
28
|
+
r.it_maps :post, "users", :action => 'create'
|
29
|
+
r.it_maps :get, "users/1/edit", :action => 'edit', :id => '1'
|
30
|
+
r.it_maps :put, "users/1", :action => 'update', :id => '1'
|
31
|
+
r.it_maps :delete, "users/1", :action => 'destroy', :id => '1'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "GET to :index, with a site" do
|
36
|
+
action { get :index, default_params }
|
37
|
+
|
38
|
+
it_guards_permissions :show, :user do
|
39
|
+
it_assigns :users
|
40
|
+
it_renders_template :index
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "GET to :index, without a site" do
|
45
|
+
action { get :index }
|
46
|
+
|
47
|
+
# FIXME this currently authorizes access in a hardcoded fashion to only :superusers
|
48
|
+
# see Admin::UsersController#authorize_access
|
49
|
+
|
50
|
+
# it_guards_permissions :show, :user do
|
51
|
+
it_assigns :users
|
52
|
+
it_renders_template :index
|
53
|
+
# end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "GET to :show" do
|
57
|
+
action { get :show, user_params }
|
58
|
+
|
59
|
+
it_guards_permissions :show, :user do
|
60
|
+
it_assigns :user
|
61
|
+
it_renders_template :show
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "GET to :new" do
|
66
|
+
action { get :new, default_params }
|
67
|
+
|
68
|
+
it_guards_permissions :create, :user do
|
69
|
+
it_assigns :user => User
|
70
|
+
it_renders_template :new
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "POST to :create" do
|
75
|
+
action { post :create, valid_user_params }
|
76
|
+
|
77
|
+
it_guards_permissions :create, :user do
|
78
|
+
it_assigns :user => User
|
79
|
+
it_triggers_event :user_created
|
80
|
+
it_assigns_flash_cookie :notice => :not_nil
|
81
|
+
it_redirects_to { admin_site_user_path(@site, User.last) }
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe "POST to :create, with invalid params" do
|
86
|
+
action { post :create, invalid_user_params }
|
87
|
+
|
88
|
+
it_guards_permissions :create, :user do
|
89
|
+
it_assigns :user => User
|
90
|
+
it_does_not_trigger_any_event
|
91
|
+
it_assigns_flash_cookie :error => :not_nil
|
92
|
+
it_renders_template 'new'
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe "GET to :edit" do
|
97
|
+
action { get :edit, user_params }
|
98
|
+
|
99
|
+
it_guards_permissions :update, :user do
|
100
|
+
it_assigns :user
|
101
|
+
it_renders_template :edit
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
describe "PUT to :update" do
|
106
|
+
action { put :update, valid_user_params.merge(:id => @user.id) }
|
107
|
+
|
108
|
+
it_guards_permissions :update, :user do
|
109
|
+
it_assigns :user
|
110
|
+
it_triggers_event :user_updated
|
111
|
+
it_assigns_flash_cookie :notice => :not_nil
|
112
|
+
it_redirects_to { admin_site_user_path(@site, @user) }
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
describe "PUT to :update, with invalid params" do
|
117
|
+
action { put :update, invalid_user_params.merge(:id => @user.id) }
|
118
|
+
|
119
|
+
it_guards_permissions :update, :user do
|
120
|
+
it_assigns :user
|
121
|
+
it_does_not_trigger_any_event
|
122
|
+
it_assigns_flash_cookie :error => :not_nil
|
123
|
+
it_renders_template 'edit'
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
describe "DELETE to :destroy" do
|
128
|
+
action { delete :destroy, user_params }
|
129
|
+
|
130
|
+
it_guards_permissions :destroy, :user do
|
131
|
+
it_assigns :user
|
132
|
+
it_assigns_flash_cookie :notice => :not_nil
|
133
|
+
it_triggers_event :user_deleted
|
134
|
+
it_redirects_to { admin_site_users_path(@site) }
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
# FIXME implement tests for membership removing and RBAC system (integration or functional tests?)
|
139
|
+
# describe "given valid user params (removing the user's site membership)" do
|
140
|
+
# before :each do
|
141
|
+
# @user.stub!(:is_site_member?).and_return false
|
142
|
+
# end
|
143
|
+
# it_redirects_to { @collection_path }
|
144
|
+
# it_triggers_event :user_updated
|
145
|
+
# end
|
146
|
+
|
147
|
+
# FIXME: how can destroy fail?
|
148
|
+
# describe "when destroy fails" do
|
149
|
+
# before :each do @user.stub!(:destroy).and_return false end
|
150
|
+
# it_renders_template :edit
|
151
|
+
# it_assigns_flash_cookie :error => :not_nil
|
152
|
+
# it_does_not_trigger_any_event
|
153
|
+
# end
|
154
|
+
|
155
|
+
# FIXME implement these:
|
156
|
+
# it "disallows a non-superuser to add a superuser role"
|
157
|
+
# it "disallows a non-admin to change any roles"
|
158
|
+
# it "disallows a site-admin to directly add any memberships"
|
159
|
+
# it "disallows a non-superuser to view another user's profile outside of a site scope"
|
160
|
+
|
161
|
+
def default_params
|
162
|
+
{ :site_id => @site.id }
|
163
|
+
end
|
164
|
+
|
165
|
+
def user_params
|
166
|
+
default_params.merge(:id => @user.id)
|
167
|
+
end
|
168
|
+
|
169
|
+
def valid_user_params
|
170
|
+
default_params.merge(:user => { :first_name => 'John', :password => 'password', :email => 'John@test.org' })
|
171
|
+
end
|
172
|
+
|
173
|
+
def invalid_user_params
|
174
|
+
default_params.merge(:user => { :first_name => 'John', :password => 'password', :email => '' })
|
175
|
+
end
|
176
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
|
2
|
+
|
3
|
+
class PasswordControllerTest < ActionController::TestCase
|
4
|
+
with_common :a_site, :a_user
|
5
|
+
|
6
|
+
test "is an BaseController" do
|
7
|
+
@controller.should be_kind_of(BaseController)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "GET to :new" do
|
11
|
+
action { get :new }
|
12
|
+
|
13
|
+
it_assigns :site
|
14
|
+
it_renders :template, :new do
|
15
|
+
has_form_posting_to password_path do
|
16
|
+
has_tag 'input[name=?]', 'user[email]'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "POST to :create" do
|
22
|
+
action { post :create, @params }
|
23
|
+
|
24
|
+
with "an email adress that belongs to a user" do
|
25
|
+
before { @params = { :user => { :email => @user.email } } }
|
26
|
+
|
27
|
+
it_triggers_event :user_password_reset_requested
|
28
|
+
it_assigns_flash_cookie :notice => :not_nil
|
29
|
+
it_redirects_to { edit_password_url }
|
30
|
+
end
|
31
|
+
|
32
|
+
with "an email adress that does not belong to a user" do
|
33
|
+
before { @params = { :user => { :email => 'none' } } }
|
34
|
+
|
35
|
+
it_does_not_trigger_any_event
|
36
|
+
it_assigns_flash_cookie :notice => :not_nil # feature, not a bug!
|
37
|
+
it_renders_template :new
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "GET to :edit" do
|
42
|
+
action { get :edit, @params }
|
43
|
+
|
44
|
+
with "the user is logged in (via cookie or token)" do
|
45
|
+
before do
|
46
|
+
stub(@controller).current_user.returns(@user)
|
47
|
+
end
|
48
|
+
|
49
|
+
it_renders_template :edit do
|
50
|
+
has_tag 'input[name=?][type=password]', 'user[password]'
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
with "the user is not logged in (missing or invalid token)" do
|
55
|
+
it_renders_template :edit do
|
56
|
+
has_tag 'input[name=?][type=text]', 'token'
|
57
|
+
has_tag 'input[name=?][type=password]', 'user[password]'
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "PUT to :update" do
|
63
|
+
action { put :update, @params }
|
64
|
+
|
65
|
+
with "the user is logged in" do
|
66
|
+
before { stub(@controller).current_user.returns(@user) }
|
67
|
+
|
68
|
+
with "valid password parameters" do
|
69
|
+
before { @params = { :user => { :password => 'new password' } } }
|
70
|
+
|
71
|
+
it_triggers_event :user_password_updated
|
72
|
+
it_assigns_flash_cookie :notice => :not_nil
|
73
|
+
it_redirects_to { root_url }
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "given an invalid email address" do
|
77
|
+
before { @params = { :user => { :password => nil } } }
|
78
|
+
|
79
|
+
it_does_not_trigger_any_event
|
80
|
+
it_assigns_flash_cookie :error => :not_nil
|
81
|
+
it_renders_template :edit
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
with "the user is not logged in" do
|
86
|
+
before { stub(@controller).current_user.returns(nil) }
|
87
|
+
|
88
|
+
it_does_not_trigger_any_event
|
89
|
+
it_assigns_flash_cookie :error => :not_nil
|
90
|
+
it_renders_template :edit do
|
91
|
+
has_tag 'input[name=?][type=?]', 'token', 'text'
|
92
|
+
has_tag 'input[name=?][type=?]', 'user[password]', 'password'
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
# FIXME ... implement
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
|
2
|
+
|
3
|
+
class UserControllerTest < ActionController::TestCase
|
4
|
+
with_common :a_site, :a_user
|
5
|
+
|
6
|
+
view :form do
|
7
|
+
has_tag 'input[name=?]', 'user[first_name]'
|
8
|
+
has_tag 'input[name=?]', 'user[email]'
|
9
|
+
has_tag 'input[name=?]', 'user[password]'
|
10
|
+
end
|
11
|
+
|
12
|
+
test "is an BaseController" do
|
13
|
+
@controller.should be_kind_of(BaseController)
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "GET to :new" do
|
17
|
+
action { get :new }
|
18
|
+
|
19
|
+
it_assigns :site
|
20
|
+
it_renders :template, :new do
|
21
|
+
has_form_posting_to user_path do
|
22
|
+
shows :form
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "POST to :create" do
|
28
|
+
action { post :create, @params }
|
29
|
+
it_assigns :user => :not_nil
|
30
|
+
|
31
|
+
with :valid_user_params do
|
32
|
+
it_saves :user
|
33
|
+
it_triggers_event :user_registered
|
34
|
+
it_triggers_event :user_created
|
35
|
+
it_redirects_to { user_verification_sent_url }
|
36
|
+
|
37
|
+
it "makes the new user a member of the current site" do
|
38
|
+
@site.users.should include(assigns(:user))
|
39
|
+
end
|
40
|
+
|
41
|
+
expect "sends a validation email to the user" do
|
42
|
+
# FIXME can't get this to behave ...
|
43
|
+
# mock(UserMailer).deliver_signup_verification_email(anything, anything)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
with :invalid_user_params do
|
48
|
+
it_does_not_save :user
|
49
|
+
it_renders :template, :new
|
50
|
+
it_assigns_flash_cookie :error => :not_nil
|
51
|
+
it_does_not_trigger_any_event
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "GET to :verification_sent" do
|
56
|
+
action { get :verification_sent }
|
57
|
+
|
58
|
+
it_renders :template, :verification_sent
|
59
|
+
end
|
60
|
+
|
61
|
+
describe "GET to :verify" do
|
62
|
+
action { get :verify }
|
63
|
+
|
64
|
+
with "the user has been logged in from params[:token]" do
|
65
|
+
before { stub(@controller).current_user.returns(@user) }
|
66
|
+
|
67
|
+
with "the user can be verified" do
|
68
|
+
before { @user.update_attributes!(:verified_at => nil) }
|
69
|
+
|
70
|
+
it_triggers_event :user_verified
|
71
|
+
it_assigns_flash_cookie :notice => :not_nil
|
72
|
+
it_redirects_to Registry.get(:redirect, :verify)
|
73
|
+
end
|
74
|
+
|
75
|
+
with "the user can not be verified" do
|
76
|
+
before { @user.update_attributes!(:verified_at => Time.now) }
|
77
|
+
|
78
|
+
it_does_not_trigger_any_event
|
79
|
+
it_assigns_flash_cookie :error => :not_nil
|
80
|
+
it_redirects_to Registry.get(:redirect, :verify)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe "DELETE to :destroy" do
|
86
|
+
action { delete :destroy }
|
87
|
+
|
88
|
+
before { stub(@controller).current_user.returns(@user) }
|
89
|
+
|
90
|
+
it_destroys :user
|
91
|
+
it_redirects_to { '/' }
|
92
|
+
it_assigns_flash_cookie :notice => :not_nil
|
93
|
+
it_triggers_event :user_deleted
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper' ))
|
2
|
+
|
3
|
+
module IntegrationTests
|
4
|
+
class AnonymousLoginTest < ActionController::IntegrationTest
|
5
|
+
def setup
|
6
|
+
super
|
7
|
+
@site = use_site! 'site with pages'
|
8
|
+
@site.update_attributes! :permissions => { 'create comment' => 'anonymous' }
|
9
|
+
end
|
10
|
+
|
11
|
+
test "After posting a comment an anonymous is recognized by the system (aka anonymous login)" do
|
12
|
+
post_a_section_comment_as_anonymous
|
13
|
+
check_logged_in_as_anonymous
|
14
|
+
visit '/'
|
15
|
+
check_logged_in_as_anonymous
|
16
|
+
end
|
17
|
+
|
18
|
+
def post_a_section_comment_as_anonymous
|
19
|
+
visit '/articles/a-page-article'
|
20
|
+
fill_in "user_name", :with => "John Doe"
|
21
|
+
fill_in "user_email", :with => "john@example.com"
|
22
|
+
fill_in "comment_body", :with => "What a nice article!"
|
23
|
+
click_button "Submit comment"
|
24
|
+
end
|
25
|
+
|
26
|
+
def check_logged_in_as_anonymous
|
27
|
+
# the user is logged in as an anonymous user
|
28
|
+
current_user.should_not be_nil
|
29
|
+
current_user.anonymous?.should be_true
|
30
|
+
|
31
|
+
# a cookie containing the user id and indicating the anonymous login was set
|
32
|
+
cookies['aid'].should == current_user.id.to_s
|
33
|
+
end
|
34
|
+
|
35
|
+
def current_user
|
36
|
+
controller.current_user
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper' ))
|
2
|
+
|
3
|
+
module IntegrationTests
|
4
|
+
class EditUserTest < ActionController::IntegrationTest
|
5
|
+
def setup
|
6
|
+
super
|
7
|
+
@site = use_site! 'site with pages'
|
8
|
+
end
|
9
|
+
|
10
|
+
test "setting all global roles for a user with no global role on site, yet" do
|
11
|
+
login_as_superuser
|
12
|
+
visit_edit_user_form
|
13
|
+
|
14
|
+
assert_select "input[name=?][checked=?]", "user[roles_attributes][0][selected]", "checked", :count => 0
|
15
|
+
assert_select "input[name=?][checked=?]", "user[roles_attributes][1][selected]", "checked", :count => 0
|
16
|
+
assert_select "input[name=?][checked=?]", "user[roles_attributes][2][selected]", "checked", :count => 0
|
17
|
+
assert_select "input[name=?][checked=?]", "user[roles_attributes][3][selected]", "checked", :count => 0
|
18
|
+
assert_select "input[name=?][checked=?]", "user[roles_attributes][4][selected]", "checked", :count => 0
|
19
|
+
|
20
|
+
check 'user[roles_attributes][0][selected]'
|
21
|
+
check 'user[roles_attributes][1][selected]'
|
22
|
+
check 'user[roles_attributes][2][selected]'
|
23
|
+
check 'user[roles_attributes][3][selected]'
|
24
|
+
check 'user[roles_attributes][4][selected]'
|
25
|
+
|
26
|
+
click_button 'commit'
|
27
|
+
|
28
|
+
visit_edit_user_form
|
29
|
+
|
30
|
+
assert_select "input[name=?][checked=?]", "user[roles_attributes][0][selected]", "checked"
|
31
|
+
assert_select "input[name=?][checked=?]", "user[roles_attributes][1][selected]", "checked"
|
32
|
+
assert_select "input[name=?][checked=?]", "user[roles_attributes][2][selected]", "checked"
|
33
|
+
assert_select "input[name=?][checked=?]", "user[roles_attributes][3][selected]", "checked"
|
34
|
+
assert_select "input[name=?][checked=?]", "user[roles_attributes][4][selected]", "checked"
|
35
|
+
end
|
36
|
+
|
37
|
+
def visit_edit_user_form
|
38
|
+
moderator = User.find_by_first_name('a moderator')
|
39
|
+
visit "/admin/sites/#{@site.id}/users/#{moderator.id}/edit"
|
40
|
+
renders_template "admin/users/edit"
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|