shard-kemal/spec/application_mode_spec.cr

50 lines
1.3 KiB
Crystal

require "./spec_helper"
private class MyApp < Kemal::Application
get "/route1" do |env|
"Route 1"
end
get "/route2" do |env|
"Route 2"
end
get "/file" do |env|
send_file env, "Serdar".to_slice
end
end
describe MyApp do
it "matches the correct route" do
request = HTTP::Request.new("GET", "/route2")
client_response = call_request_on_app(MyApp.new, request)
client_response.body.should eq("Route 2")
end
it "doesn't allow a route declaration start without /" do
expect_raises Kemal::Exceptions::InvalidPathStartException, "Route declaration get \"route\" needs to start with '/', should be get \"/route\"" do
MyApp.new.get "route" do |env|
"Route 1"
end
end
end
it "sends file with binary stream" do
request = HTTP::Request.new("GET", "/file")
response = call_request_on_app(MyApp.new, request)
response.status_code.should eq(200)
response.headers["Content-Type"].should eq("application/octet-stream")
response.headers["Content-Length"].should eq("6")
end
it "responds to delayed route" do
app = MyApp.new
app.setup
app.get "/delayed" do |env|
"Happy addition!"
end
request = HTTP::Request.new("GET", "/delayed")
client_response = call_request_on_app(app, request)
client_response.body.should eq("Happy addition!")
end
end