iron-test 0.0.4

Mocking suite for Iron requests.
docs.rs failed to build iron-test-0.0.4
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: iron-test-0.6.0

Iron Test

A suite of constructors for Iron Request's and Response's for testing.

Example

#[test] fn test_new() {
    let req = request::new(method::Get, "localhost:3000");
    assert_eq!(req.method, method::Get);
    assert_eq!(req.url.serialize().as_slice(), "http://localhost:3000/");
}

API

Request

request::new<S: Str>(method: method::Method, host: S) -> Request

Create a new request at / on the specified host with the specified method.

Ex:

let req = request::new(method::Get, "localhost:3000");
assert_eq!(req.method, method::Get);
assert_eq!(req.url.serialize().as_slice(), "http://localhost:3000/");

request::at(method: method::Method, path: url::Url) -> Request

Create a new request at the specific Url with the specified method.

Ex:

let req = request::at(method::Post, Url::parse("http://www.google.com/").unwrap());
assert_eq!(req.method, method::Post);
assert_eq!(req.url.serialize().as_slice(), "http://www.google.com/");

request::at_with<S: Str>(method: method::Method, path: url::Url, body: S) -> Request

Create a new request at the specified Url with the specified method and the specified content as the body of the request.

Ex:

let req = request::at_with(method::Put, Url::parse("http://www.google.com/").unwrap(), "Hello Google!");
assert_eq!(req.method, method::Put);
assert_eq!(req.url.serialize().as_slice(), "http://www.google.com/");
assert_eq!(req.body.as_slice(), "Hello Google!");

Response

response::new() -> Response

Create a new, blank, response.

Ex:

let mut res = response::new();
assert_eq!(res.status, None);
assert_eq!(res.body.read_to_string().unwrap().as_slice(), "");

response::with<B: BytesContainer>(status: status::Status, body: B) -> Response

Create a new response with the specified body and status.

Ex:

let mut res = response::with(status::Ok, "Hello World!");
assert_eq!(res.status, Some(status::Ok));
assert_eq!(res.body.read_to_string().unwrap().as_slice(), "Hello World!");

Creating project layout for tests

Sometimes it is useful to have a predefined directory layout with specific files in it. You can easily create a simple project directory using a ProjectBuilder.

Ex:

use iron_test::ProjectBuilder;

#[test]
fn test_a() {
  let builder = ProjectBuilder::new("foo")
    .file("index.html", "<html><h2>hello</h2></html>")
    .file("main.css", "body{font-family: Verdana}");
  builder.build();

  // At this point you will have your project directory in:
  // target/iron-integration-tests/test-<N>/foo/
}

To access current project root, use p.root().

ProjectBuilder implements Drop and will clean up the project when it is dropped.

Author

Jonathan Reem

Get Help

Come find us on #iron or #rust on irc.mozilla.net

License

MIT