Report abuse


			
require "test/unit"

require 'rubygems'
require 'mocha'
require 'stubba'

require "authorization/parsers/eval_parser"

class TestEvalParserExpression < Test::Unit::TestCase
  Expression = Authorization::Parsers::EvalParser::Expression

  def test_current_user_when_not_logged_in
    controller = stub('Controller')
    controller.expects(:logged_in?).returns(false)
    expression = Expression.new('test', controller)
    assert_raise(Authorization::Parsers::UserIsNotLoggedInError) do
      expression.current_user
    end
  end

  def test_current_user_when_not_returning_good_user
    controller = stub('Controller')
    controller.expects(:logged_in?).returns(true)
    controller.expects(:current_user).returns(:false)
    expression = Expression.new('test', controller)
    assert_raise(Authorization::Parsers::UserDoesntImplementRolesError) do
      expression.current_user
    end
  end

  def test_current_user_when_current_user_method_not_implemented
    controller = stub('Controller')
    controller.expects(:logged_in?).returns(true)
    expression = Expression.new('test', controller)
    assert_raise(Authorization::Parsers::UnableToObtainCurrentUserError) do
      expression.current_user
    end
  end

  def test_process_role_for_test_returning_false
    user = stub('User')
    user.expects(:has_role?).with('test').returns(false)
    controller = stub('Controller')
    controller.expects(:logged_in?).returns(true)
    controller.expects(:current_user).returns(user)
    expression = Expression.new('test', controller)
    actual = expression.process_role('test')
    assert_equal false, actual
  end
end