class Clearance::Testing::Matchers::DenyAccessMatcher

@api private

Attributes

failure_message[R]
failure_message_when_negated[R]

Public Class Methods

new(context, opts) click to toggle source
# File lib/clearance/testing/deny_access_matcher.rb, line 41
def initialize(context, opts)
  @context = context
  @flash = opts[:flash]
  @url = opts[:redirect]

  @failure_message = ''
  @failure_message_when_negated = ''
end

Public Instance Methods

description() click to toggle source
# File lib/clearance/testing/deny_access_matcher.rb, line 50
def description
  'deny access'
end
failure_message_for_should() click to toggle source
# File lib/clearance/testing/deny_access_matcher.rb, line 59
def failure_message_for_should
  failure_message
end
failure_message_for_should_not() click to toggle source
# File lib/clearance/testing/deny_access_matcher.rb, line 63
def failure_message_for_should_not
  failure_message_when_negated
end
matches?(controller) click to toggle source
# File lib/clearance/testing/deny_access_matcher.rb, line 54
def matches?(controller)
  @controller = controller
  sets_the_flash? && redirects_to_url?
end

Private Instance Methods

clearance_session() click to toggle source
# File lib/clearance/testing/deny_access_matcher.rb, line 77
def clearance_session
  @controller.request.env[:clearance]
end
denied_access_url() click to toggle source
# File lib/clearance/testing/deny_access_matcher.rb, line 69
def denied_access_url
  if clearance_session.signed_in?
    Clearance.configuration.redirect_url
  else
    @controller.sign_in_url
  end
end
flash_alert_value() click to toggle source
# File lib/clearance/testing/deny_access_matcher.rb, line 81
def flash_alert_value
  @controller.flash[:alert]
end
redirects_to_url?() click to toggle source
# File lib/clearance/testing/deny_access_matcher.rb, line 85
def redirects_to_url?
  @url ||= denied_access_url

  begin
    @context.send(:assert_redirected_to, @url)
    @failure_message_when_negated <<
      "Didn't expect to redirect to #{@url}."
    true
  rescue ::Minitest::Assertion, ::Test::Unit::AssertionFailedError
    @failure_message << "Expected to redirect to #{@url} but did not."
    false
  end
end
sets_the_flash?() click to toggle source
# File lib/clearance/testing/deny_access_matcher.rb, line 99
def sets_the_flash?
  if @flash.blank?
    true
  elsif flash_alert_value == @flash
    @failure_message_when_negated <<
      "Didn't expect to set the flash to #{@flash}"
    true
  else
    @failure_message << "Expected the flash to be set to #{@flash} "\
      "but was #{flash_alert_value}"
    false
  end
end