pub struct FlowStep {
pub operation: String,
pub extract: Vec<ExtractField>,
pub use_values: HashMap<String, String>,
pub use_body: Option<String>,
pub merge_body: HashMap<String, Value>,
pub inject_attacks: bool,
pub attack_types: Vec<String>,
pub description: Option<String>,
}Expand description
A single step in a CRUD flow
Fields§
§operation: StringThe operation identifier (e.g., “POST /users” or operation_id)
extract: Vec<ExtractField>Fields to extract from the response (for subsequent steps) Supports multiple formats:
- Simple: “uuid” (extracts uuid, stores as uuid)
- Aliased: {field: “uuid”, as: “pool_uuid”} (extracts uuid, stores as pool_uuid)
- Full body: {body: true, as: “vs_body”, exclude: [“_last_modified”]}
use_values: HashMap<String, String>Mapping of path/body variables to extracted values Key: variable name in request, Value: extracted field name
use_body: Option<String>Use a previously extracted body as the request body for this step The value should match the ‘as’ name from a previous body extraction
merge_body: HashMap<String, Value>Merge/override fields in the extracted body before sending Works with use_body to modify specific fields in the extracted body Example: merge_body: {enabled: false, name: “updated-name”}
inject_attacks: boolInject security attack payloads into this step’s request When true, security payloads from wafbench or configured attacks will be injected
attack_types: Vec<String>Specific attack types to inject (if not all) Examples: “sqli”, “xss”, “rce”, “lfi”
description: Option<String>Optional description for this step
Implementations§
Source§impl FlowStep
impl FlowStep
Sourcepub fn with_extract(self, fields: Vec<String>) -> Self
pub fn with_extract(self, fields: Vec<String>) -> Self
Add fields to extract from response (simple field names)
Sourcepub fn with_extract_fields(self, fields: Vec<ExtractField>) -> Self
pub fn with_extract_fields(self, fields: Vec<ExtractField>) -> Self
Add fields to extract with aliases
Sourcepub fn with_values(self, values: HashMap<String, String>) -> Self
pub fn with_values(self, values: HashMap<String, String>) -> Self
Add value mappings for this step
Sourcepub fn with_use_body(self, body_name: String) -> Self
pub fn with_use_body(self, body_name: String) -> Self
Use a previously extracted body as the request body
Sourcepub fn with_merge_body(self, merge: HashMap<String, Value>) -> Self
pub fn with_merge_body(self, merge: HashMap<String, Value>) -> Self
Merge/override fields in the extracted body
Sourcepub fn with_inject_attacks(self, inject: bool) -> Self
pub fn with_inject_attacks(self, inject: bool) -> Self
Enable security attack injection for this step
Sourcepub fn with_attack_types(self, types: Vec<String>) -> Self
pub fn with_attack_types(self, types: Vec<String>) -> Self
Specify which attack types to inject
Sourcepub fn with_description(self, description: String) -> Self
pub fn with_description(self, description: String) -> Self
Add a description
Trait Implementations§
Source§impl<'de> Deserialize<'de> for FlowStep
impl<'de> Deserialize<'de> for FlowStep
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for FlowStep
impl RefUnwindSafe for FlowStep
impl Send for FlowStep
impl Sync for FlowStep
impl Unpin for FlowStep
impl UnwindSafe for FlowStep
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more