Crates.io | apirquest_core |
lib.rs | apirquest_core |
version | |
source | src |
created_at | 2025-03-09 20:45:35.523578+00 |
updated_at | 2025-03-30 16:54:17.732749+00 |
description | ApiRquest 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 | |
repository | https://gitlab.com/denix190/apirquest |
max_upload_size | |
id | 1585838 |
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` |
size | 0 |
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.
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"}
ApiRquest use Rhai for scripting scenario.
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))
}
You can use apiRquest in your project to test your apirest.