class SmtpMock::Server

Attributes

command_line_args[R]
deps_handler[R]
pid[RW]
port[RW]
port_checker[R]
process[R]
version[R]

Public Class Methods

new( deps_handler = SmtpMock::Dependency, port_checker = SmtpMock::Server::Port, args_builder = SmtpMock::CommandLineArgsBuilder, process = SmtpMock::Server::Process, **args ) click to toggle source
# File lib/smtp_mock/server.rb, line 7
def initialize( # rubocop:disable Metrics/ParameterLists
  deps_handler = SmtpMock::Dependency,
  port_checker = SmtpMock::Server::Port,
  args_builder = SmtpMock::CommandLineArgsBuilder,
  process = SmtpMock::Server::Process,
  **args
)
  @version = deps_handler.verify_dependencies
  args[:port] = port_checker.random_free_port unless args.include?(:port)
  @command_line_args, @port = args_builder.call(**args), args[:port]
  @deps_handler, @port_checker, @process = deps_handler, port_checker, process
  run
end

Public Instance Methods

active?() click to toggle source
# File lib/smtp_mock/server.rb, line 21
def active?
  process_alive? && port_open?
end
stop() click to toggle source
# File lib/smtp_mock/server.rb, line 25
def stop
  process_kill(SmtpMock::Server::Process::SIGTERM)
end
stop!() click to toggle source
# File lib/smtp_mock/server.rb, line 29
def stop!
  process_kill(SmtpMock::Server::Process::SIGKILL)
end

Private Instance Methods

compose_command() click to toggle source
# File lib/smtp_mock/server.rb, line 42
def compose_command
  deps_handler.compose_command(command_line_args)
end
port_open?() click to toggle source
# File lib/smtp_mock/server.rb, line 50
def port_open?
  port_checker.port_open?(port)
end
process_alive?() click to toggle source
# File lib/smtp_mock/server.rb, line 46
def process_alive?
  process.alive?(pid)
end
process_kill(signal_number) click to toggle source
# File lib/smtp_mock/server.rb, line 38
def process_kill(signal_number)
  process.kill(signal_number, pid)
end
run() click to toggle source
# File lib/smtp_mock/server.rb, line 54
def run
  self.pid = process.create(compose_command)
  ::Kernel.at_exit { stop! }
end