Module: FakeWeb
- Defined in:
- lib/fake_web.rb,
lib/fake_web/utility.rb,
lib/fake_web/registry.rb,
lib/fake_web/response.rb,
lib/fake_web/responder.rb,
lib/fake_web/stub_socket.rb
Defined Under Namespace
Modules: Response, Utility Classes: MultipleMatchingURIsError, NetConnectNotAllowedError, Registry, Responder, StubSocket
Constant Summary collapse
- VERSION =
Returns the version string for the copy of FakeWeb you have loaded.
'1.2.8'
Class Method Summary collapse
-
.allow_net_connect=(allowed) ⇒ Object
Enables or disables real HTTP connections for requests that don’t match registered URIs.
-
.allow_net_connect? ⇒ Boolean
Returns
trueif requests to URIs not registered with FakeWeb are passed through to Net::HTTP for normal processing (the default). -
.clean_registry ⇒ Object
Resets the FakeWeb Registry.
-
.register_uri(*args) ⇒ Object
call-seq: FakeWeb.register_uri(method, uri, options).
-
.registered_uri?(*args) ⇒ Boolean
call-seq: FakeWeb.registered_uri?(method, uri).
-
.response_for(*args, &block) ⇒ Object
call-seq: FakeWeb.response_for(method, uri).
Class Method Details
.allow_net_connect=(allowed) ⇒ Object
Enables or disables real HTTP connections for requests that don’t match registered URIs.
If you set FakeWeb.allow_net_connect = false and subsequently try to make a request to a URI you haven’t registered with #register_uri, a NetConnectNotAllowedError will be raised. This is handy when you want to make sure your tests are self-contained, or want to catch the scenario when a URI is changed in implementation code without a corresponding test change.
When FakeWeb.allow_net_connect = true (the default), requests to URIs not stubbed with FakeWeb are passed through to Net::HTTP.
36 37 38 |
# File 'lib/fake_web.rb', line 36 def self.allow_net_connect=(allowed) @allow_net_connect = allowed end |
.allow_net_connect? ⇒ Boolean
Returns true if requests to URIs not registered with FakeWeb are passed through to Net::HTTP for normal processing (the default). Returns false if an exception is raised for these requests.
46 47 48 |
# File 'lib/fake_web.rb', line 46 def self.allow_net_connect? @allow_net_connect end |
.clean_registry ⇒ Object
Resets the FakeWeb Registry. This will force all subsequent web requests to behave as real requests.
20 21 22 |
# File 'lib/fake_web.rb', line 20 def self.clean_registry Registry.instance.clean_registry end |
.register_uri(*args) ⇒ Object
call-seq:
FakeWeb.register_uri(method, uri, )
Register requests using the HTTP method specified by the symbol method for uri to be handled according to options. If you specify the method :any, the response will be reigstered for any request for uri. uri can be a String, URI, or Regexp object. options must be either a Hash or an Array of Hashes (see below), which must contain one of these two keys:
:body-
A string which is used as the body of the response. If the string refers to a valid filesystem path, the contents of that file will be read and used as the body of the response instead. (This used to be two options,
:stringand:file, respectively. These are now deprecated.) :response-
Either an
Net::HTTPResponse, anIO, or aStringwhich is used as the full response for the request.The easier way by far is to pass the
:responseoption toregister_urias aStringor an (open for reads)IOobject which will be used as the complete HTTP response, including headers and body. If the string points to a readable file, this file will be used as the content for the request.To obtain a complete response document, you can use the
curlcommand, like so:curl -i http://www.example.com/ > response_for_www.example.comwhich can then be used in your test environment like so:
FakeWeb.register_uri(:get, 'http://www.example.com/', :response => 'response_for_www.example.com')See the
Net::HTTPResponsedocumentation for more information on creating custom response objects.
options may also be an Array containing a list of the above-described Hash. In this case, FakeWeb will rotate through each provided response, you may optionally provide:
:times-
The number of times this response will be used. Decremented by one each time it’s called. FakeWeb will use the final provided request indefinitely, regardless of its :times parameter.
Two optional arguments are also accepted:
:status-
Passing
:statusas a two-value array will set the response code and message. The defaults are200andOK, respectively. Example:FakeWeb.register_uri("http://www.example.com/", :body => "Go away!", :status => [404, "Not Found"]) :exception-
The argument passed via
:exceptionwill be raised when the specified URL is requested. AnyExceptionclass is valid. Example:FakeWeb.register_uri('http://www.example.com/', :exception => Net::HTTPError)
If you’re using the :body response type, you can pass additional options to specify the HTTP headers to be used in the response. Example:
FakeWeb.register_uri(:get, "http://example.com/index.txt", :body => "Hello", :content_type => "text/plain")
123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/fake_web.rb', line 123 def self.register_uri(*args) case args.length when 3 Registry.instance.register_uri(*args) when 2 print_missing_http_method_deprecation_warning(*args) Registry.instance.register_uri(:any, *args) else raise ArgumentError.new("wrong number of arguments (#{args.length} for 3)") end end |
.registered_uri?(*args) ⇒ Boolean
call-seq:
FakeWeb.registered_uri?(method, uri)
Returns true if a method request for uri is registered with FakeWeb. Specify a method of :any to check for against all HTTP methods.
156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/fake_web.rb', line 156 def self.registered_uri?(*args) case args.length when 2 Registry.instance.registered_uri?(*args) when 1 print_missing_http_method_deprecation_warning(*args) Registry.instance.registered_uri?(:any, *args) else raise ArgumentError.new("wrong number of arguments (#{args.length} for 2)") end end |
.response_for(*args, &block) ⇒ Object
call-seq:
FakeWeb.response_for(method, uri)
Returns the faked Net::HTTPResponse object associated with method and uri.
139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/fake_web.rb', line 139 def self.response_for(*args, &block) #:nodoc: :yields: response case args.length when 2 Registry.instance.response_for(*args, &block) when 1 print_missing_http_method_deprecation_warning(*args) Registry.instance.response_for(:any, *args, &block) else raise ArgumentError.new("wrong number of arguments (#{args.length} for 2)") end end |