apirquest_core

Crates.ioapirquest_core
lib.rsapirquest_core
version
sourcesrc
created_at2025-03-09 20:45:35.523578+00
updated_at2025-03-30 16:54:17.732749+00
descriptionApiRquest is a library for testing Api Rest. Written in Rust, it allows you to use the Rhai scripting language to increase test flexibility. It uses Gherkin syntax for test scenarios.
homepage
repositoryhttps://gitlab.com/denix190/apirquest
max_upload_size
id1585838
Cargo.toml error:TOML parse error at line 17, column 1 | 17 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
(denix190)

documentation

https://gitlab.com/denix190/apirquest

README

ApiRquest_core

ApiRquest is a a library for testing Api Rest. Written in Rust, it allows you to use the Rhai scripting language to increase test flexibility. It uses Gherkin syntax for test scenarios.

Features

Example

Feature:  api.restful-api.dev

Background:
    # Use for command line
    # https://restful-api.dev/
    * def url = https://api.restful-api.dev
    * def load read_rhai("scripts_rhai/scripts.rhai")

@scenario_get
Scenario: get
    # Recovery of all items
    Given path /objects
    And header content-type: application/json
    And request
"""
"""
    When method get
    Then status 200
    And print "Response.response: ${response}"

@scenario_unknown_url
Scenario: Unknown url
    Given path /objectsx
    And header content-type: application/json
    And request
"""
"""
    When method get
    Then status 404
    And print "Response.response: ${response}"
    And match ${response} == {"timestamp":"#string","status": 404,"error":"Not Found","path":"/objectsx"}

Scripting with Rhai

ApiRquest use Rhai for scripting scenario.

Predefined variables

Variables can be used in Rhai scripts

Variable Description Example
status code status http 200
headers list of http request headers (map) #{"content-length": "105", "content-type": "application/json", "date": "Fri, 24 Jan 2025 20:58:48 GMT", "server": "Rocket"}
response The http response (string) {"date_event":"2025-01-24 20:55:00","temperature":20.05316,"humidite":60.10489,"sensor_name":"legardien"}
request_duration_millis Query duration in milliseconds (u128) 80

.Define the rhai script to load

    * def url = https://api.restful-api.dev
    * def load read_rhai("scripts_rhai/scripts.rhai")

.Call a function with a parameter

# index retrieval (id)
# Call a function with a parameter
And call id = get_json_field ${response} "id"

The id variable can be reused later in the delete operation.

.Path with a parameter

   And print "Delete ${id}"
   Given path /objects/${id}

Include ApiRquest in yours tests

use log::{debug, error};
use apirquest_core::Runner;

fn main() {
    log4rs::init_file("config/log4rs.yaml", Default::default()).unwrap();
    debug!("runner: apiRquest");
    debug!("Load script file: ../../features/api_restful_api.feature");
    let mut runner = Runner::new("./features/api_restful_api.feature".to_string());
    runner.tags(vec!["@scenario_get"]);
    let r = runner.run();

    r.unwrap_or_else(|e| error!("Error: {}", e))
}

Using ApiRquest in a Cargo project

You can use apiRquest in your project to test your apirest.

Commit count: 0

cargo fmt