2014-11-20 11:29:32 +09:00
|
|
|
require "test_helper"
|
2010-04-20 23:05:11 +00:00
|
|
|
|
|
|
|
class UserControllerTest < ActionController::TestCase
|
|
|
|
fixtures :users, :table_data
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
def setup_action_mailer
|
|
|
|
ActionMailer::Base.delivery_method = :test
|
|
|
|
ActionMailer::Base.perform_deliveries = true
|
|
|
|
ActionMailer::Base.deliveries = []
|
|
|
|
end
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
def create_user(name, params = {})
|
2014-08-23 16:44:43 +09:00
|
|
|
user = User.new({ :password => "zugzug1", :password_confirmation => "zugzug1", :email => "a@b.net" }.merge(params))
|
2010-04-20 23:05:11 +00:00
|
|
|
user.name = name
|
|
|
|
user.level = CONFIG["user_levels"]["Member"]
|
|
|
|
user.save
|
|
|
|
user
|
|
|
|
end
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
def test_show
|
2014-08-23 17:50:33 +09:00
|
|
|
get :show, :id => 1
|
2010-04-20 23:05:11 +00:00
|
|
|
assert_response :success
|
|
|
|
end
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
def test_invites
|
|
|
|
setup_action_mailer
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
member = User.find(4)
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
# Should fail
|
2014-08-23 17:50:33 +09:00
|
|
|
post :invites, { :member => { :name => "member", :level => 33 } }, :user_id => 2
|
2010-04-20 23:05:11 +00:00
|
|
|
member.reload
|
2014-08-23 16:19:01 +09:00
|
|
|
assert_equal(CONFIG["user_levels"]["Member"], member.level)
|
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
# Should fail
|
|
|
|
mod = User.find(2)
|
|
|
|
mod.invite_count = 10
|
|
|
|
mod.save
|
2014-08-23 16:19:01 +09:00
|
|
|
ur = UserRecord.create(:user_id => 4, :is_positive => false, :body => "bad", :reported_by => 1)
|
2014-08-23 17:50:33 +09:00
|
|
|
post :invites, { :member => { :name => "member", :level => 33 } }, :user_id => 2
|
2010-04-20 23:05:11 +00:00
|
|
|
member.reload
|
2014-08-23 16:19:01 +09:00
|
|
|
assert_equal(CONFIG["user_levels"]["Member"], member.level)
|
2010-04-20 23:05:11 +00:00
|
|
|
|
|
|
|
ur.destroy
|
|
|
|
|
|
|
|
# Should succeed
|
2014-08-23 17:50:33 +09:00
|
|
|
post :invites, { :member => { :name => "member", :level => 50 } }, :user_id => 2
|
2010-04-20 23:05:11 +00:00
|
|
|
member.reload
|
|
|
|
assert_equal(CONFIG["user_levels"]["Contributor"], member.level)
|
|
|
|
end
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
def test_home
|
|
|
|
get :home, {}, {}
|
|
|
|
assert_response :success
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2014-08-23 17:50:33 +09:00
|
|
|
get :home, {}, :user_id => 1
|
2010-04-20 23:05:11 +00:00
|
|
|
assert_response :success
|
|
|
|
end
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
def test_index
|
|
|
|
get :index, {}, {}
|
|
|
|
assert_response :success
|
|
|
|
|
|
|
|
# TODO: more parameters
|
|
|
|
end
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
def test_authentication_failure
|
2014-08-23 20:00:26 +09:00
|
|
|
create_user("bob")
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
get :login, {}, {}
|
|
|
|
assert_response :success
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2014-08-23 16:44:43 +09:00
|
|
|
post :authenticate, { :user => { :name => "bob", :password => "zugzug2" }, :url => "http://google.com" }, {}
|
2010-04-20 23:05:11 +00:00
|
|
|
assert_not_nil(assigns(:current_user))
|
|
|
|
assert_equal(true, assigns(:current_user).is_anonymous?)
|
|
|
|
end
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
def test_authentication_success
|
2014-08-23 20:00:26 +09:00
|
|
|
create_user("bob")
|
2010-04-20 23:05:11 +00:00
|
|
|
|
2014-08-23 16:44:43 +09:00
|
|
|
post :authenticate, { :user => { :name => "bob", :password => "zugzug1" }, :url => "http://google.com" }, {}
|
2010-04-20 23:05:11 +00:00
|
|
|
assert_not_nil(assigns(:current_user))
|
|
|
|
assert_equal(false, assigns(:current_user).is_anonymous?)
|
|
|
|
assert_equal("bob", assigns(:current_user).name)
|
|
|
|
end
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
def test_create
|
|
|
|
setup_action_mailer
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
get :signup, {}, {}
|
|
|
|
assert_response :success
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2014-08-23 17:50:33 +09:00
|
|
|
post :create, :user => { :name => "mog", :email => "mog@danbooru.com", :password => "zugzug1", :password_confirmation => "zugzug1" }
|
2010-04-20 23:05:11 +00:00
|
|
|
mog = User.find_by_name("mog")
|
|
|
|
assert_not_nil(mog)
|
|
|
|
end
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
def test_update
|
2014-08-23 17:50:33 +09:00
|
|
|
get :edit, {}, :user_id => 4
|
2010-04-20 23:05:11 +00:00
|
|
|
assert_response :success
|
|
|
|
|
2014-08-23 17:50:33 +09:00
|
|
|
post :update, { :user => { :invite_count => 10, :receive_dmails => true } }, :user_id => 4
|
2010-04-20 23:05:11 +00:00
|
|
|
user = User.find(4)
|
|
|
|
assert_equal(0, user.invite_count)
|
|
|
|
assert_equal(true, user.receive_dmails?)
|
|
|
|
end
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
def test_update_favorite_tags
|
2014-08-23 17:50:33 +09:00
|
|
|
post :update, { :user => { :favorite_tags_text => "a b c" } }, :user_id => 4
|
2010-04-20 23:05:11 +00:00
|
|
|
user = User.find(4)
|
|
|
|
assert_equal("a b c", user.favorite_tags_text)
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2014-08-23 17:50:33 +09:00
|
|
|
post :update, { :user => { :favorite_tags_text => "c d e" } }, :user_id => 4
|
2010-04-20 23:05:11 +00:00
|
|
|
user.reload
|
2014-08-23 16:19:01 +09:00
|
|
|
assert_equal("c d e", user.favorite_tags_text)
|
2010-04-20 23:05:11 +00:00
|
|
|
end
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
def test_reset_password
|
|
|
|
setup_action_mailer
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
old_password_hash = User.find(1).password_hash
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
get :reset_password
|
|
|
|
assert_response :success
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2014-08-23 17:50:33 +09:00
|
|
|
post :reset_password, :user => { :name => "admin", :email => "wrong@danbooru.com" }
|
2010-04-20 23:05:11 +00:00
|
|
|
assert_equal(old_password_hash, User.find(1).password_hash)
|
|
|
|
|
2014-08-23 17:50:33 +09:00
|
|
|
post :reset_password, :user => { :name => "admin", :email => "admin@danbooru.com" }
|
2010-04-20 23:05:11 +00:00
|
|
|
assert_not_equal(old_password_hash, User.find(1).password_hash)
|
|
|
|
end
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2010-04-20 23:05:11 +00:00
|
|
|
def test_block
|
|
|
|
setup_action_mailer
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2014-08-23 17:50:33 +09:00
|
|
|
get :block, { :id => 4 }, :user_id => 1
|
2010-04-20 23:05:11 +00:00
|
|
|
assert_response :success
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2014-08-23 17:50:33 +09:00
|
|
|
post :block, { :id => 4, :ban => { :reason => "bad", :duration => 5 } }, :user_id => 1
|
2010-04-20 23:05:11 +00:00
|
|
|
banned = User.find(4)
|
|
|
|
assert_equal(CONFIG["user_levels"]["Blocked"], banned.level)
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2014-08-23 17:50:33 +09:00
|
|
|
get :show_blocked_users, {}, :user_id => 1
|
2010-04-20 23:05:11 +00:00
|
|
|
assert_response :success
|
2014-08-23 16:19:01 +09:00
|
|
|
|
2014-08-23 17:50:33 +09:00
|
|
|
post :unblock, { :user => { "4" => "1" } }, :user_id => 1
|
2010-04-20 23:05:11 +00:00
|
|
|
banned.reload
|
|
|
|
assert_equal(CONFIG["user_levels"]["Member"], banned.level)
|
|
|
|
end
|
|
|
|
end
|