Sha256: 911e4049c75629b8b31bba703f6d1729d99daee9bb6b5dc3c56c21aba6c29d74

Contents?: true

Size: 1.76 KB

Versions: 30

Compression:

Stored size: 1.76 KB

Contents

require 'sinatra/base'

class HttpTestServer < Sinatra::Base
  set :protection, :except => :path_traversal

  get "/method" do
    text 200, "GET"
  end

  post "/method" do
    text 200, "POST"
  end

  get "/echo_accept" do
    text 200, request.accept.first
  end

  get "/echo_agent" do
    text 200, request.user_agent
  end

  get "/status/:response_status" do
    if params[:response_status] =~ /\A\d+\z/
      status = params[:response_status]
      message = Rack::Utils::HTTP_STATUS_CODES[status.to_i] || "Unknown"
      text status.to_i, "#{status} #{message}"
    else
      text 500, "Invalid Status"
    end
  end

  get "/sleep/:seconds" do
    sleep params[:seconds].to_f
    $stderr.puts "sleeping #{params[:seconds]}"
    text 200, "Woke up after #{params.inspect} seconds"
  end

  get '/basic_auth' do
    requires_basic_auth!('admin', 'admin')
    "Welcome, authenticated client"
  end

  get '/basic_auth_without_password' do
    requires_basic_auth!('justadmin', '')
    "Welcome, authenticated client"
  end

  get '/basic_auth_without_user' do
    requires_basic_auth!('', 'justpassword')
    "Welcome, authenticated client"
  end

  get '/return_next_path_segment/:something' do
    params[:something]
  end

  def text(response_code, body, headers ={})
    [response_code, { "Content-Type" => "text/plain" }.merge(headers), body]
  end

  helpers do
    def requires_basic_auth!(user, pass)
      unless authorized?(user, pass)
        response['WWW-Authenticate'] = %(Basic realm="Restricted Area")
        throw(:halt, [401, "Not authorized\n"])
      end
    end

    def authorized?(user, pass)
      @auth ||=  Rack::Auth::Basic::Request.new(request.env)
      @auth.provided? && @auth.basic? && @auth.credentials && @auth.credentials == [user, pass]
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
litmus_paper-1.6.2 spec/support/http_test_server.rb
litmus_paper-1.6.1 spec/support/http_test_server.rb
litmus_paper-1.6.0 spec/support/http_test_server.rb
litmus_paper-1.5.0 spec/support/http_test_server.rb
litmus_paper-1.4.2 spec/support/http_test_server.rb
litmus_paper-1.4.1 spec/support/http_test_server.rb
litmus_paper-1.3.0 spec/support/http_test_server.rb
litmus_paper-1.2.0 spec/support/http_test_server.rb
litmus_paper-1.1.1 spec/support/http_test_server.rb
litmus_paper-1.1.0 spec/support/http_test_server.rb
litmus_paper-1.0.0 spec/support/http_test_server.rb
litmus_paper-0.9.9 spec/support/http_test_server.rb
litmus_paper-0.9.7 spec/support/http_test_server.rb
litmus_paper-0.9.6 spec/support/http_test_server.rb
litmus_paper-0.9.5 spec/support/http_test_server.rb
litmus_paper-0.9.4 spec/support/http_test_server.rb
litmus_paper-0.9.3 spec/support/http_test_server.rb
litmus_paper-0.9.2 spec/support/http_test_server.rb
litmus_paper-0.9.1 spec/support/http_test_server.rb
litmus_paper-0.9.0 spec/support/http_test_server.rb