class Suit::Controllers::Matchers::RequireRoleMatcher

Public Class Methods

new(role, action, verb, role_url, flash_message, context) click to toggle source
# File lib/controllers/matchers/role_matcher.rb, line 21
def initialize(role, action, verb, role_url, flash_message, context)
  @role = role
  @action = action
  @verb = verb
  @role_url = role_url
  @context = context
  @flash_message = flash_message
end

Public Instance Methods

description() click to toggle source
# File lib/controllers/matchers/role_matcher.rb, line 39
def description
  "require role #{@action}"
end
failure_message() click to toggle source
# File lib/controllers/matchers/role_matcher.rb, line 35
def failure_message
  "Expected a '#{@action}' to '#{@action}' to require role '#{@role}'"
end
matches?(controller) click to toggle source
# File lib/controllers/matchers/role_matcher.rb, line 30
def matches?(controller)
  @controller = controller
  requires_role?
end

Private Instance Methods

flash() click to toggle source
# File lib/controllers/matchers/role_matcher.rb, line 55
def flash
  return @flash if @flash
  flash_and_now = @controller.request.session["flash"].dup if @controller.request.session["flash"]
  flash         = @controller.send(:flash)

  @flash = if @now
    flash.keys.each {|key| flash_and_now.delete(key) }
    flash_and_now
  else
    flash
  end
end
requires_role?() click to toggle source
# File lib/controllers/matchers/role_matcher.rb, line 45
def requires_role?
  response = @context.send(@verb, @action, :id => 1)
  @context.send(:assert_redirected_to, @role_url)
  if flash.values.any? {|value| value =~ @flash_message }
    true
  else
    false
  end
end