mirror of
https://github.com/microsoft/onefuzz.git
synced 2025-06-18 04:38:09 +00:00
move to wiremock for testing (#971)
This commit is contained in:
205
src/agent/Cargo.lock
generated
205
src/agent/Cargo.lock
generated
@ -64,6 +64,23 @@ version = "0.4.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f0ffd3d69bd89910509a5d31d1f1353f38ccffdd116dd0099bbd6627f7bd8ad8"
|
||||
|
||||
[[package]]
|
||||
name = "arrayvec"
|
||||
version = "0.5.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
|
||||
|
||||
[[package]]
|
||||
name = "async-channel"
|
||||
version = "1.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319"
|
||||
dependencies = [
|
||||
"concurrent-queue",
|
||||
"event-listener",
|
||||
"futures-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-trait"
|
||||
version = "0.1.50"
|
||||
@ -169,6 +186,12 @@ version = "1.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040"
|
||||
|
||||
[[package]]
|
||||
name = "cache-padded"
|
||||
version = "1.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba"
|
||||
|
||||
[[package]]
|
||||
name = "cassowary"
|
||||
version = "0.3.0"
|
||||
@ -221,6 +244,26 @@ dependencies = [
|
||||
"vec_map",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "concurrent-queue"
|
||||
version = "1.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3"
|
||||
dependencies = [
|
||||
"cache-padded",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "config"
|
||||
version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "19b076e143e1d9538dde65da30f8481c2a6c44040edb8e02b9bf1351edb92ce3"
|
||||
dependencies = [
|
||||
"lazy_static",
|
||||
"nom",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
version = "0.9.1"
|
||||
@ -338,6 +381,16 @@ dependencies = [
|
||||
"scopeguard",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-queue"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9b10ddc024425c88c2ad148c1b0fd53f4c6d38db9697c9f1588381212fa657c9"
|
||||
dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
"crossbeam-utils 0.8.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-utils"
|
||||
version = "0.7.2"
|
||||
@ -404,6 +457,26 @@ dependencies = [
|
||||
"winapi 0.3.9",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "data-encoding"
|
||||
version = "2.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57"
|
||||
|
||||
[[package]]
|
||||
name = "deadpool"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3d126179d86aee4556e54f5f3c6bf6d9884e7cc52cef82f77ee6f90a7747616d"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"config",
|
||||
"crossbeam-queue",
|
||||
"num_cpus",
|
||||
"serde",
|
||||
"tokio 1.6.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "debugger"
|
||||
version = "0.1.0"
|
||||
@ -513,12 +586,27 @@ dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "event-listener"
|
||||
version = "2.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59"
|
||||
|
||||
[[package]]
|
||||
name = "fallible-iterator"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
|
||||
|
||||
[[package]]
|
||||
name = "fastrand"
|
||||
version = "1.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "77b705829d1e87f762c2df6da140b26af5839e1033aa84aa5f56bb688e4e1bdb"
|
||||
dependencies = [
|
||||
"instant",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "filetime"
|
||||
version = "0.2.14"
|
||||
@ -703,6 +791,21 @@ version = "0.3.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "acc499defb3b348f8d8f3f66415835a9131856ff7714bf10dadfc4ec4bdb29a1"
|
||||
|
||||
[[package]]
|
||||
name = "futures-lite"
|
||||
version = "1.12.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48"
|
||||
dependencies = [
|
||||
"fastrand",
|
||||
"futures-core",
|
||||
"futures-io",
|
||||
"memchr",
|
||||
"parking",
|
||||
"pin-project-lite 0.2.6",
|
||||
"waker-fn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-macro"
|
||||
version = "0.3.15"
|
||||
@ -728,6 +831,12 @@ version = "0.3.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a16bef9fc1a4dddb5bee51c989e3fbba26569cbb0e31f5b303c184e3dd33dae"
|
||||
|
||||
[[package]]
|
||||
name = "futures-timer"
|
||||
version = "3.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c"
|
||||
|
||||
[[package]]
|
||||
name = "futures-util"
|
||||
version = "0.3.15"
|
||||
@ -918,6 +1027,27 @@ dependencies = [
|
||||
"pin-project-lite 0.2.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "http-types"
|
||||
version = "2.11.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ad077d89137cd3debdce53c66714dc536525ef43fe075d41ddc0a8ac11f85957"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-channel",
|
||||
"base64",
|
||||
"futures-lite",
|
||||
"http",
|
||||
"infer",
|
||||
"pin-project-lite 0.2.6",
|
||||
"rand 0.7.3",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"serde_qs",
|
||||
"serde_urlencoded",
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "httparse"
|
||||
version = "1.4.1"
|
||||
@ -1047,6 +1177,12 @@ dependencies = [
|
||||
"hashbrown",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "infer"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac"
|
||||
|
||||
[[package]]
|
||||
name = "inotify"
|
||||
version = "0.7.1"
|
||||
@ -1146,6 +1282,19 @@ version = "1.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
|
||||
|
||||
[[package]]
|
||||
name = "lexical-core"
|
||||
version = "0.7.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe"
|
||||
dependencies = [
|
||||
"arrayvec",
|
||||
"bitflags",
|
||||
"cfg-if 1.0.0",
|
||||
"ryu",
|
||||
"static_assertions",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.95"
|
||||
@ -1402,6 +1551,17 @@ dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nom"
|
||||
version = "5.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af"
|
||||
dependencies = [
|
||||
"lexical-core",
|
||||
"memchr",
|
||||
"version_check",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "notify"
|
||||
version = "4.0.17"
|
||||
@ -1651,6 +1811,12 @@ dependencies = [
|
||||
"winapi 0.3.9",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72"
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot"
|
||||
version = "0.11.1"
|
||||
@ -2152,6 +2318,7 @@ dependencies = [
|
||||
"onefuzz-telemetry",
|
||||
"reqwest 0.11.3",
|
||||
"tokio 1.6.1",
|
||||
"wiremock",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -2305,6 +2472,18 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_qs"
|
||||
version = "0.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5af82de3c6549b001bec34961ff2d6a54339a87bab37ce901b693401f27de6cb"
|
||||
dependencies = [
|
||||
"data-encoding",
|
||||
"percent-encoding",
|
||||
"serde",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_urlencoded"
|
||||
version = "0.7.0"
|
||||
@ -2955,6 +3134,12 @@ version = "0.9.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
|
||||
|
||||
[[package]]
|
||||
name = "waker-fn"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca"
|
||||
|
||||
[[package]]
|
||||
name = "walkdir"
|
||||
version = "2.3.2"
|
||||
@ -3139,6 +3324,26 @@ dependencies = [
|
||||
"winapi 0.3.9",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wiremock"
|
||||
version = "0.5.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3deed3c6d9aba42c805725854efc01823f59a00cd3af7763c433962227a843c8"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"deadpool",
|
||||
"futures",
|
||||
"futures-timer",
|
||||
"http-types",
|
||||
"hyper 0.14.8",
|
||||
"log",
|
||||
"once_cell",
|
||||
"regex",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tokio 1.6.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ws2_32-sys"
|
||||
version = "0.2.1"
|
||||
|
@ -15,3 +15,4 @@ reqwest = { version = "0.11.3", features = ["json", "stream"] }
|
||||
|
||||
[dev-dependencies]
|
||||
tokio = { version = "1.5.0", features = ["macros"] }
|
||||
wiremock = "0.5"
|
||||
|
@ -175,6 +175,25 @@ impl SendRetry for reqwest::RequestBuilder {
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::*;
|
||||
use wiremock::matchers::path;
|
||||
use wiremock::{Mock, MockServer, ResponseTemplate};
|
||||
|
||||
async fn build_server() -> Result<MockServer> {
|
||||
let server = MockServer::start().await;
|
||||
server
|
||||
.register(Mock::given(path("/200")).respond_with(ResponseTemplate::new(200)))
|
||||
.await;
|
||||
server
|
||||
.register(Mock::given(path("/400")).respond_with(ResponseTemplate::new(400)))
|
||||
.await;
|
||||
server
|
||||
.register(Mock::given(path("/401")).respond_with(ResponseTemplate::new(401)))
|
||||
.await;
|
||||
server
|
||||
.register(Mock::given(path("/404")).respond_with(ResponseTemplate::new(404)))
|
||||
.await;
|
||||
Ok(server)
|
||||
}
|
||||
|
||||
fn always_fail(_: StatusCode) -> RetryCheck {
|
||||
RetryCheck::Fail
|
||||
@ -189,8 +208,9 @@ mod test {
|
||||
|
||||
#[tokio::test]
|
||||
async fn retry_success() -> Result<()> {
|
||||
let server = build_server().await?;
|
||||
reqwest::Client::new()
|
||||
.get("https://httpstat.us/200")
|
||||
.get(format!("{}/200", &server.uri()))
|
||||
.send_retry_default()
|
||||
.await?
|
||||
.error_for_status()?;
|
||||
@ -199,15 +219,15 @@ mod test {
|
||||
|
||||
#[tokio::test]
|
||||
async fn retry_socket_failure() -> Result<()> {
|
||||
let invalid_url = "http://127.0.0.1:81/test.txt";
|
||||
let server = build_server().await?;
|
||||
let resp = reqwest::Client::new()
|
||||
.get(invalid_url)
|
||||
.get(format!("{}/404", &server.uri()))
|
||||
.send_retry(always_retry, Duration::from_millis(1), 3)
|
||||
.await;
|
||||
|
||||
match resp {
|
||||
Ok(_) => {
|
||||
anyhow::bail!("response should have failed: {}", invalid_url);
|
||||
Ok(result) => {
|
||||
anyhow::bail!("response should have failed: {:?}", result);
|
||||
}
|
||||
Err(err) => {
|
||||
let as_text = format!("{:?}", err);
|
||||
@ -220,9 +240,9 @@ mod test {
|
||||
|
||||
#[tokio::test]
|
||||
async fn retry_fail_normal() -> Result<()> {
|
||||
let invalid_url = "https://httpstat.us/400";
|
||||
let server = build_server().await?;
|
||||
let resp = reqwest::Client::new()
|
||||
.get(invalid_url)
|
||||
.get(format!("{}/400", &server.uri()))
|
||||
.send_retry(always_retry, Duration::from_millis(1), 3)
|
||||
.await;
|
||||
|
||||
@ -241,9 +261,9 @@ mod test {
|
||||
|
||||
#[tokio::test]
|
||||
async fn retry_fail_fast() -> Result<()> {
|
||||
let invalid_url = "https://httpstat.us/400";
|
||||
let server = build_server().await?;
|
||||
let resp = reqwest::Client::new()
|
||||
.get(invalid_url)
|
||||
.get(format!("{}/400", &server.uri()))
|
||||
.send_retry(always_fail, Duration::from_millis(1), 3)
|
||||
.await;
|
||||
|
||||
@ -255,9 +275,9 @@ mod test {
|
||||
|
||||
#[tokio::test]
|
||||
async fn retry_400_success() -> Result<()> {
|
||||
let invalid_url = "https://httpstat.us/400";
|
||||
let server = build_server().await?;
|
||||
let resp = reqwest::Client::new()
|
||||
.get(invalid_url)
|
||||
.get(format!("{}/400", &server.uri()))
|
||||
.send_retry(succeed_400, Duration::from_millis(1), 3)
|
||||
.await?;
|
||||
|
||||
@ -267,9 +287,9 @@ mod test {
|
||||
|
||||
#[tokio::test]
|
||||
async fn retry_400_with_retry() -> Result<()> {
|
||||
let invalid_url = "https://httpstat.us/401";
|
||||
let server = build_server().await?;
|
||||
let resp = reqwest::Client::new()
|
||||
.get(invalid_url)
|
||||
.get(format!("{}/401", &server.uri()))
|
||||
.send_retry(succeed_400, Duration::from_millis(1), 3)
|
||||
.await;
|
||||
|
||||
|
Reference in New Issue
Block a user