require 'rspec'

require 'tmpdir'
require 'fileutils'
require 'socket'

shared_context "UNIX Server" do
  def socket_path(name); File.join(Dir.tmpdir,name); end

  let(:path) { socket_path('ronin_unix_server') }

  before(:each) do
    @server = UNIXServer.new(path)
    @server_thread = Thread.new do
      socket = @server.accept

      begin
        socket.puts socket.readline
      ensure
        socket.close
      end
    end
  end

  after(:each) do
    @server_thread.kill
    @server.close

    FileUtils.rm(path)
  end
end