root/trunk/tests/test_httpclient2.rb

Revision 668, 2.8 kB (checked in by blackhedd, 1 year ago)

migrated version_0 to trunk

  • Property svn:keywords set to Id
Line 
1 # $Id$
2 #
3 # Author:: Francis Cianfrocca (gmail: blackhedd)
4 # Homepage::  http://rubyeventmachine.com
5 # Date:: 8 April 2006
6 #
7 # See EventMachine and EventMachine::Connection for documentation and
8 # usage examples.
9 #
10 #----------------------------------------------------------------------------
11 #
12 # Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
13 # Gmail: blackhedd
14 #
15 # This program is free software; you can redistribute it and/or modify
16 # it under the terms of either: 1) the GNU General Public License
17 # as published by the Free Software Foundation; either version 2 of the
18 # License, or (at your option) any later version; or 2) Ruby's License.
19 #
20 # See the file COPYING for complete licensing information.
21 #
22 #---------------------------------------------------------------------------
23 #
24 #
25 #
26
27 $:.unshift "../lib"
28 require 'eventmachine'
29 require 'test/unit'
30
31 class TestHttpClient2 < Test::Unit::TestCase
32         Localhost = "127.0.0.1"
33         Localport = 9801
34
35         def setup
36         end
37
38         def teardown
39         end
40
41
42         class TestServer < EM::Connection
43         end
44
45         # #connect returns an object which has made a connection to an HTTP server
46         # and exposes methods for making HTTP requests on that connection.
47         # #connect can take either a pair of parameters (a host and a port),
48         # or a single parameter which is a Hash.
49         #
50         def test_connect
51                 EM.run {
52                         EM.start_server Localhost, Localport, TestServer
53                         http1 = EM::P::HttpClient2.connect Localhost, Localport
54                         http2 = EM::P::HttpClient2.connect( :host=>Localhost, :port=>Localport )
55                         EM.stop
56                 }
57         end
58
59
60         def test_bad_port
61                 EM.run {
62                         EM.start_server Localhost, Localport, TestServer
63                         assert_raise( ArgumentError ) {
64                                 EM::P::HttpClient2.connect Localhost, "xxx"
65                         }
66                         EM.stop
67                 }
68         end
69
70         def test_bad_server
71                 EM.run {
72                         http = EM::P::HttpClient2.connect Localhost, 9999
73                         d = http.get "/"
74                         d.errback {p d.internal_error; EM.stop }
75                 }
76         end
77
78         def test_get
79                 EM.run {
80                         http = EM::P::HttpClient2.connect "www.bayshorenetworks.com", 80
81                         d = http.get "/"
82                         d.callback {
83                                 p d.content
84                                 EM.stop
85                         }
86                 }
87         end
88
89         # Not a pipelined request because we wait for one response before we request the next.
90         def test_get_multiple
91                 EM.run {
92                         http = EM::P::HttpClient2.connect "www.bayshorenetworks.com", 80
93                         d = http.get "/"
94                         d.callback {
95                                 e = http.get "/"
96                                 e.callback {
97                                         p e.content
98                                         EM.stop
99                                 }
100                         }
101                 }
102         end
103
104         def test_get_pipeline
105                 EM.run {
106                         http = EM::P::HttpClient2.connect "www.microsoft.com", 80
107                         d = http.get("/")
108                         d.callback {
109                                 p d.headers
110                         }
111                         e = http.get("/")
112                         e.callback {
113                                 p e.headers
114                         }
115                         EM::Timer.new(1) {EM.stop}
116                 }
117         end
118
119
120         def test_authheader
121                 EM.run {
122                         EM.start_server Localhost, Localport, TestServer
123                         http = EM::P::HttpClient2.connect Localhost, 18842
124                         d = http.get :url=>"/", :authorization=>"Basic xxx"
125                         d.callback {EM.stop}
126                         d.errback {EM.stop}
127                 }
128         end
129
130
131 end
132
133
Note: See TracBrowser for help on using the browser.