kemal/spec/spec_helper.cr

58 lines
1.3 KiB
Crystal

require "spec"
require "../src/*"
include Kemal
class CustomTestHandler < HTTP::Handler
def call(request)
call_next request
end
end
class CustomLogHandler < Kemal::BaseLogHandler; end
def create_request_and_return_io(handler, request)
io = MemoryIO.new
response = HTTP::Server::Response.new(io)
context = HTTP::Server::Context.new(request, response)
handler.call(context)
response.close
io.rewind
io
end
def create_ws_request_and_return_io(handler, request)
io = MemoryIO.new
response = HTTP::Server::Response.new(io)
context = HTTP::Server::Context.new(request, response)
begin
handler.call context
rescue IO::Error
# Raises because the MemoryIO is empty
end
response.close
io
end
def call_request_on_app(request)
io = MemoryIO.new
response = HTTP::Server::Response.new(io)
context = HTTP::Server::Context.new(request, response)
Kemal::RouteHandler::INSTANCE.call(context)
response.close
io.rewind
HTTP::Client::Response.from_io(io, decompress: false)
end
Spec.before_each do
config = Kemal.config
config.env = "development"
config.setup
config.add_handler Kemal::RouteHandler::INSTANCE
end
Spec.after_each do
Kemal.config.handlers.clear
Kemal::RouteHandler::INSTANCE.tree = Radix::Tree(Route).new
end