stubr 0.6.2

Wiremock implemented in Rust
Documentation
use crate::{
    model::response::{body::BodyStub, headers::HttpRespHeadersStub, ResponseStub},
    record::RecordInput,
};

pub mod body;
pub mod headers;

impl From<RecordInput<'_>> for ResponseStub {
    fn from((ex, cfg): RecordInput) -> Self {
        Self {
            status: Some(ex.resp().status().into()),
            body: BodyStub::from(&mut *ex),
            headers: HttpRespHeadersStub::from((&mut *ex, cfg)),
            transformers: vec![],
            fixed_delay_milliseconds: None,
            delay_distribution: None,
        }
    }
}

#[cfg(test)]
mod status_mapping_tests {
    use http_types::Response;

    use crate::{
        record::{RecordedExchange, RecordedResponse},
        RecordConfig,
    };

    use super::*;

    #[test]
    fn should_map_200_status() {
        let resp = Response::new(200);
        let mut exchange = RecordedExchange {
            1: RecordedResponse(resp),
            ..Default::default()
        };
        assert_eq!(ResponseStub::from((&mut exchange, &RecordConfig::default())).status, Some(200))
    }

    #[test]
    fn should_map_400_status() {
        let resp = Response::new(400);
        let mut exchange = RecordedExchange {
            1: RecordedResponse(resp),
            ..Default::default()
        };
        assert_eq!(ResponseStub::from((&mut exchange, &RecordConfig::default())).status, Some(400))
    }

    #[test]
    fn should_map_500_status() {
        let resp = Response::new(500);
        let mut exchange = RecordedExchange {
            1: RecordedResponse(resp),
            ..Default::default()
        };
        assert_eq!(ResponseStub::from((&mut exchange, &RecordConfig::default())).status, Some(500))
    }
}