added bans
This commit is contained in:
6
test/factories/ban.rb
Normal file
6
test/factories/ban.rb
Normal file
@@ -0,0 +1,6 @@
|
||||
Factory.define(:ban) do |f|
|
||||
f.user {|x| x.association(:user)}
|
||||
f.banner {|x| x.association(:admin_user)}
|
||||
f.reason {Faker::Lorem.words}
|
||||
f.duration 60
|
||||
end
|
||||
170
test/unit/ban_test.rb
Normal file
170
test/unit/ban_test.rb
Normal file
@@ -0,0 +1,170 @@
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class BanTest < ActiveSupport::TestCase
|
||||
context "A ban" do
|
||||
context "created by an admin" do
|
||||
setup do
|
||||
@banner = Factory.create(:admin_user)
|
||||
end
|
||||
|
||||
teardown do
|
||||
@banner = nil
|
||||
end
|
||||
|
||||
should "not be valid against another admin" do
|
||||
user = Factory.create(:admin_user)
|
||||
ban = Factory.build(:ban, :user => user, :banner => @banner)
|
||||
ban.save
|
||||
assert(ban.errors.any?)
|
||||
end
|
||||
|
||||
should "be valid against anyone who is not an admin" do
|
||||
user = Factory.create(:moderator_user)
|
||||
ban = Factory.create(:ban, :user => user, :banner => @banner)
|
||||
assert(ban.errors.empty?)
|
||||
|
||||
user = Factory.create(:janitor_user)
|
||||
ban = Factory.create(:ban, :user => user, :banner => @banner)
|
||||
assert(ban.errors.empty?)
|
||||
|
||||
user = Factory.create(:contributor_user)
|
||||
ban = Factory.create(:ban, :user => user, :banner => @banner)
|
||||
assert(ban.errors.empty?)
|
||||
|
||||
user = Factory.create(:privileged_user)
|
||||
ban = Factory.create(:ban, :user => user, :banner => @banner)
|
||||
assert(ban.errors.empty?)
|
||||
|
||||
user = Factory.create(:user)
|
||||
ban = Factory.create(:ban, :user => user, :banner => @banner)
|
||||
assert(ban.errors.empty?)
|
||||
end
|
||||
end
|
||||
|
||||
context "created by a moderator" do
|
||||
setup do
|
||||
@banner = Factory.create(:moderator_user)
|
||||
end
|
||||
|
||||
teardown do
|
||||
@banner = nil
|
||||
end
|
||||
|
||||
should "not be valid against an admin or moderator" do
|
||||
user = Factory.create(:admin_user)
|
||||
ban = Factory.build(:ban, :user => user, :banner => @banner)
|
||||
ban.save
|
||||
assert(ban.errors.any?)
|
||||
|
||||
user = Factory.create(:moderator_user)
|
||||
ban = Factory.build(:ban, :user => user, :banner => @banner)
|
||||
ban.save
|
||||
assert(ban.errors.any?)
|
||||
end
|
||||
|
||||
should "be valid against anyone who is not an admin or a moderator" do
|
||||
user = Factory.create(:janitor_user)
|
||||
ban = Factory.create(:ban, :user => user, :banner => @banner)
|
||||
assert(ban.errors.empty?)
|
||||
|
||||
user = Factory.create(:contributor_user)
|
||||
ban = Factory.create(:ban, :user => user, :banner => @banner)
|
||||
assert(ban.errors.empty?)
|
||||
|
||||
user = Factory.create(:privileged_user)
|
||||
ban = Factory.create(:ban, :user => user, :banner => @banner)
|
||||
assert(ban.errors.empty?)
|
||||
|
||||
user = Factory.create(:user)
|
||||
ban = Factory.create(:ban, :user => user, :banner => @banner)
|
||||
assert(ban.errors.empty?)
|
||||
end
|
||||
end
|
||||
|
||||
context "created by a janitor" do
|
||||
setup do
|
||||
@banner = Factory.create(:janitor_user)
|
||||
end
|
||||
|
||||
teardown do
|
||||
@banner = nil
|
||||
end
|
||||
|
||||
should "always be invalid" do
|
||||
user = Factory.create(:admin_user)
|
||||
ban = Factory.build(:ban, :user => user, :banner => @banner)
|
||||
ban.save
|
||||
assert(ban.errors.any?)
|
||||
|
||||
user = Factory.create(:moderator_user)
|
||||
ban = Factory.build(:ban, :user => user, :banner => @banner)
|
||||
ban.save
|
||||
assert(ban.errors.any?)
|
||||
|
||||
user = Factory.create(:janitor_user)
|
||||
ban = Factory.build(:ban, :user => user, :banner => @banner)
|
||||
ban.save
|
||||
assert(ban.errors.any?)
|
||||
|
||||
user = Factory.create(:contributor_user)
|
||||
ban = Factory.build(:ban, :user => user, :banner => @banner)
|
||||
ban.save
|
||||
assert(ban.errors.any?)
|
||||
|
||||
user = Factory.create(:privileged_user)
|
||||
ban = Factory.build(:ban, :user => user, :banner => @banner)
|
||||
ban.save
|
||||
assert(ban.errors.any?)
|
||||
|
||||
user = Factory.create(:user)
|
||||
ban = Factory.build(:ban, :user => user, :banner => @banner)
|
||||
ban.save
|
||||
assert(ban.errors.any?)
|
||||
end
|
||||
end
|
||||
|
||||
should "initialize the expiration date" do
|
||||
user = Factory.create(:user)
|
||||
admin = Factory.create(:admin_user)
|
||||
ban = Factory.create(:ban, :user => user, :banner => admin)
|
||||
assert_not_nil(ban.expires_at)
|
||||
end
|
||||
|
||||
should "update the user's feedback" do
|
||||
user = Factory.create(:user)
|
||||
admin = Factory.create(:admin_user)
|
||||
assert(user.feedback.empty?)
|
||||
ban = Factory.create(:ban, :user => user, :banner => admin)
|
||||
assert(!user.feedback.empty?)
|
||||
assert(!user.feedback.last.is_positive?)
|
||||
end
|
||||
end
|
||||
|
||||
context "Searching for a ban" do
|
||||
context "by user id" do
|
||||
should "not return expired bans" do
|
||||
admin = Factory.create(:admin_user)
|
||||
|
||||
user = Factory.create(:user)
|
||||
ban = Factory.create(:ban, :user => user, :banner => admin, :duration => -1)
|
||||
assert(!Ban.is_user_banned?(user))
|
||||
|
||||
user = Factory.create(:user)
|
||||
ban = Factory.create(:ban, :user => user, :banner => admin, :duration => 1)
|
||||
assert(Ban.is_user_banned?(user))
|
||||
end
|
||||
end
|
||||
|
||||
context "by ip address" do
|
||||
should "not return expired bans" do
|
||||
admin = Factory.create(:admin_user)
|
||||
|
||||
ban = Factory.create(:ban, :ip_addr => "1.2.3.4", :banner => admin, :duration => -1)
|
||||
assert(!Ban.is_ip_banned?("1.2.3.4"))
|
||||
|
||||
ban = Factory.create(:ban, :ip_addr => "5.6.7.8", :banner => admin, :duration => 1)
|
||||
assert(Ban.is_ip_banned?("5.6.7.8"))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
8
test/unit/user_feedback_test.rb
Normal file
8
test/unit/user_feedback_test.rb
Normal file
@@ -0,0 +1,8 @@
|
||||
require 'test_helper'
|
||||
|
||||
class UserFeedbackTest < ActiveSupport::TestCase
|
||||
# Replace this with your real tests.
|
||||
test "the truth" do
|
||||
assert true
|
||||
end
|
||||
end
|
||||
@@ -14,6 +14,49 @@ class UserTest < ActiveSupport::TestCase
|
||||
assert(!User.authenticate_hash(@user.name, "xxxx"), "Authentication should not have succeeded")
|
||||
end
|
||||
|
||||
should "normalize its level" do
|
||||
user = Factory.create(:user, :is_admin => true)
|
||||
assert(user.is_moderator?)
|
||||
assert(user.is_janitor?)
|
||||
assert(user.is_contributor?)
|
||||
assert(user.is_privileged?)
|
||||
|
||||
user = Factory.create(:user, :is_moderator => true)
|
||||
assert(!user.is_admin?)
|
||||
assert(user.is_moderator?)
|
||||
assert(user.is_janitor?)
|
||||
assert(!user.is_contributor?)
|
||||
assert(user.is_privileged?)
|
||||
|
||||
user = Factory.create(:user, :is_janitor => true)
|
||||
assert(!user.is_admin?)
|
||||
assert(!user.is_moderator?)
|
||||
assert(user.is_janitor?)
|
||||
assert(!user.is_contributor?)
|
||||
assert(user.is_privileged?)
|
||||
|
||||
user = Factory.create(:user, :is_contributor => true)
|
||||
assert(!user.is_admin?)
|
||||
assert(!user.is_moderator?)
|
||||
assert(!user.is_janitor?)
|
||||
assert(user.is_contributor?)
|
||||
assert(user.is_privileged?)
|
||||
|
||||
user = Factory.create(:user, :is_privileged => true)
|
||||
assert(!user.is_admin?)
|
||||
assert(!user.is_moderator?)
|
||||
assert(!user.is_janitor?)
|
||||
assert(!user.is_contributor?)
|
||||
assert(user.is_privileged?)
|
||||
|
||||
user = Factory.create(:user)
|
||||
assert(!user.is_admin?)
|
||||
assert(!user.is_moderator?)
|
||||
assert(!user.is_janitor?)
|
||||
assert(!user.is_contributor?)
|
||||
assert(!user.is_privileged?)
|
||||
end
|
||||
|
||||
context "name" do
|
||||
should "be #{Danbooru.config.default_guest_name} given an invalid user id" do
|
||||
assert_equal(Danbooru.config.default_guest_name, User.find_name(-1))
|
||||
|
||||
Reference in New Issue
Block a user