C0 code coverage information

Generated on Fri Aug 25 10:11:28 PDT 2006 with rcov 0.7.0


Code reported as executed by Ruby looks like this...
and this: this line is also marked as covered.
Lines considered as run by rcov, but not reported by Ruby, look like this,
and this: these lines were inferred by rcov (using simple heuristics).
Finally, here's a line marked as not executed.
Name Total lines Lines of code Total coverage Code coverage
app/controllers/users_controller.rb 301 259
20.3% 
11.2% 
  1 class UsersController < ApplicationController
  2     model   :user
  3     layout 'staff'
  4 
  5     #before_filter :check_host # if it's on www send it to cms.....
  6     before_filter :check_admin_role, :only => [:list, :create, :users_awaiting_approval, :approve_user, :deny_user, :undelete]
  7     before_filter :check_current_user_or_admin, :only => [:change_password, :edit, :delete, :restore_deleted]
  8 
  9     def index
 10         list
 11         render :action => 'list'
 12     end
 13 
 14     def login
 15         return if generate_blank
 16         @user = User.new(@params['user'])
 17         if @session['user'] = User.authenticate(@params['user']['username'], @params['user']['password'])
 18             flash['notice'] = l(:user_login_succeeded)
 19             redirect_back_or_default :action => 'welcome'
 20         else
 21             @login = @params['user']['username']
 22             flash.now['message'] = l(:user_login_failed)
 23         end
 24     end
 25 
 26     def list
 27         deleted_parm = 0
 28         if params[:deleted]
 29             deleted_parm = 1
 30             @deleted_users = true
 31         end
 32             
 33         @user_pages, @users = paginate :user, :per_page => 50, :order => "role_id DESC, display_name", :conditions => ["deleted = ?", deleted_parm]
 34     end
 35     
 36     def search
 37         criteria = params[:search][:criteria].strip
 38 
 39         @user_pages, @users = paginate :user, :per_page => 10, :conditions => "(username LIKE N'%#{ criteria }%' OR display_name LIKE N'%#{ criteria }%') AND deleted = 0"
 40         @search_results = true
 41         render :action => 'list'
 42     end
 43 
 44     def logout
 45         reset_session
 46         redirect_to :action => 'login'
 47     end
 48 
 49     def change_password
 50         return if generate_filled_in(params[:user_id] || params[:id])
 51         @params['user'].delete('form')
 52         begin
 53             User.transaction(@user) do
 54                 @user.editor = @session['user']
 55                 @user.change_password(@params['user']['password'], @params['user']['password_confirmation'])
 56                 if @user.save
 57                     UserNotify.deliver_change_password(@user, @params['user']['password'])
 58                     flash.now['notice'] = l(:user_updated_password, "#{@user.email}")
 59                 end
 60             end
 61         rescue
 62             flash.now['message'] = l(:user_change_password_email_error)
 63         end
 64     end
 65 
 66     def forgot_password
 67         # Always redirect if logged in
 68         if user?
 69             flash['message'] = l(:user_forgot_password_logged_in)
 70             redirect_to :action => 'change_password'
 71             return
 72         end
 73 
 74         # Render on :get and render
 75         return if generate_blank
 76 
 77         # Handle the :post
 78         if @params['user']['email'].empty?
 79             flash.now['message'] = l(:user_enter_valid_email_address)
 80         elsif (user = User.find_by_email(@params['user']['email'])).nil?
 81             flash.now['message'] = l(:user_email_address_not_found, "#{@params['user']['email']}")
 82         else
 83             begin
 84                 User.transaction(user) do
 85                     user.editor = @session['user']
 86                     key = user.generate_security_token
 87                     url = url_for(:action => 'change_password') + "?user_id=#{user.id}&key=#{key}"
 88                     UserNotify.deliver_forgot_password(user, url)
 89                     flash['notice'] = l(:user_forgotten_password_emailed, "#{@params['user']['email']}")
 90                     unless user?
 91                         redirect_to :action => 'login'
 92                         return
 93                     end
 94                     redirect_back_or_default :action => 'welcome'
 95                 end
 96             rescue
 97                 flash.now['message'] = l(:user_forgotten_password_email_error, "#{@params['user']['email']}")
 98             end
 99         end
