require 'webrick' require 'webrick/ssl' require 'support/black_hole' require 'support/dummy_server/servlet' require 'support/servers/config' require 'support/servers/runner' class DummyServer < WEBrick::HTTPServer include ServerConfig CONFIG = { :BindAddress => '127.0.0.1', :Port => 0, :AccessLog => BlackHole, :Logger => BlackHole }.freeze def initialize(options = {}) if options[:ssl] override_config = { :SSLEnable => true, :SSLStartImmediately => true } else override_config = {} end super CONFIG.merge(override_config) mount('/', Servlet) end def endpoint "#{ssl? ? 'https' : 'http'}://#{addr}:#{port}" end def ssl_context @ssl_context ||= begin context = OpenSSL::SSL::SSLContext.new context.verify_mode = OpenSSL::SSL::VERIFY_PEER context.key = OpenSSL::PKey::RSA.new( File.read(File.join(certs_dir, 'server.key')) ) context.cert = OpenSSL::X509::Certificate.new( File.read(File.join(certs_dir, 'server.crt')) ) context.ca_file = File.join(certs_dir, 'ca.crt') context end end end