C0 code coverage information

Generated on Thu Jun 07 11:34:00 -0400 2007 with rcov 0.8.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
lib/authenticated_test_helper.rb 113 83
56.6% 
41.0% 
  1 module AuthenticatedTestHelper
  2   # Sets the current user in the session from the user fixtures.
  3   def login_as(user)
  4     @request.session[:user] = user ? users(user).id : nil
  5   end
  6 
  7   def content_type(type)
  8     @request.env['Content-Type'] = type
  9   end
 10 
 11   def accept(accept)
 12     @request.env["HTTP_ACCEPT"] = accept
 13   end
 14 
 15   def authorize_as(user)
 16     if user
 17       @request.env["HTTP_AUTHORIZATION"] = "Basic #{Base64.encode64("#{users(user).login}:test")}"
 18       accept       'application/xml'
 19       content_type 'application/xml'
 20     else
 21       @request.env["HTTP_AUTHORIZATION"] = nil
 22       accept       nil
 23       content_type nil
 24     end
 25   end
 26 
 27   # http://project.ioni.st/post/217#post-217
 28   #
 29   #  def test_new_publication
 30   #    assert_difference(Publication, :count) do
 31   #      post :create, :publication => {...}
 32   #      # ...
 33   #    end
 34   #  end
 35   # 
 36   def assert_difference(object, method = nil, difference = 1)
 37     initial_value = object.send(method)
 38     yield
 39     assert_equal initial_value + difference, object.send(method), "#{object}##{method}"
 40   end
 41 
 42   def assert_no_difference(object, method, &block)
 43     assert_difference object, method, 0, &block
 44   end
 45 
 46   # Assert the block redirects to the login
 47   # 
 48   #   assert_requires_login(:bob) { |c| c.get :edit, :id => 1 }
 49   #
 50   def assert_requires_login(login = nil)
 51     yield HttpLoginProxy.new(self, login)
 52   end
 53 
 54   def assert_http_authentication_required(login = nil)
 55     yield XmlLoginProxy.new(self, login)
 56   end
 57 
 58   def reset!(*instance_vars)
 59     instance_vars = [:controller, :request, :response] unless instance_vars.any?
 60     instance_vars.collect! { |v| "@#{v}".to_sym }
 61     instance_vars.each do |var|
 62       instance_variable_set(var, instance_variable_get(var).class.new)
 63     end
 64   end
 65 end
 66 
 67 class BaseLoginProxy
 68   attr_reader :controller
 69   attr_reader :options
 70   def initialize(controller, login)
 71     @controller = controller
 72     @login      = login
 73   end
 74 
 75   private
 76     def authenticated
 77       raise NotImplementedError
 78     end
 79     
 80     def check
 81       raise NotImplementedError
 82     end
 83     
 84     def method_missing(method, *args)
 85       @controller.reset!
 86       authenticate
 87       @controller.send(method, *args)
 88       check
 89     end
 90 end
 91 
 92 class HttpLoginProxy < BaseLoginProxy
 93   protected
 94     def authenticate
 95       @controller.login_as @login if @login
 96     end
 97     
 98     def check
 99       @controller.assert_redirected_to :controller => 'account', :action => 'login'
100     end
101 end
102 
103 class XmlLoginProxy < BaseLoginProxy
104   protected
105     def authenticate
106       @controller.accept 'application/xml'
107       @controller.authorize_as @login if @login
108     end
109     
110     def check
111       @controller.assert_response 401
112     end
113 end

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

Valid XHTML 1.0! Valid CSS!