Sha256: 62bc92a71f43fd93c4b7fdf614c9762adf6c715cfacb7785ec8addcb05610cd6

Contents?: true

Size: 1.98 KB

Versions: 3

Compression:

Stored size: 1.98 KB

Contents

require_relative '../helper'

class RemailerSMTPServerTest < MiniTest::Test
  def random_server_port
    @server_port ||= 9000 + rand(4096)

    @server_port += 1
  end

  def test_bind
    engine do
      server_port = random_server_port
      
      server = Remailer::SMTP::Server.bind(nil, server_port)
      
      assert server
    end
  end

  def test_connect
    engine do
      server_port = random_server_port

      remote_ip = nil
    
      server = Remailer::SMTP::Server.bind(
        nil,
        server_port,
        on_connect: lambda { |_remote_ip| remote_ip = _remote_ip }
      )
    
      assert server
      
      connected_host = nil

      client = Remailer::SMTP::Client.open(
        'localhost',
        port: server_port,
        debug: self.debug_channel, 
        connect: lambda { |success, host| connected_host = host }
      )
      
      assert_eventually(30) do
        connected_host
      end
      
      assert_equal '127.0.0.1', connected_host
      assert_equal '127.0.0.1', remote_ip
    end
  end

  def test_transaction
    engine do
      server_port = random_server_port

      transaction = nil
    
      server = Remailer::SMTP::Server.bind(
        nil,
        server_port,
        on_transaction: lambda { |_transaction| transaction = _transaction }
      )
    
      assert server
      
      connected_host = nil

      client = Remailer::SMTP::Client.open(
        'localhost',
        port: server_port,
        debug: self.debug_channel
      )
      
      sender = 'sender@example.com'.freeze
      recipient = 'recipient@example.net'.freeze
      content = "Subject: Re: Test Message\r\n\r\nTest message.\r\n\r\n.test\r\n.\r\n".freeze
      
      client.send_email(sender, recipient, content)
      
      assert_eventually(30) do
        transaction
      end
      
      assert_equal sender, transaction.sender
      assert_equal [ recipient ], transaction.recipients
      assert_equal content + Remailer::Constants::CRLF, transaction.data
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
remailer-0.7.1.2 test/unit/remailer_smtp_server_test.rb
remailer-0.7.1.1 test/unit/remailer_smtp_server_test.rb
remailer-0.7.1 test/unit/remailer_smtp_server_test.rb