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 UnsafeUnpin 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