aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/gems/fakeweb-1.3.0/README.rdoc
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gems/fakeweb-1.3.0/README.rdoc')
-rw-r--r--vendor/gems/fakeweb-1.3.0/README.rdoc189
1 files changed, 189 insertions, 0 deletions
diff --git a/vendor/gems/fakeweb-1.3.0/README.rdoc b/vendor/gems/fakeweb-1.3.0/README.rdoc
new file mode 100644
index 000000000..33115325b
--- /dev/null
+++ b/vendor/gems/fakeweb-1.3.0/README.rdoc
@@ -0,0 +1,189 @@
+= FakeWeb
+
+FakeWeb is a helper for faking web requests in Ruby. It works at a global
+level, without modifying code or writing extensive stubs.
+
+
+== Installation
+
+ gem install fakeweb
+
+Note: the gem was previously available as +FakeWeb+ (capital letters), but now
+all versions are simply registered as +fakeweb+. If you have any old +FakeWeb+
+gems lying around, remove them: <tt>gem uninstall FakeWeb</tt>
+
+
+== Help and discussion
+
+RDocs for the current release are available at http://fakeweb.rubyforge.org.
+
+There's a mailing list for questions and discussion at
+http://groups.google.com/group/fakeweb-users.
+
+The main source repository is http://github.com/chrisk/fakeweb.
+
+== Examples
+
+Start by requiring FakeWeb:
+
+ require 'fakeweb'
+
+=== Registering basic string responses
+
+ FakeWeb.register_uri(:get, "http://example.com/test1", :body => "Hello World!")
+
+ Net::HTTP.get(URI.parse("http://example.com/test1"))
+ => "Hello World!"
+
+ Net::HTTP.get(URI.parse("http://example.com/test2"))
+ => FakeWeb is bypassed and the response from a real request is returned
+
+You can also call <tt>register_uri</tt> with a regular expression, to match
+more than one URI.
+
+ FakeWeb.register_uri(:get, %r|http://example\.com/|, :body => "Hello World!")
+
+ Net::HTTP.get(URI.parse("http://example.com/test3"))
+ => "Hello World!"
+
+=== Replaying a recorded response
+
+ page = `curl -is http://www.google.com/`
+ FakeWeb.register_uri(:get, "http://www.google.com/", :response => page)
+
+ Net::HTTP.get(URI.parse("http://www.google.com/"))
+ # => Full response, including headers
+
+=== Adding a custom status to the response
+
+ FakeWeb.register_uri(:get, "http://example.com/", :body => "Nothing to be found 'round here",
+ :status => ["404", "Not Found"])
+
+ Net::HTTP.start("example.com") do |req|
+ response = req.get("/")
+ response.code # => "404"
+ response.message # => "Not Found"
+ response.body # => "Nothing to be found 'round here"
+ end
+
+=== Responding to any HTTP method
+
+ FakeWeb.register_uri(:any, "http://example.com", :body => "response for any HTTP method")
+
+If you use the <tt>:any</tt> symbol, the URI you specify will be completely
+stubbed out (regardless of the HTTP method of the request). This can be useful
+for RPC-style services, where the HTTP method isn't significant. (Older
+versions of FakeWeb always behaved like this, and didn't accept the first
++method+ argument above; this syntax is now deprecated.)
+
+=== Rotating responses
+
+You can optionally call <tt>FakeWeb.register_uri</tt> with an array of options
+hashes; these are used, in order, to respond to repeated requests. Once you run
+out of responses, further requests always receive the last response. (You can
+also send a response more than once before rotating, by specifying a
+<tt>:times</tt> option for that response.)
+
+ FakeWeb.register_uri(:delete, "http://example.com/posts/1",
+ [{:body => "Post 1 deleted.", :status => ["200", "OK"]},
+ {:body => "Post not found", :status => ["404", "Not Found"]}])
+
+ Net::HTTP.start("example.com") do |req|
+ req.delete("/posts/1").body # => "Post 1 deleted"
+ req.delete("/posts/1").body # => "Post not found"
+ req.delete("/posts/1").body # => "Post not found"
+ end
+
+=== Using HTTP basic authentication
+
+You can fake requests that use basic authentication by adding +userinfo+ strings
+to your URIs:
+
+ FakeWeb.register_uri(:get, "http://example.com/secret", :body => "Unauthorized", :status => ["401", "Unauthorized"])
+ FakeWeb.register_uri(:get, "http://user:pass@example.com/secret", :body => "Authorized")
+
+ Net::HTTP.start("example.com") do |http|
+ req = Net::HTTP::Get.new("/secret")
+ http.request(req) # => "Unauthorized"
+ req.basic_auth("user", "pass")
+ http.request(req) # => "Authorized"
+ end
+
+=== Clearing registered URIs
+
+The FakeWeb registry is a singleton that lasts for the duration of your program,
+maintaining every fake response you register. If needed, you can clean out the
+registry and remove all registered URIs:
+
+ FakeWeb.clean_registry
+
+=== Blocking all real requests
+
+When you're using FakeWeb to replace _all_ of your requests, it's useful to
+catch when requests are made for unregistered URIs (unlike the default
+behavior, which is to pass those requests through to Net::HTTP as usual).
+
+ FakeWeb.allow_net_connect = false
+ Net::HTTP.get(URI.parse("http://example.com/"))
+ => raises FakeWeb::NetConnectNotAllowedError
+
+ FakeWeb.allow_net_connect = true
+ Net::HTTP.get(URI.parse("http://example.com/"))
+ => FakeWeb is bypassed and the response from a real request is returned
+
+It's recommended that you set <tt>FakeWeb.allow_net_connect = false</tt> in the
+setup for your tests.
+
+==== Allowing requests to a specific server
+
+If you want to prevent your tests from hitting the internet while allowing
+access to a specific server for integration testing, you can assign a URI or
++Regexp+ to be used as a whitelist for outbound requests:
+
+ FakeWeb.allow_net_connect = %r[^https?://localhost]
+ Net::HTTP.get(URI.parse("http://localhost/path")) # => allowed
+ Net::HTTP.get(URI.parse("http://example.com/")) # => raises FakeWeb::NetConnectNotAllowedError
+
+=== Specifying HTTP response headers
+
+When you register a response using the <tt>:body</tt> option, you're only
+setting the body of the response. If you want to add headers to these responses,
+simply add the header as an option to +register_uri+:
+
+ FakeWeb.register_uri(:get, "http://example.com/hello.txt", :body => "Hello", :content_type => "text/plain")
+
+This sets the "Content-Type" header in the response.
+
+=== Checking the last request
+
+It's often useful to retrieve the last request made by your code, so you can
+write tests for its content. FakeWeb keeps track of the last request, whether it
+was stubbed or not:
+
+ Net::HTTP.get(URI.parse("http://example.com"))
+ FakeWeb.last_request # => Net::HTTP::Get request object
+
+== More info
+
+FakeWeb lets you decouple your test environment from live services without
+modifying code or writing extensive stubs.
+
+In addition to the conceptual advantage of having idempotent request
+behaviour, FakeWeb makes tests run faster than if they were made to remote (or
+even local) web servers. It also makes it possible to run tests without a
+network connection or in situations where the server is behind a firewall or
+has host-based access controls.
+
+FakeWeb works with anything based on Net::HTTP--both higher-level wrappers,
+like OpenURI, as well as a ton of libraries for popular web services.
+
+
+== Known Issues
+
+* Request bodies are ignored, including PUT and POST parameters. If you need
+ different responses for different request bodies, you need to request
+ different URLs, and register different responses for each. (Query strings are
+ fully supported, though.) We're currently considering how the API should
+ change to add support for request bodies in 1.3.0. Your input would be really
+ helpful: see http://groups.google.com/group/fakeweb-users/browse_thread/thread/44d190a6b12e4273
+ for a discussion of some different options. Thanks!