From 22ca5a6b8da47523a1a3e3e2dc94e54b0e68498c Mon Sep 17 00:00:00 2001 From: Alex Kattathra Johnson <120033285+alex-kattathra-johnson@users.noreply.github.com> Date: Mon, 4 Nov 2024 05:41:44 -0600 Subject: [PATCH] Add tests to test the `--max-age` arg in http commands (#14245) - fixes #14241 Signed-off-by: Alex Johnson --- .../tests/commands/network/http/delete.rs | 20 ++++++++++++++++ .../tests/commands/network/http/get.rs | 20 ++++++++++++++++ .../tests/commands/network/http/options.rs | 20 ++++++++++++++++ .../tests/commands/network/http/patch.rs | 24 +++++++++++++++++++ .../tests/commands/network/http/post.rs | 24 +++++++++++++++++++ .../tests/commands/network/http/put.rs | 24 +++++++++++++++++++ 6 files changed, 132 insertions(+) diff --git a/crates/nu-command/tests/commands/network/http/delete.rs b/crates/nu-command/tests/commands/network/http/delete.rs index c284c2ccfd..2e2624122e 100644 --- a/crates/nu-command/tests/commands/network/http/delete.rs +++ b/crates/nu-command/tests/commands/network/http/delete.rs @@ -1,3 +1,5 @@ +use std::{thread, time::Duration}; + use mockito::Server; use nu_test_support::{nu, pipeline}; @@ -122,3 +124,21 @@ fn http_delete_redirect_mode_error() { "Redirect encountered when redirect handling mode was 'error' (301 Moved Permanently)" )); } + +#[test] +fn http_delete_timeout() { + let mut server = Server::new(); + let _mock = server + .mock("DELETE", "/") + .with_chunked_body(|w| { + thread::sleep(Duration::from_secs(1)); + w.write_all(b"Delayed response!") + }) + .create(); + + let actual = nu!(pipeline( + format!("http delete --max-time 500ms {url}", url = server.url()).as_str() + )); + + assert!(&actual.err.contains("nu::shell::io_error")); +} diff --git a/crates/nu-command/tests/commands/network/http/get.rs b/crates/nu-command/tests/commands/network/http/get.rs index e1f1132efa..e75536abb4 100644 --- a/crates/nu-command/tests/commands/network/http/get.rs +++ b/crates/nu-command/tests/commands/network/http/get.rs @@ -1,3 +1,5 @@ +use std::{thread, time::Duration}; + use mockito::Server; use nu_test_support::{nu, pipeline}; @@ -316,3 +318,21 @@ fn http_get_with_unknown_mime_type() { assert_eq!(actual.out, "[1,2,3]"); } + +#[test] +fn http_get_timeout() { + let mut server = Server::new(); + let _mock = server + .mock("GET", "/") + .with_chunked_body(|w| { + thread::sleep(Duration::from_secs(1)); + w.write_all(b"Delayed response!") + }) + .create(); + + let actual = nu!(pipeline( + format!("http get --max-time 500ms {url}", url = server.url()).as_str() + )); + + assert!(&actual.err.contains("nu::shell::io_error")); +} diff --git a/crates/nu-command/tests/commands/network/http/options.rs b/crates/nu-command/tests/commands/network/http/options.rs index 6a49a5e1c1..82dcf33a5a 100644 --- a/crates/nu-command/tests/commands/network/http/options.rs +++ b/crates/nu-command/tests/commands/network/http/options.rs @@ -1,3 +1,5 @@ +use std::{thread, time::Duration}; + use mockito::Server; use nu_test_support::{nu, pipeline}; @@ -41,3 +43,21 @@ fn http_options_failed_due_to_server_error() { assert!(actual.err.contains("Bad request (400)")) } + +#[test] +fn http_options_timeout() { + let mut server = Server::new(); + let _mock = server + .mock("OPTIONS", "/") + .with_chunked_body(|w| { + thread::sleep(Duration::from_secs(1)); + w.write_all(b"Delayed response!") + }) + .create(); + + let actual = nu!(pipeline( + format!("http options --max-time 500ms {url}", url = server.url()).as_str() + )); + + assert!(&actual.err.contains("nu::shell::io_error")); +} diff --git a/crates/nu-command/tests/commands/network/http/patch.rs b/crates/nu-command/tests/commands/network/http/patch.rs index dc3a755baa..79e6a63096 100644 --- a/crates/nu-command/tests/commands/network/http/patch.rs +++ b/crates/nu-command/tests/commands/network/http/patch.rs @@ -1,3 +1,5 @@ +use std::{thread, time::Duration}; + use mockito::Server; use nu_test_support::{nu, pipeline}; @@ -162,3 +164,25 @@ fn http_patch_redirect_mode_error() { "Redirect encountered when redirect handling mode was 'error' (301 Moved Permanently)" )); } + +#[test] +fn http_patch_timeout() { + let mut server = Server::new(); + let _mock = server + .mock("PATCH", "/") + .with_chunked_body(|w| { + thread::sleep(Duration::from_secs(1)); + w.write_all(b"Delayed response!") + }) + .create(); + + let actual = nu!(pipeline( + format!( + "http patch --max-time 500ms {url} patchbody", + url = server.url() + ) + .as_str() + )); + + assert!(&actual.err.contains("nu::shell::io_error")); +} diff --git a/crates/nu-command/tests/commands/network/http/post.rs b/crates/nu-command/tests/commands/network/http/post.rs index 44dde270c1..9d327bf167 100644 --- a/crates/nu-command/tests/commands/network/http/post.rs +++ b/crates/nu-command/tests/commands/network/http/post.rs @@ -1,3 +1,5 @@ +use std::{thread, time::Duration}; + use mockito::{Matcher, Server, ServerOpts}; use nu_test_support::{nu, pipeline}; @@ -276,3 +278,25 @@ fn http_post_multipart_is_success() { assert!(actual.out.is_empty()) } + +#[test] +fn http_post_timeout() { + let mut server = Server::new(); + let _mock = server + .mock("POST", "/") + .with_chunked_body(|w| { + thread::sleep(Duration::from_secs(1)); + w.write_all(b"Delayed response!") + }) + .create(); + + let actual = nu!(pipeline( + format!( + "http post --max-time 500ms {url} postbody", + url = server.url() + ) + .as_str() + )); + + assert!(&actual.err.contains("nu::shell::io_error")); +} diff --git a/crates/nu-command/tests/commands/network/http/put.rs b/crates/nu-command/tests/commands/network/http/put.rs index 43251cd21a..3405c19bbf 100644 --- a/crates/nu-command/tests/commands/network/http/put.rs +++ b/crates/nu-command/tests/commands/network/http/put.rs @@ -1,3 +1,5 @@ +use std::{thread, time::Duration}; + use mockito::Server; use nu_test_support::{nu, pipeline}; @@ -162,3 +164,25 @@ fn http_put_redirect_mode_error() { "Redirect encountered when redirect handling mode was 'error' (301 Moved Permanently)" )); } + +#[test] +fn http_put_timeout() { + let mut server = Server::new(); + let _mock = server + .mock("PUT", "/") + .with_chunked_body(|w| { + thread::sleep(Duration::from_secs(1)); + w.write_all(b"Delayed response!") + }) + .create(); + + let actual = nu!(pipeline( + format!( + "http put --max-time 500ms {url} putbody", + url = server.url() + ) + .as_str() + )); + + assert!(&actual.err.contains("nu::shell::io_error")); +}