Add a form for submitting DMCA complaints. The complaint is emailed to the site owner, and a confirmation email is sent to the submitter.
90 lines
2.8 KiB
Ruby
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
|