Crate grillon

source ·
Expand description

Grillon

Crates.io docs.rs GitHub Workflow Status

Grillon offers an elegant and natural way to approach API testing in Rust.

  • Elegant, intuitive and expressive API
  • Built-in testing functions
  • Extensible

Please note that the API is subject to a lot of changes until the v1.0.0.

Documentation

Getting started

This example uses Tokio as asynchronous runtime. Generally, testing libs are used in unit or integration tests. You can declare grillon as a dev-dependency.

Add grillon to Cargo.toml

[dev-dependencies]
grillon = "0.4.0"
tokio = { version = "1", features = ["macros"] }

Then use grillon :

use grillon::{dsl::*, dsl::http::*, json, Grillon, StatusCode, Result};
use grillon::header::{HeaderValue, CONTENT_LENGTH, CONTENT_TYPE};

#[tokio::test]
async fn end_to_end_test() -> Result<()> {
    Grillon::new("http://jsonplaceholder.typicode.com")?
        .post("posts")
        .payload(json!({
            "title": "foo",
            "body": "bar",
            "userId": 1
        }))
        .assert()
        .await
        .status(is_success())
        .status(is(201))
        .response_time(is_less_than(500))
        .json_body(is(json!({
            "id": 101,
        })))
        .headers(contains(vec![
        (
            CONTENT_TYPE,
            HeaderValue::from_static("application/json; charset=utf-8"),
        ),
        (
            CONTENT_LENGTH, HeaderValue::from_static("15")
        )]))
        .assert_fn(|assert| {
            assert!(!assert.headers.is_empty());
            assert!(assert.status == StatusCode::CREATED);
            assert!(assert.json.is_some());

            println!("Json response : {:#?}", assert.json);
        });

    Ok(())
}

Modules

The assert module provides everything to assert parts of http responses with built-in matchers.
Functionnality for asserting.
A domain-specific language organized into various modules providing built-in types and functions for performing declarative assertions.
HTTP header types
The request module provides everything to build http requests for endpoints under tests.
The response module provides everything to implement custom responses that can be asserted with Assert.

Macros

Construct a serde_json::Value from a JSON literal.

Structs

Assert uses an internal representation of the http response to assert against.
Top-level instance to configure a REST API http client.
The Request Method (VERB)
Represents an outgoing http request.
An HTTP status code (status-code in RFC 7230 et al.).

Enums

Represents the library errors.
The log settings to output test results.
Represents any valid JSON value.

Traits

A generic http response representation with convenience methods for subsequent assertions with Assert.

Type Definitions

Short hand for Result type.