100     end
101 
102     def edit
103         return if generate_filled_in(params[:id])
104         if @params['user']['form']
105             form = @params['user'].delete('form')
106             begin
107                 case form
108                 when "edit"
109                     changeable_fields = nil
110                     if @session['user'].role_id >= UserSystem::USER_ROLE[:god] then
111                         changeable_fields = ['display_name', 'enabled', 'expires', 'expires_at(1i)', 'expires_at(2i)', 'expires_at(3i)', 'role_id']
112                     else
113                         changeable_fields = ['display_name']
114                     end
115 
116                     params = @params['user'].delete_if { |k,v| not changeable_fields.include?(k) }
117                     @user.attributes = params
118                     @user.editor = @session['user']
119                     if @user.save
120                         flash[:notice] = "User updated successfully"
121                         @user.invalidate_user_session
122                     end
123                 when "change_password"
124                     change_password
125                 when "delete"
126                     delete
127                 else
128                     raise "unknown edit action"
129                 end
130             end
131         end
132     end
133 
134     # Will deactivate a user and not show them in any user lists.
135     # Due to the fact that articles can be tied to deleted users,
136     # we will never truly delete a user, only flag them as deleted.
137     def delete
138         @user = User.find(params[:id])
139         begin
140             User.transaction(@user) do
141                 @user.editor = @session['user']
142                 if params[:submit] == "-- Kill Account --"
143                     @user.destroy
144                     redirect_to :action => 'list'
145                 else
146                     if @user.id == @session['user'].id
147                         key = @user.set_delete_after
148                         url = url_for(:action => 'restore_deleted')
149                         url += "?user_id=#{@user.id}&key=#{key}"
150                         @user.save
151                         UserNotify.deliver_pending_delete(@user, url)
152                     else
153                         @user.set_deleted
154                         @user.save
155                         @user.invalidate_user_session
156                     end
157                 end
158             end
159             if @user.id == @session['user'].id
160                 logout
161             else
162                 redirect_to :action => 'list'
163             end
164         rescue
165             flash.now['message'] = l(:user_delete_email_error, "#{@user['email']}")
166             redirect_back_or_default :action => 'welcome'
167         end
168     end
169 
170     def restore_deleted
171         @user = @session['user']
172         @user.editor = @session['user']
173         @user.deleted = 0
174         if not @user.save
175             flash.now['notice'] = l(:user_restore_deleted_error, "#{@user['username']}")
176             redirect_to :action => 'login'
177         else
178             redirect_to :action => 'welcome'
179         end
180     end
181     
182     def undelete
183         @user = User.find(params[:id])
184         @user.deleted = 0
185         @user.editor = @session['user']
186         if @user.save
187             flash[:notice] = "User #{ @user.username } undeleted successfully"
188         else
189             flash[:error] = "Could not undelete user #{ @user.username }"
190         end
191         redirect_to :action => 'list', :deleted => true
192     end
193 
194     def welcome
195       redirect_to :controller => 'articles', :action => 'list'
196     end
197 
198     def not_enabled
199     end
200 
201     def awaiting_approval
202         @user_pages, @users = paginate :user, :per_page => 10,
203         :conditions => "enabled = 0 AND verified = 1 AND deleted = 0", :order=> "display_name"
204     end
205 
206     def approve
207         @user = User.find(params[:id])
208         @user.editor = @session['user']
209         if @user.update_attributes({ :enabled => 1, :role_id => params[:role] })
210             flash['notice'] = "User has been enabled. Notification has been sent to user."
211             UserNotify.deliver_approved(@user)
212             @user.invalidate_user_session
213         else
214             flash['error'] = "Error occured while trying to approve user. Please contact administrator."
215         end
216 
217         awaiting_approval
218         render :action => 'awaiting_approval'
219     end
220 
221     def deny
222         @user = User.find(params[:id])
223         @user.editor = @session['user']
224         @user.destroy
225 
226         flash['notice'] = "User has been denied access. Login resources have been destroyed."
227         awaiting_approval
228         render :action => 'awaiting_approval'
229     end
230 
231     # protected for now.
232     def create
233         signup
234     end
235     
236     # protected for now.
237     def signup
238         return if generate_blank
239         @params['user'].delete('form')
240         @user = User.new(@params['user'])
241         begin
242             User.transaction(@user) do
243                 @user.new_password = true
244                 @user.editor = @session['user']
245                 if @user.save
246                     key = @user.generate_security_token
247                     url = url_for(:action => 'welcome')
248                     url += "?user_id=#{@user.id}&key=#{key}"
249                     begin
250                         UserNotify.deliver_signup(@user, @params['user']['password'], url)
251                     rescue
252                         flash.now['message'] = l(:user_confirmation_email_error)
253                         return
254                     end
255                     flash['notice'] = l(:user_signup_succeeded)
256                     redirect_to :action => 'login'
257                 end
258             end
259         rescue
260             flash.now['message'] = "Error in creating new account: #{$!}"
261         end
262     end
263 
264     protected
265     
266     def check_host
267       if !request.env['HTTP_HOST'].nil? and request.env['HTTP_HOST'] =~ /^www/
268         redirect_to "http://cms.pitchforkmedia.com/"
269       end
270     end
271 
272     def protect?(action)
273         if ['login', 'logout', 'forgot_password'].include?(action)
274             return false
275         else
276             return true
277         end
278     end
279 
280     # Generate a template user for certain actions on get
281     def generate_blank
282         case @request.method
283         when :get
284             @user = User.new
285             render
286             return true
287         end
288         return false
289     end
290 
291     # Generate a template user for certain actions on get
292     def generate_filled_in(user_id)
293         @user = User.find(user_id)
294         case @request.method
295         when :get
296             render
297             return true
298         end
299         return false
300     end
301 end

Generated using the rcov code coverage analysis tool for Ruby version 0.7.0.

Valid XHTML 1.0! Valid CSS!