Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Tree: 00f2debdab
Fetching contributors…

Cannot retrieve contributors at this time

129 lines (112 sloc) 2.957 kB
require 'em_test_helper'
class TestHttpClient2 < Test::Unit::TestCase
Localhost = "127.0.0.1"
Localport = 9801
def setup
end
def teardown
end
class TestServer < EM::Connection
end
# #connect returns an object which has made a connection to an HTTP server
# and exposes methods for making HTTP requests on that connection.
# #connect can take either a pair of parameters (a host and a port),
# or a single parameter which is a Hash.
#
def test_connect
EM.run {
EM.start_server Localhost, Localport, TestServer
silent do
EM::P::HttpClient2.connect Localhost, Localport
EM::P::HttpClient2.connect( :host=>Localhost, :port=>Localport )
end
EM.stop
}
end
def test_bad_port
EM.run {
EM.start_server Localhost, Localport, TestServer
assert_raises( ArgumentError ) {
silent { EM::P::HttpClient2.connect Localhost, "xxx" }
}
EM.stop
}
end
def test_bad_server
err = nil
EM.run {
http = silent { EM::P::HttpClient2.connect Localhost, 9999 }
d = http.get "/"
d.errback { err = true; d.internal_error; EM.stop }
}
assert(err)
end
def test_get
content = nil
EM.run {
http = silent { EM::P::HttpClient2.connect "google.com", 80 }
d = http.get "/"
d.callback {
content = d.content
EM.stop
}
}
assert(content)
end
# Not a pipelined request because we wait for one response before we request the next.
# XXX this test is broken because it sends the second request to the first connection
# XXX right before the connection closes
def _test_get_multiple
content = nil
EM.run {
http = silent { EM::P::HttpClient2.connect "google.com", 80 }
d = http.get "/"
d.callback {
e = http.get "/"
e.callback {
content = e.content
EM.stop
}
}
}
assert(content)
end
def test_get_pipeline
headers, headers2 = nil, nil
EM.run {
http = silent { EM::P::HttpClient2.connect "google.com", 80 }
d = http.get("/")
d.callback {
headers = d.headers
}
e = http.get("/")
e.callback {
headers2 = e.headers
}
EM.tick_loop { EM.stop if headers && headers2 }
EM.add_timer(1) { EM.stop }
}
assert(headers)
assert(headers2)
end
def test_authheader
EM.run {
EM.start_server Localhost, Localport, TestServer
http = silent { EM::P::HttpClient2.connect Localhost, 18842 }
d = http.get :url=>"/", :authorization=>"Basic xxx"
d.callback {EM.stop}
d.errback {EM.stop}
}
end
def test_https_get
d = nil
EM.run {
http = silent { EM::P::HttpClient2.connect :host => 'www.apple.com', :port => 443, :ssl => true }
d = http.get "/"
d.callback {
EM.stop
}
}
assert_equal(200, d.status)
end if EM.ssl?
end
Jump to Line
Something went wrong with that request. Please try again.