Project

General

Profile

« Previous | Next » 

Revision 802ae177

Added by Amos Benari almost 11 years ago

  • ID 802ae177dc9d35c3fc3889fa34b24e7f32001eb8

fixes #2639 After creating user with empty e-mail it becomes impossible to add it.

View differences:

app/controllers/users_controller.rb
end
def update
admin = params[:user].delete :admin
# Remove keys for restricted variables when the user is editing their own account
if editing_self
for key in params[:user].keys
......
User.current.editing_self = true
end
# Only an admin can update admin attribute of another use
# Only an admin can update admin attribute of another user
# this is required, as the admin field is blacklisted above
if User.current.admin
@user.admin = admin
return process_error unless @user.valid?
end
admin = params[:user].delete :admin
@user.admin = admin if User.current.admin
if @user.update_attributes(params[:user])
@user.roles << Role.find_by_name("Anonymous") unless @user.roles.map(&:name).include? "Anonymous"
test/functional/users_controller_test.rb
test "should create regular user" do
post :create, {
:commit => "Submit",
:user => {
:login => "foo",
:mail => "foo@bar.com",
......
test "should create admin user" do
post :create, {
:commit => "Submit",
:user => {
:login => "foo",
:admin => true,
......
test "should update user" do
user = User.create :login => "foo", :mail => "foo@bar.com", :auth_source => auth_sources(:one)
put :update, { :commit => "Submit", :id => user.id, :user => {:login => "johnsmith"} }, set_session_user
put :update, { :id => user.id, :user => {:login => "johnsmith"} }, set_session_user
mod_user = User.find_by_id(user.id)
assert mod_user.login == "johnsmith"
......
assert user.roles =([roles(:anonymous)])
put :update, { :commit => "Submit", :id => user.id, :user => {:login => "johnsmith"} }, set_session_user
put :update, { :id => user.id, :user => {:login => "johnsmith"} }, set_session_user
mod_user = User.find_by_id(user.id)
assert mod_user.roles =([roles(:anonymous)])
......
user.password = "changeme"
assert user.save
put :update, {:commit => "Submit", :id => user.id,
put :update, {:id => user.id,
:user => {
:login => "johnsmith", :password => "dummy", :password_confirmation => "dummy"
},
......
user.password = "changeme"
assert user.save
put :update, {:commit => "Submit", :id => user.id,
put :update, {:id => user.id,
:user => {
:login => "johnsmith", :password => "dummy", :password_confirmation => "DUMMY"
},
......
user.password = "changeme"
assert user.save
put :update, {:commit => "Submit", :id => user.id,
put :update, {:id => user.id,
:user => { :login => "foobar" },
}, set_session_user
......
test "should modify session when locale is updated" do
User.current = User.admin
put :update, {:commit => "Submit", :id => User.admin.id, :user => { :locale => "cs" } }, set_session_user
put :update, {:id => User.admin.id, :user => { :locale => "cs" } }, set_session_user
assert_redirected_to users_url
assert User.admin.locale == "cs"
put :update, {:commit => "Submit", :id => User.admin.id, :user => { :locale => "" } }, set_session_user
put :update, { :id => User.admin.id, :user => { :locale => "" } }, set_session_user
assert User.admin.locale.nil?
assert session[:locale].nil?
end
......
update_hash = {"user"=>{ "login" => sample_user.login,
"hostgroup_ids" => ["", Hostgroup.find_by_name("root").id.to_s] },
"commit" => "Submit",
"id" => sample_user.id }
put :update, update_hash , set_session_user
......
update_hash = {"user"=>{
"login" => target.login,
"admin" => false},
"commit" => "Submit",
"id" => target.id}
put :update, update_hash, set_session_user.merge(:user => user.id)
......
assert_template :edit
end
test "should be able to create user without mail and update the mail later" do
user = User.create :login => "mailess", :mail=> nil, :auth_source => auth_sources(:one)
user.admin = true
user.save!(:validate => false)
update_hash = {"user"=>{
"login" => user.login,
"mail" => "you@have.mail"},
"id" => user.id}
put :update, update_hash, set_session_user.merge(:user => user.id)
assert !User.find_by_login(user.login).mail.blank?
end
end

Also available in: Unified diff