5 def initialize(example)
11 @response = @example.response
12 @was_redirect = @response.redirect?
13 @was_redirect_to_login = @response.redirect_url_match?("/admin/login")
14 @was_redirect && @was_redirect_to_login
19 "expected to redirect to /admin/login but redirected to #{@response.redirect_url}"
21 "expected to require login but did not redirect"
25 def negative_failure_message
26 "expected not to require login"
30 class ActionRestriction
31 def initialize(options, example)
32 @allow = [options[:allow]].flatten.compact
33 @deny = [options[:deny]].flatten.compact
42 @allow.all? {|u| !denied?(u) } && @deny.all? {|u| denied?(u) }
48 message << "expected to allow user #{user.name} but was denied" if @result[user]
52 message << "expected to deny user #{user.name} but was allowed"
54 message << "expected to redirect user #{user.name} to #{@url} but redirected to #{@urls[user]}"
62 @example.request.session['user_id'] = user.id
64 response = @example.response
65 @urls[user] = response.redirect_url if @url && !response.redirect_url_match?(@url)
66 @result[user] = response.redirect? && (@url.nil? || response.redirect_url_match?(@url))
71 LoginRequirement.new(self)
74 def restrict_access(options)
75 ActionRestriction.new(options, self)