diff --git a/test/factories/user.rb b/test/factories/user.rb index 800247c82..3d3d5eb5d 100644 --- a/test/factories/user.rb +++ b/test/factories/user.rb @@ -13,8 +13,9 @@ FactoryGirl.define do bit_prefs 0 factory(:banned_user) do + transient { ban_duration 3 } is_banned true - after(:create) { |user| create(:ban, user: user) } + after(:create) { |user, ctx| create(:ban, user: user, duration: ctx.ban_duration) } end factory(:member_user) do diff --git a/test/functional/sessions_controller_test.rb b/test/functional/sessions_controller_test.rb index 038e5aea5..7743ac6c2 100644 --- a/test/functional/sessions_controller_test.rb +++ b/test/functional/sessions_controller_test.rb @@ -21,6 +21,21 @@ class SessionsControllerTest < ActionController::TestCase assert_equal(@user.id, session[:user_id]) assert_not_nil(@user.last_ip_addr) end + + should "unban user if user has expired ban" do + CurrentUser.scoped(@user, "127.0.0.1") do + @banned = FactoryGirl.create(:banned_user, ban_duration: 3) + end + + travel_to(4.days.from_now) do + post :create, {name: @banned.name, password: "password"} + SessionLoader.new(session, {}, request, {}).load + + assert_equal(@banned.id, session[:user_id]) + assert_equal(true, @banned.ban_expired?) + assert_equal(false, @banned.reload.is_banned) + end + end end context "destroy action" do