class NotAllowedInProject < UnauthorizedAction; end
class InsufficientPermissions < UnauthorizedAction; end
class MissingInformation < StandardError; end
+ class MissingContainer < StandardError; end
attr_reader :email, :user, :handler_options
rescue MissingInformation => e
logger&.error "MailHandler: missing information from #{user}: #{e.message}"
false
+ rescue MissingContainer => e
+ logger&.error "MailHandler: reply to nonexistant object from #{user}: #{e.message}"
+ false
rescue UnauthorizedAction => e
logger&.error "MailHandler: unauthorized attempt from #{user}: #{e.message}"
false
def receive_issue_reply(issue_id, from_journal=nil)
issue = Issue.find_by(:id => issue_id)
if issue.nil?
- logger&.info "MailHandler: ignoring reply from [#{email.from.first}] to a nonexistent issue"
- return nil
+ raise MissingContainer, "reply to nonexistant issue [##{issue_id}]"
end
# Never receive emails to projects where adding issue notes is not possible
logger&.info "MailHandler: reply to a nonexistant journal, calling receive_issue_reply with issue from subject"
receive_issue_reply(m[1].to_i)
else
- logger&.info "MailHandler: ignoring reply to a nonexistant journal or issue"
- return nil
+ raise MissingContainer, "reply to nonexistant journal [#{journal_id}]"
end
end
def receive_message_reply(message_id)
message = Message.find_by(:id => message_id)&.root
if message.nil?
- logger&.info "MailHandler: ignoring reply from [#{email.from.first}] to a nonexistent message"
- return nil
+ raise MissingContainer, "reply to nonexistant message [#{message_id}]"
end
# Never receive emails to projects where adding messages is not possible
assert_no_difference 'Issue.count' do
assert_no_difference 'Journal.count' do
journal = submit_email('ticket_reply_with_status.eml')
- assert_nil journal
+ assert_not journal
end
end
end
journal = submit_email('ticket_reply.eml') do |email|
email.sub! %r{^In-Reply-To:.*$}, "In-Reply-To: <redmine.journal-#{journal_id}.20060719210421@osiris>"
end
- assert_nil journal
+ assert_not journal
end
end
end
Message.find(2).destroy
assert_no_difference('Message.count') do
m = submit_email('message_reply_by_subject.eml')
- assert_nil m
+ assert_not m
end
end