mirror of
https://github.com/nushell/nushell
synced 2024-12-27 21:43:09 +00:00
# Description this commit adds the handling of Value::List when BodyType is Json it also adds the corresponding test (trying to send a list) Fixes #10319 # User-Facing Changes Added the ability to send a json list in the POST message # Tests + Formatting - [x] `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - [x] `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used` to check that you're using the standard code style - [x] `cargo test --workspace` to check that all tests pass (on Windows make sure to [enable developer mode](https://learn.microsoft.com/en-us/windows/apps/get-started/developer-mode-features-and-debugging)) - [x] `cargo run -- -c "use std testing; testing run-tests --path crates/nu-std"` to run the tests for the standard library Also ran `nc -l -p 8080` in other terminal and `http post -fe -t application/json http://localhost:8080 [{ field: true }]` I see the following appear in the output of nc: ``` POST / HTTP/1.1 Host: localhost:8080 User-Agent: nushell Accept: */* Content-Type: application/json accept-encoding: gzip Content-Length: 16 [{"field":true}]% ```
This commit is contained in:
parent
48c94c75fc
commit
ce4ea16c08
2 changed files with 22 additions and 0 deletions
|
@ -223,6 +223,10 @@ pub fn send_request(
|
|||
};
|
||||
send_cancellable_request(&request_url, Box::new(request_fn), ctrl_c)
|
||||
}
|
||||
Value::List { .. } if body_type == BodyType::Json => {
|
||||
let data = value_to_json_value(&body)?;
|
||||
send_cancellable_request(&request_url, Box::new(|| request.send_json(data)), ctrl_c)
|
||||
}
|
||||
_ => Err(ShellErrorOrRequestError::ShellError(ShellError::IOError(
|
||||
"unsupported body input".into(),
|
||||
))),
|
||||
|
|
|
@ -94,3 +94,21 @@ fn http_post_json_is_success() {
|
|||
mock.assert();
|
||||
assert!(actual.out.is_empty())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn http_post_json_list_is_success() {
|
||||
let mut server = Server::new();
|
||||
|
||||
let mock = server
|
||||
.mock("POST", "/")
|
||||
.match_body(r#"[{"foo":"bar"}]"#)
|
||||
.create();
|
||||
|
||||
let actual = nu!(format!(
|
||||
r#"http post -t 'application/json' {url} [{{foo: "bar"}}]"#,
|
||||
url = server.url()
|
||||
));
|
||||
|
||||
mock.assert();
|
||||
assert!(actual.out.is_empty())
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue