pub mod header;
pub mod metadata;
pub mod status_code;
#[cfg(test)]
pub(crate) mod tests {
use bytes::Bytes;
use http::{HeaderMap, StatusCode};
use parlov_core::{
DifferentialSet, NormativeStrength, OracleClass, ProbeDefinition, ProbeExchange,
ResponseSurface, Technique, Vector,
};
pub fn fake_exchange(status: u16) -> ProbeExchange {
ProbeExchange {
request: ProbeDefinition {
url: "http://test/resource/1".to_string(),
method: http::Method::GET,
headers: HeaderMap::new(),
body: None,
},
response: ResponseSurface {
status: StatusCode::from_u16(status).expect("valid status"),
headers: HeaderMap::new(),
body: Bytes::new(),
timing_ns: 0,
},
}
}
pub fn fake_exchange_with_headers(status: u16, headers: HeaderMap) -> ProbeExchange {
ProbeExchange {
request: ProbeDefinition {
url: "http://test/resource/1".to_string(),
method: http::Method::GET,
headers: HeaderMap::new(),
body: None,
},
response: ResponseSurface {
status: StatusCode::from_u16(status).expect("valid status"),
headers,
body: Bytes::new(),
timing_ns: 0,
},
}
}
pub fn status_code_diff_technique() -> Technique {
Technique {
id: "test-status-diff",
name: "Test status code diff",
oracle_class: OracleClass::Existence,
vector: Vector::StatusCodeDiff,
strength: NormativeStrength::Must,
}
}
pub fn single_diff_set(baseline_status: u16, probe_status: u16) -> DifferentialSet {
DifferentialSet {
baseline: vec![fake_exchange(baseline_status)],
probe: vec![fake_exchange(probe_status)],
technique: status_code_diff_technique(),
}
}
pub fn diff_set_with_statuses(baseline: &[u16], probe: &[u16]) -> DifferentialSet {
DifferentialSet {
baseline: baseline.iter().map(|&s| fake_exchange(s)).collect(),
probe: probe.iter().map(|&s| fake_exchange(s)).collect(),
technique: status_code_diff_technique(),
}
}
pub fn single_diff_set_with_headers(
baseline_status: u16,
probe_status: u16,
baseline_headers: HeaderMap,
probe_headers: HeaderMap,
) -> DifferentialSet {
DifferentialSet {
baseline: vec![fake_exchange_with_headers(baseline_status, baseline_headers)],
probe: vec![fake_exchange_with_headers(probe_status, probe_headers)],
technique: status_code_diff_technique(),
}
}
pub fn single_diff_set_with_baseline_headers(
baseline_status: u16,
probe_status: u16,
baseline_headers: HeaderMap,
) -> DifferentialSet {
DifferentialSet {
baseline: vec![fake_exchange_with_headers(baseline_status, baseline_headers)],
probe: vec![fake_exchange(probe_status)],
technique: status_code_diff_technique(),
}
}
}