##// END OF EJS Templates
Refactor: split UsersController#add into #add and #create...
Eric Davis -
r4101:3a3263102a7c
parent child
Show More
@@ -72,22 +72,26 class UsersController < ApplicationController
72 end
72 end
73
73
74 def add
74 def add
75 if request.get?
75 @user = User.new(:language => Setting.default_language)
76 @user = User.new(:language => Setting.default_language)
76 @auth_sources = AuthSource.find(:all)
77 end
78
79 verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed }
80 def create
81 @user = User.new(params[:user])
82 @user.admin = params[:user][:admin] || false
83 @user.login = params[:user][:login]
84 @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless @user.auth_source_id
85 if @user.save
86 Mailer.deliver_account_information(@user, params[:password]) if params[:send_information]
87 flash[:notice] = l(:notice_successful_create)
88 redirect_to(params[:continue] ? {:controller => 'users', :action => 'add'} :
89 {:controller => 'users', :action => 'edit', :id => @user})
90 return
77 else
91 else
78 @user = User.new(params[:user])
92 @auth_sources = AuthSource.find(:all)
79 @user.admin = params[:user][:admin] || false
93 render :action => 'add'
80 @user.login = params[:user][:login]
81 @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless @user.auth_source_id
82 if @user.save
83 Mailer.deliver_account_information(@user, params[:password]) if params[:send_information]
84 flash[:notice] = l(:notice_successful_create)
85 redirect_to(params[:continue] ? {:controller => 'users', :action => 'add'} :
86 {:controller => 'users', :action => 'edit', :id => @user})
87 return
88 end
89 end
94 end
90 @auth_sources = AuthSource.find(:all)
91 end
95 end
92
96
93 def edit
97 def edit
@@ -1,6 +1,6
1 <h2><%= link_to l(:label_user_plural), :controller => 'users', :action => 'index' %> &#187; <%=l(:label_user_new)%></h2>
1 <h2><%= link_to l(:label_user_plural), :controller => 'users', :action => 'index' %> &#187; <%=l(:label_user_new)%></h2>
2
2
3 <% labelled_tabular_form_for :user, @user, :url => { :action => "add" }, :html => { :class => nil } do |f| %>
3 <% labelled_tabular_form_for :user, @user, :url => { :action => "create" }, :html => { :class => nil } do |f| %>
4 <%= render :partial => 'form', :locals => { :f => f } %>
4 <%= render :partial => 'form', :locals => { :f => f } %>
5 <p><label><%= check_box_tag 'send_information', 1, true %> <%= l(:label_send_information) %></label></p>
5 <p><label><%= check_box_tag 'send_information', 1, true %> <%= l(:label_send_information) %></label></p>
6 <p>
6 <p>
@@ -148,7 +148,7 ActionController::Routing::Routes.draw do |map|
148 end
148 end
149 users.with_options :conditions => {:method => :post} do |user_actions|
149 users.with_options :conditions => {:method => :post} do |user_actions|
150 user_actions.connect 'users', :action => 'add'
150 user_actions.connect 'users', :action => 'add'
151 user_actions.connect 'users/new', :action => 'add'
151 user_actions.connect 'users/new', :action => 'create'
152 user_actions.connect 'users/:id/edit', :action => 'edit'
152 user_actions.connect 'users/:id/edit', :action => 'edit'
153 user_actions.connect 'users/:id/memberships', :action => 'edit_membership'
153 user_actions.connect 'users/:id/memberships', :action => 'edit_membership'
154 user_actions.connect 'users/:id/memberships/:membership_id', :action => 'edit_membership'
154 user_actions.connect 'users/:id/memberships/:membership_id', :action => 'edit_membership'
@@ -24,7 +24,7 class UsersController; def rescue_action(e) raise e end; end
24 class UsersControllerTest < ActionController::TestCase
24 class UsersControllerTest < ActionController::TestCase
25 include Redmine::I18n
25 include Redmine::I18n
26
26
27 fixtures :users, :projects, :members, :member_roles, :roles
27 fixtures :users, :projects, :members, :member_roles, :roles, :auth_sources
28
28
29 def setup
29 def setup
30 @controller = UsersController.new
30 @controller = UsersController.new
@@ -107,6 +107,46 class UsersControllerTest < ActionController::TestCase
107 assert project_ids.include?(2) #private project admin can see
107 assert project_ids.include?(2) #private project admin can see
108 end
108 end
109
109
110 context "GET :add" do
111 setup do
112 get :add
113 end
114
115 should_assign_to :user
116 should_respond_with :success
117 should_render_template :add
118 end
119
120 context "POST :create" do
121 context "when successful" do
122 setup do
123 post :create, :user => {
124 :firstname => 'John',
125 :lastname => 'Doe',
126 :login => 'jdoe',
127 :password => 'test',
128 :password_confirmation => 'test',
129 :mail => 'jdoe@gmail.com'
130 }
131 end
132
133 should_assign_to :user
134 should_respond_with :redirect
135 should_redirect_to('user edit') { {:controller => 'users', :action => 'edit', :id => User.find_by_login('jdoe')}}
136 end
137
138 context "when unsuccessful" do
139 setup do
140 post :create, :user => {}
141 end
142
143 should_assign_to :user
144 should_respond_with :success
145 should_render_template :add
146 end
147
148 end
149
110 def test_edit
150 def test_edit
111 ActionMailer::Base.deliveries.clear
151 ActionMailer::Base.deliveries.clear
112 post :edit, :id => 2, :user => {:firstname => 'Changed'}
152 post :edit, :id => 2, :user => {:firstname => 'Changed'}
@@ -25,7 +25,7 class AdminTest < ActionController::IntegrationTest
25 get "/users/add"
25 get "/users/add"
26 assert_response :success
26 assert_response :success
27 assert_template "users/add"
27 assert_template "users/add"
28 post "/users/add", :user => { :login => "psmith", :firstname => "Paul", :lastname => "Smith", :mail => "psmith@somenet.foo", :language => "en" }, :password => "psmith09", :password_confirmation => "psmith09"
28 post "/users/create", :user => { :login => "psmith", :firstname => "Paul", :lastname => "Smith", :mail => "psmith@somenet.foo", :language => "en" }, :password => "psmith09", :password_confirmation => "psmith09"
29
29
30 user = User.find_by_login("psmith")
30 user = User.find_by_login("psmith")
31 assert_kind_of User, user
31 assert_kind_of User, user
@@ -42,7 +42,7 class AdminTest < ActionController::IntegrationTest
42 end
42 end
43
43
44 test "Add a user as an anonymous user should fail" do
44 test "Add a user as an anonymous user should fail" do
45 post '/users/add', :user => { :login => 'psmith', :firstname => 'Paul'}, :password => "psmith09", :password_confirmation => "psmith09"
45 post '/users/create', :user => { :login => 'psmith', :firstname => 'Paul'}, :password => "psmith09", :password_confirmation => "psmith09"
46 assert_response :redirect
46 assert_response :redirect
47 assert_redirected_to "/login?back_url=http%3A%2F%2Fwww.example.com%2Fusers%2Fnew"
47 assert_redirected_to "/login?back_url=http%3A%2F%2Fwww.example.com%2Fusers%2Fnew"
48 end
48 end
@@ -250,7 +250,7 class RoutingTest < ActionController::IntegrationTest
250 should_route :get, "/users/444/edit", :controller => 'users', :action => 'edit', :id => '444'
250 should_route :get, "/users/444/edit", :controller => 'users', :action => 'edit', :id => '444'
251 should_route :get, "/users/222/edit/membership", :controller => 'users', :action => 'edit', :id => '222', :tab => 'membership'
251 should_route :get, "/users/222/edit/membership", :controller => 'users', :action => 'edit', :id => '222', :tab => 'membership'
252
252
253 should_route :post, "/users/new", :controller => 'users', :action => 'add'
253 should_route :post, "/users/new", :controller => 'users', :action => 'create'
254 should_route :post, "/users/444/edit", :controller => 'users', :action => 'edit', :id => '444'
254 should_route :post, "/users/444/edit", :controller => 'users', :action => 'edit', :id => '444'
255 should_route :post, "/users/123/memberships", :controller => 'users', :action => 'edit_membership', :id => '123'
255 should_route :post, "/users/123/memberships", :controller => 'users', :action => 'edit_membership', :id => '123'
256 should_route :post, "/users/123/memberships/55", :controller => 'users', :action => 'edit_membership', :id => '123', :membership_id => '55'
256 should_route :post, "/users/123/memberships/55", :controller => 'users', :action => 'edit_membership', :id => '123', :membership_id => '55'
General Comments 0
You need to be logged in to leave comments. Login now