spec/reel/connection_spec.rb in reel-0.1.0 vs spec/reel/connection_spec.rb in reel-0.2.0.pre
- old
+ new
@@ -4,11 +4,11 @@
let(:fixture_path) { File.expand_path("../../fixtures/example.txt", __FILE__) }
it "reads requests without bodies" do
with_socket_pair do |client, connection|
client << ExampleRequest.new.to_s
- request = connection.read_request
+ request = connection.request
request.url.should eq "/"
request.version.should eq "1.1"
request['Host'].should eq "www.example.com"
@@ -26,11 +26,11 @@
body = "Hello, world!"
example_request = ExampleRequest.new
example_request.body = body
client << example_request.to_s
- request = connection.read_request
+ request = connection.request
request.url.should eq "/"
request.version.should eq "1.1"
request['Content-Length'].should eq body.length.to_s
request.body.should eq example_request.body
@@ -38,26 +38,27 @@
end
it "serves static files" do
with_socket_pair do |client, connection|
client << ExampleRequest.new.to_s
- request = connection.read_request
+ request = connection.request
fixture_text = File.read(fixture_path)
File.open(fixture_path) do |file|
connection.respond :ok, file
+ connection.close
end
- response = client.readpartial(4096)
+ response = client.read(4096)
response[(response.length - fixture_text.length)..-1].should eq fixture_text
end
end
it "streams responses when transfer-encoding is chunked" do
with_socket_pair do |client, connection|
client << ExampleRequest.new.to_s
- request = connection.read_request
+ request = connection.request
# Sending transfer_encoding chunked without a body enables streaming mode
connection.respond :ok, :transfer_encoding => :chunked
# This will send individual chunks
@@ -79,22 +80,18 @@
fixture = "5#{crlf}Hello5#{crlf}World0#{crlf*2}"
response[(response.length - fixture.length)..-1].should eq fixture
end
end
- def with_socket_pair
- host = '127.0.0.1'
- port = 10103
+ it "reset the request after a response is sent" do
+ with_socket_pair do |client, connection|
+ example_request = ExampleRequest.new(:get, "/", "1.1", {'Connection' => 'close'})
+ client << example_request
- server = TCPServer.new(host, port)
- client = TCPSocket.new(host, port)
- peer = server.accept
+ connection.request.should_not be_false
- begin
- yield client, Reel::Connection.new(peer)
- ensure
- server.close rescue nil
- client.close rescue nil
- peer.close rescue nil
+ connection.respond :ok, "Response sent"
+
+ connection.request.should be_false
end
end
end