مراية لـ
https://github.com/postalserver/postal.git
تم المزامنة 2025-11-30 21:32:30 +00:00
This adds a comprehensive set of tests for the message unqueueing service. Additionally, it improves how message databases are used for testing environments.
79 أسطر
1.6 KiB
Ruby
79 أسطر
1.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# This class can be used to generate a message which can be used for the purposes of
|
|
# testing within the given server.
|
|
class MessageFactory
|
|
|
|
def initialize(server)
|
|
@server = server
|
|
end
|
|
|
|
def incoming(route: nil, &block)
|
|
@message = @server.message_db.new_message
|
|
@message.scope = "incoming"
|
|
@message.rcpt_to = "test@example.com"
|
|
@message.mail_from = "john@example.com"
|
|
|
|
if route
|
|
@message.rcpt_to = route.description
|
|
@message.route_id = route.id
|
|
end
|
|
|
|
create_message(&block)
|
|
end
|
|
|
|
def outgoing(domain: nil, credential: nil, &block)
|
|
@message = @server.message_db.new_message
|
|
@message.scope = "outgoing"
|
|
@message.rcpt_to = "john@example.com"
|
|
@message.mail_from = "test@example.com"
|
|
|
|
if domain
|
|
@message.mail_from = "test@#{domain.name}"
|
|
@message.domain_id = domain.id
|
|
end
|
|
|
|
if credential
|
|
@message.credential_id = credential.id
|
|
end
|
|
|
|
create_message(&block)
|
|
end
|
|
|
|
class << self
|
|
|
|
def incoming(server, **kwargs, &block)
|
|
new(server).incoming(**kwargs, &block)
|
|
end
|
|
|
|
def outgoing(server, **kwargs, &block)
|
|
new(server).outgoing(**kwargs, &block)
|
|
end
|
|
|
|
end
|
|
|
|
private
|
|
|
|
def create_message
|
|
mail = create_mail(@message.rcpt_to, @message.mail_from)
|
|
|
|
if block_given?
|
|
yield @message, mail
|
|
end
|
|
|
|
@message.raw_message = mail.to_s
|
|
@message.save(queue_on_create: false)
|
|
@message
|
|
end
|
|
|
|
def create_mail(to, from)
|
|
mail = Mail.new
|
|
mail.to = to
|
|
mail.from = from
|
|
mail.subject = "An example message"
|
|
mail.body = "Hello world!"
|
|
mail
|
|
end
|
|
|
|
end
|