mirror of
https://github.com/moebooru/moebooru
synced 2025-08-22 01:47:48 +00:00
147 lines
4.1 KiB
Ruby
147 lines
4.1 KiB
Ruby
require "test_helper"
|
|
|
|
class UserControllerTest < ActionController::TestCase
|
|
fixtures :users, :table_data
|
|
|
|
def setup_action_mailer
|
|
ActionMailer::Base.delivery_method = :test
|
|
ActionMailer::Base.perform_deliveries = true
|
|
ActionMailer::Base.deliveries = []
|
|
end
|
|
|
|
def create_user(name, params = {})
|
|
user = User.new({ password: "zugzug1", password_confirmation: "zugzug1", email: "a@b.net" }.merge(params))
|
|
user.name = name
|
|
user.level = CONFIG["user_levels"]["Member"]
|
|
user.save
|
|
user
|
|
end
|
|
|
|
def test_show
|
|
get :show, params: { id: 1 }, session: { user_id: 1 }
|
|
assert_response :success
|
|
end
|
|
|
|
def test_invites
|
|
setup_action_mailer
|
|
|
|
member = User.find(4)
|
|
|
|
# Should fail
|
|
post :invites, params: { member: { name: "member", level: 33 } }, session: { user_id: 2 }
|
|
member.reload
|
|
assert_equal(CONFIG["user_levels"]["Member"], member.level)
|
|
|
|
# Should fail
|
|
mod = User.find(2)
|
|
mod.invite_count = 10
|
|
mod.save
|
|
ur = UserRecord.create(user_id: 4, is_positive: false, body: "bad", reported_by: 1)
|
|
post :invites, params: { member: { name: "member", level: 33 } }, session: { user_id: 2 }
|
|
member.reload
|
|
assert_equal(CONFIG["user_levels"]["Member"], member.level)
|
|
|
|
ur.destroy
|
|
|
|
# Should succeed
|
|
post :invites, params: { member: { name: "member", level: 50 } }, session: { user_id: 2 }
|
|
member.reload
|
|
assert_equal(CONFIG["user_levels"]["Contributor"], member.level)
|
|
end
|
|
|
|
def test_home
|
|
get :home
|
|
assert_response :success
|
|
|
|
get :home, session: { user_id: 1 }
|
|
assert_response :success
|
|
end
|
|
|
|
def test_index
|
|
get :index
|
|
assert_response :success
|
|
|
|
# TODO: more parameters
|
|
end
|
|
|
|
def test_authentication_failure
|
|
create_user("bob")
|
|
|
|
get :login
|
|
assert_response :success
|
|
|
|
post :authenticate, params: { user: { name: "bob", password: "zugzug2" } }
|
|
assert_not_nil(assigns(:current_user))
|
|
assert_equal(true, assigns(:current_user).is_anonymous?)
|
|
end
|
|
|
|
def test_authentication_success
|
|
create_user("bob")
|
|
|
|
post :authenticate, params: { user: { name: "bob", password: "zugzug1" } }
|
|
assert_not_nil(assigns(:current_user))
|
|
assert_equal(false, assigns(:current_user).is_anonymous?)
|
|
assert_equal("bob", assigns(:current_user).name)
|
|
end
|
|
|
|
def test_create
|
|
setup_action_mailer
|
|
|
|
get :signup
|
|
assert_response :success
|
|
|
|
post :create, params: { user: { name: "mog", email: "mog@danbooru.com", password: "zugzug1", password_confirmation: "zugzug1" } }
|
|
mog = User.find_by_name("mog")
|
|
assert_not_nil(mog)
|
|
end
|
|
|
|
def test_update
|
|
get :edit, session: { user_id: 4 }
|
|
assert_response :success
|
|
|
|
original_invite_count = User.find(4).invite_count
|
|
post :update, params: { user: { invite_count: original_invite_count + 2 } }, session: { user_id: 4 }
|
|
assert_equal(original_invite_count, User.find(4).invite_count)
|
|
|
|
post :update, params: { user: { receive_dmails: true } }, session: { user_id: 4 }
|
|
assert_equal(true, User.find(4).receive_dmails?)
|
|
end
|
|
|
|
def test_reset_password
|
|
setup_action_mailer
|
|
|
|
old_password_hash = User.find(1).password_hash
|
|
|
|
get :reset_password
|
|
assert_response :success
|
|
|
|
post :reset_password, params: { user: { name: "admin", email: "wrong@danbooru.com" } }
|
|
assert_equal(old_password_hash, User.find(1).password_hash)
|
|
|
|
post :reset_password, params: { user: { name: "admin", email: "admin@danbooru.com" } }
|
|
assert_not_equal(old_password_hash, User.find(1).password_hash)
|
|
end
|
|
|
|
def test_block
|
|
setup_action_mailer
|
|
|
|
get :block, params: { id: 4 }, session: { user_id: 1 }
|
|
assert_response :success
|
|
|
|
post :block, params: { id: 4, ban: { reason: "bad", duration: 5 } }, session: { user_id: 1 }
|
|
banned = User.find(4)
|
|
assert_equal(CONFIG["user_levels"]["Blocked"], banned.level)
|
|
|
|
post :unblock, params: { user: { "4" => "1" } }, session: { user_id: 1 }
|
|
banned.reload
|
|
assert_equal(CONFIG["user_levels"]["Member"], banned.level)
|
|
end
|
|
|
|
def test_show_blocked_users
|
|
setup_action_mailer
|
|
|
|
get :show_blocked_users, session: { user_id: 1 }
|
|
assert_response :success
|
|
end
|
|
end
|