github.com/cozy/cozy-stack@v0.0.0-20240603063001-31110fa4cae1/tests/system/lib/email.rb (about)

     1  class Email
     2    MAILHOG = 'http://localhost:8025/api'
     3    attr_reader :subject, :from, :to, :body, :parts
     4  
     5    def initialize(opts = {})
     6      @subject = opts[:subject]
     7      @from = opts[:from]
     8      @to = opts[:to]
     9      @body = opts[:body]
    10      @parts = opts[:parts] || []
    11    end
    12  
    13    def self.client
    14      @client ||= RestClient::Resource.new MAILHOG
    15    end
    16  
    17    def self.clear_inbox
    18      client["/v1/messages"].delete
    19    end
    20  
    21    def self.received(params)
    22      client = RestClient::Resource.new MAILHOG
    23      res = client["/v2/search"].get params: params
    24      JSON.parse(res.body)["items"].map do |item|
    25        subject = item.dig "Content", "Headers", "Subject", 0
    26        from = item.dig "Content", "Headers", "From", 0
    27        to = item.dig "Content", "Headers", "From", 0
    28        parts = item.dig "MIME", "Parts"
    29        body = parts.dig 0, "Body"
    30        Email.new(subject: subject, from: from, to: to, body: body, parts: parts)
    31      end
    32    end
    33  end