end
def add
- if request.get?
- @user = User.new(:language => Setting.default_language)
+ @user = User.new(:language => Setting.default_language)
+ @auth_sources = AuthSource.find(:all)
+ end
+
+ verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed }
+ def create
+ @user = User.new(params[:user])
+ @user.admin = params[:user][:admin] || false
+ @user.login = params[:user][:login]
+ @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless @user.auth_source_id
+ if @user.save
+ Mailer.deliver_account_information(@user, params[:password]) if params[:send_information]
+ flash[:notice] = l(:notice_successful_create)
+ redirect_to(params[:continue] ? {:controller => 'users', :action => 'add'} :
+ {:controller => 'users', :action => 'edit', :id => @user})
+ return
else
- @user = User.new(params[:user])
- @user.admin = params[:user][:admin] || false
- @user.login = params[:user][:login]
- @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless @user.auth_source_id
- if @user.save
- Mailer.deliver_account_information(@user, params[:password]) if params[:send_information]
- flash[:notice] = l(:notice_successful_create)
- redirect_to(params[:continue] ? {:controller => 'users', :action => 'add'} :
- {:controller => 'users', :action => 'edit', :id => @user})
- return
- end
+ @auth_sources = AuthSource.find(:all)
+ render :action => 'add'
end
- @auth_sources = AuthSource.find(:all)
end
def edit
<h2><%= link_to l(:label_user_plural), :controller => 'users', :action => 'index' %> » <%=l(:label_user_new)%></h2>
-<% labelled_tabular_form_for :user, @user, :url => { :action => "add" }, :html => { :class => nil } do |f| %>
+<% labelled_tabular_form_for :user, @user, :url => { :action => "create" }, :html => { :class => nil } do |f| %>
<%= render :partial => 'form', :locals => { :f => f } %>
<p><label><%= check_box_tag 'send_information', 1, true %> <%= l(:label_send_information) %></label></p>
<p>
end
users.with_options :conditions => {:method => :post} do |user_actions|
user_actions.connect 'users', :action => 'add'
- user_actions.connect 'users/new', :action => 'add'
+ user_actions.connect 'users/new', :action => 'create'
user_actions.connect 'users/:id/edit', :action => 'edit'
user_actions.connect 'users/:id/memberships', :action => 'edit_membership'
user_actions.connect 'users/:id/memberships/:membership_id', :action => 'edit_membership'
class UsersControllerTest < ActionController::TestCase
include Redmine::I18n
- fixtures :users, :projects, :members, :member_roles, :roles
+ fixtures :users, :projects, :members, :member_roles, :roles, :auth_sources
def setup
@controller = UsersController.new
assert project_ids.include?(2) #private project admin can see
end
+ context "GET :add" do
+ setup do
+ get :add
+ end
+
+ should_assign_to :user
+ should_respond_with :success
+ should_render_template :add
+ end
+
+ context "POST :create" do
+ context "when successful" do
+ setup do
+ post :create, :user => {
+ :firstname => 'John',
+ :lastname => 'Doe',
+ :login => 'jdoe',
+ :password => 'test',
+ :password_confirmation => 'test',
+ :mail => 'jdoe@gmail.com'
+ }
+ end
+
+ should_assign_to :user
+ should_respond_with :redirect
+ should_redirect_to('user edit') { {:controller => 'users', :action => 'edit', :id => User.find_by_login('jdoe')}}
+ end
+
+ context "when unsuccessful" do
+ setup do
+ post :create, :user => {}
+ end
+
+ should_assign_to :user
+ should_respond_with :success
+ should_render_template :add
+ end
+
+ end
+
def test_edit
ActionMailer::Base.deliveries.clear
post :edit, :id => 2, :user => {:firstname => 'Changed'}
get "/users/add"
assert_response :success
assert_template "users/add"
- post "/users/add", :user => { :login => "psmith", :firstname => "Paul", :lastname => "Smith", :mail => "psmith@somenet.foo", :language => "en" }, :password => "psmith09", :password_confirmation => "psmith09"
+ post "/users/create", :user => { :login => "psmith", :firstname => "Paul", :lastname => "Smith", :mail => "psmith@somenet.foo", :language => "en" }, :password => "psmith09", :password_confirmation => "psmith09"
user = User.find_by_login("psmith")
assert_kind_of User, user
end
test "Add a user as an anonymous user should fail" do
- post '/users/add', :user => { :login => 'psmith', :firstname => 'Paul'}, :password => "psmith09", :password_confirmation => "psmith09"
+ post '/users/create', :user => { :login => 'psmith', :firstname => 'Paul'}, :password => "psmith09", :password_confirmation => "psmith09"
assert_response :redirect
assert_redirected_to "/login?back_url=http%3A%2F%2Fwww.example.com%2Fusers%2Fnew"
end
should_route :get, "/users/444/edit", :controller => 'users', :action => 'edit', :id => '444'
should_route :get, "/users/222/edit/membership", :controller => 'users', :action => 'edit', :id => '222', :tab => 'membership'
- should_route :post, "/users/new", :controller => 'users', :action => 'add'
+ should_route :post, "/users/new", :controller => 'users', :action => 'create'
should_route :post, "/users/444/edit", :controller => 'users', :action => 'edit', :id => '444'
should_route :post, "/users/123/memberships", :controller => 'users', :action => 'edit_membership', :id => '123'
should_route :post, "/users/123/memberships/55", :controller => 'users', :action => 'edit_membership', :id => '123', :membership_id => '55'