mirror of
https://gitea.invidious.io/iv-org/shard-kemal.git
synced 2024-08-15 00:53:36 +00:00
50 lines
1.3 KiB
Crystal
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
|