Files
danbooru/test/unit/current_user_test.rb
r888888888 9a260eecb9 fix tests
2014-11-07 15:03:00 -08:00

72 lines
2.0 KiB
Ruby

require 'test_helper'
class CurrentUserTest < ActiveSupport::TestCase
setup do
CurrentUser.user = nil
CurrentUser.ip_addr = nil
end
teardown do
Thread.current[:safe_mode] = false
end
context ".safe_mode?" do
should "return true if the host contains the string host" do
req = mock()
req.stubs(:host).returns("safebooru")
req.stubs(:params).returns({})
CurrentUser.set_safe_mode(req)
assert_equal(true, CurrentUser.safe_mode?)
end
should "return false if the host does not contain the string host" do
req = mock()
req.stubs(:host).returns("danbooru")
req.stubs(:params).returns({})
CurrentUser.set_safe_mode(req)
assert_equal(false, CurrentUser.safe_mode?)
end
end
context "The current user" do
should "be set only within the scope of the block" do
user = FactoryGirl.create(:user)
assert_nil(CurrentUser.user)
assert_nil(CurrentUser.ip_addr)
CurrentUser.user = user
CurrentUser.ip_addr = "1.2.3.4"
assert_not_nil(CurrentUser.user)
assert_equal(user.id, CurrentUser.user.id)
assert_equal("1.2.3.4", CurrentUser.ip_addr)
end
end
context "A scoped current user" do
should "reset the current user after the block has exited" do
user1 = FactoryGirl.create(:user)
user2 = FactoryGirl.create(:user)
CurrentUser.user = user1
CurrentUser.scoped(user2, nil) do
assert_equal(user2.id, CurrentUser.user.id)
end
assert_equal(user1.id, CurrentUser.user.id)
end
should "reset the current user even if an exception is thrown" do
user1 = FactoryGirl.create(:user)
user2 = FactoryGirl.create(:user)
CurrentUser.user = user1
assert_raises(RuntimeError) do
CurrentUser.scoped(user2, nil) do
assert_equal(user2.id, CurrentUser.user.id)
raise "ERROR"
end
end
assert_equal(user1.id, CurrentUser.user.id)
end
end
end