teamcapybara--capybara/lib/capybara/spec/test_app.rb

190 lines
3.9 KiB
Ruby
Raw Normal View History

2016-03-08 00:52:19 +00:00
# frozen_string_literal: true
2018-03-01 00:11:41 +00:00
require 'sinatra/base'
2015-05-20 20:08:24 +00:00
require 'tilt/erb'
require 'rack'
2009-12-19 10:52:08 +00:00
require 'yaml'
2009-11-04 22:32:35 +00:00
class TestApp < Sinatra::Base
class TestAppError < StandardError; end
class TestAppOtherError < StandardError
def initialize(string1, msg)
@something = string1
@message = msg
end
end
2009-11-05 16:35:45 +00:00
set :root, File.dirname(__FILE__)
set :static, true
set :raise_errors, true
set :show_exceptions, false
2009-11-04 22:32:35 +00:00
2017-07-04 22:14:55 +00:00
@@form_post_count = 0
# Also check lib/capybara/spec/views/*.erb for pages not listed here
2009-11-04 22:32:35 +00:00
get '/' do
2018-03-01 00:11:41 +00:00
response.set_cookie('capybara', value: 'root cookie', domain: request.host, path: request.path)
'Hello world! <a href="with_html">Relative</a>'
2009-11-04 22:32:35 +00:00
end
get '/foo' do
'Another World'
end
2009-11-12 17:58:27 +00:00
get '/redirect' do
redirect '/redirect_again'
end
get '/redirect_again' do
redirect '/landed'
end
get '/referer_base' do
2018-03-01 00:11:41 +00:00
'<a href="/get_referer">direct link</a>' \
'<a href="/redirect_to_get_referer">link via redirect</a>' \
'<form action="/get_referer" method="get"><input type="submit"></form>'
end
get '/redirect_to_get_referer' do
redirect '/get_referer'
end
get '/get_referer' do
request.referer.nil? ? "No referer" : "Got referer: #{request.referer}"
end
get '/host' do
"Current host is #{request.scheme}://#{request.host}:#{request.port}"
end
get '/redirect/:times/times' do
times = params[:times].to_i
if times.zero?
"redirection complete"
else
redirect "/redirect/#{times - 1}/times"
end
end
2009-11-12 17:58:27 +00:00
get '/landed' do
"You landed"
end
get '/with-quotes' do
2018-03-01 00:11:41 +00:00
%q("No," he said, "you can't do that.")
end
2009-11-24 20:32:25 +00:00
get '/form/get' do
'<pre id="results">' + params[:form].to_yaml + '</pre>'
2009-11-08 00:13:16 +00:00
end
post '/relative' do
'<pre id="results">' + params[:form].to_yaml + '</pre>'
end
2009-11-24 20:32:25 +00:00
get '/favicon.ico' do
nil
end
post '/redirect' do
redirect '/redirect_again'
end
delete "/delete" do
"The requested object was deleted"
end
get "/delete" do
"Not deleted"
end
2010-02-12 13:41:41 +00:00
get '/redirect_back' do
redirect back
end
2011-07-18 19:08:55 +00:00
get '/redirect_secure' do
redirect "https://#{request.host}:#{request.port}/host"
2011-07-18 19:08:55 +00:00
end
get '/slow_response' do
sleep 2
'Finally!'
end
get '/set_cookie' do
cookie_value = 'test_cookie'
response.set_cookie('capybara', cookie_value)
"Cookie set to #{cookie_value}"
end
get '/get_cookie' do
request.cookies['capybara']
end
get '/get_header' do
env['HTTP_FOO']
end
get '/get_header_via_redirect' do
redirect '/get_header'
end
get '/error' do
raise TestAppError, "some error"
end
get '/other_error' do
raise TestAppOtherError.new("something", "other error")
end
get '/load_error' do
raise LoadError
end
2015-04-14 19:46:00 +00:00
get '/with.*html' do
erb :with_html, locals: { referrer: request.referrer }
2015-04-14 19:46:00 +00:00
end
2010-02-12 13:41:41 +00:00
get '/:view' do |view|
erb view.to_sym, locals: { referrer: request.referrer }
2010-02-12 13:41:41 +00:00
end
2009-11-24 20:32:25 +00:00
post '/form' do
2017-07-04 22:14:55 +00:00
@@form_post_count += 1
2018-03-01 00:11:41 +00:00
'<pre id="results">' + params[:form].merge("post_count" => @@form_post_count).to_yaml + '</pre>'
2009-11-17 22:36:27 +00:00
end
2009-11-12 16:07:43 +00:00
post '/upload_empty' do
if params[:form][:file].nil?
'Successfully ignored empty file field.'
else
'Something went wrong.'
end
end
2009-11-12 16:07:43 +00:00
post '/upload' do
begin
buffer = []
buffer << "Content-type: #{params[:form][:document][:type]}"
buffer << "File content: #{params[:form][:document][:tempfile].read}"
buffer.join(' | ')
rescue
'No file uploaded'
end
2009-11-12 16:07:43 +00:00
end
post '/upload_multiple' do
begin
2018-03-01 00:11:41 +00:00
buffer = [params[:form][:multiple_documents].size.to_s]
params[:form][:multiple_documents].each do |doc|
buffer << "Content-type: #{doc[:type]}"
buffer << "File content: #{doc[:tempfile].read}"
end
buffer.join(' | ')
rescue
'No files uploaded'
end
end
2009-11-08 00:13:16 +00:00
end
2018-03-01 00:11:41 +00:00
Rack::Handler::Puma.run TestApp, Port: 8070 if $PROGRAM_NAME == __FILE__