Files
danbooru/test/unit/user_mailer_test.rb
evazion 24bc6aa949 Add DMCA complaint form.
Add a form for submitting DMCA complaints. The complaint is emailed to
the site owner, and a confirmation email is sent to the submitter.
2022-10-11 15:45:47 -05:00

90 lines
2.8 KiB
Ruby

require "test_helper"
class UserMailerTest < ActionMailer::TestCase
context "UserMailer" do
setup do
@user = create(:user, email_address: build(:email_address))
end
context "dmail_notice method" do
should "work" do
@dmail = create(:dmail, owner: @user, to: @user)
mail = UserMailer.dmail_notice(@dmail)
assert_not_nil(mail.header["List-Unsubscribe"])
assert_emails(1) { mail.deliver_now }
end
should "not send an email for a user without an email address" do
@user = create(:user)
@dmail = create(:dmail, owner: @user, to: @user)
mail = UserMailer.dmail_notice(@dmail)
assert_emails(0) { mail.deliver_now }
end
should "not send an email for a user with an undeliverable address" do
@user = create(:user, email_address: build(:email_address, is_deliverable: false))
@dmail = create(:dmail, owner: @user, to: @user)
mail = UserMailer.dmail_notice(@dmail)
assert_emails(0) { mail.deliver_now }
end
should "not send an email for a user with an unverified address" do
@user = create(:user, email_address: build(:email_address, is_verified: false))
@dmail = create(:dmail, owner: @user, to: @user)
mail = UserMailer.dmail_notice(@dmail)
assert_emails(0) { mail.deliver_now }
end
end
context "password_reset method" do
should "work" do
mail = UserMailer.password_reset(@user)
assert_emails(1) { mail.deliver_now }
end
end
context "email_change_confirmation method" do
should "work" do
mail = UserMailer.email_change_confirmation(@user)
assert_emails(1) { mail.deliver_now }
end
should "not fail for a user without an email address" do
@user = create(:user)
mail = UserMailer.email_change_confirmation(@user)
assert_emails(0) { mail.deliver_now }
end
end
context "welcome_user method" do
should "work" do
mail = UserMailer.welcome_user(@user)
assert_emails(1) { mail.deliver_now }
end
should "not fail for a user without an email address" do
@user = create(:user)
mail = UserMailer.welcome_user(@user)
assert_emails(0) { mail.deliver_now }
end
end
context "dmail_complaint method" do
should "work" do
dmca = {
name: "John Doe",
email: "test@example.com",
address: "123 Fake Street",
infringing_urls: "https://example.com/1.html\nhttps://example.com/2.html",
original_urls: "https://google.com/1.html\nhttps://google.com/2.html",
proof: "source: me",
signature: "John Doe",
}
mail = UserMailer.with(dmca: dmca).dmca_complaint(to: dmca[:email])
assert_emails(1) { mail.deliver_now }
end
end
end
end