Sha256: ea3e8666fad9fc0d33cdea35ae740e7a15ad84be9c5f5deff1656b2013780337

Contents?: true

Size: 1.56 KB

Versions: 7

Compression:

Stored size: 1.56 KB

Contents

# Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
# This is free software with ABSOLUTELY NO WARRANTY.
# You can redistribute it and/or modify it under the terms of the GNU GPL 2.

$LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'

class MockSmtpServer
  def self.open(smtp_host, smtp_port)
    return self.new(smtp_host, smtp_port)
  end

  def initialize(smtp_host, smtp_port)
    @smtp_host, @smtp_port = smtp_host, smtp_port
    @buffer = []
    @in_data = false
  end
  attr_reader :buffer		# for test.

  def gets
    if @buffer.empty?
      return '220 qwik.jp ESMTP MockSmtpServer'
    end

    if @in_data
      if /\.\z/ =~ @buffer.last
	@in_data = false
	return '250 Ok: queued as 381E41683E'	# The message is fake.
      end
    end

    cmd = @buffer.last[0..3].downcase
    case cmd
    when 'ehlo'
      return '250 example.com'
    when 'mail'
      return '250 ok'
    when 'rcpt'
      return '250 ok'
    when 'data'
      @in_data = true
      return '354 End data with <CR><LF>.<CR><LF>'
    when 'quit'
      return '221 Bye'
    end

    return ''
  end

  def print(str)
    str.sub!(/\r\n\z/, '')
    @buffer << str
  end

  def close
    # Do nothing.
  end
end

if $0 == __FILE__
  require 'qwik/testunit'
  $test = true
end

if defined?($test) && $test
  class TestMockSmtpServer < Test::Unit::TestCase
    def test_all
      # test_initialize
      s = MockSmtpServer.new('localhost', '9195')

      # test_gets
      is '220 qwik.jp ESMTP MockSmtpServer', s.gets

      # test_print
      s.print('t')
      is ['t'], s.buffer
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
qwik2md-2.0.1 vendor/qwik/lib/qwik/mock-sendmail.rb
qwik2md-2.0.0 vendor/qwik/lib/qwik/mock-sendmail.rb
qwik2md-1.0.2 vendor/qwik/lib/qwik/mock-sendmail.rb
qwik2md-1.0.1 vendor/qwik/lib/qwik/mock-sendmail.rb
qwik2md-1.0.0 vendor/qwik/lib/qwik/mock-sendmail.rb
qwik2md-0.1.0 vendor/qwik/lib/qwik/mock-sendmail.rb
qwikdoc-0.0.1 vendor/qwik/mock-sendmail.rb