Content-type doesn't get correctly copied over when converting from `http_types::Request`
- Dominant language
- Rust
- Stars
- 1.5k
- Forks
- 128
- PR merge metrics
- No merged PRs in 30d
Description
If you convert from `http_types::Request` to `surf::Request` using `surf::Request::try_from(http_types::Request)`, the content-type doesn't get coped over correctly. Below is my Cargo.toml and src/lib.rs, with a test that duplicates the error.
```
# Cargo.toml
[package]
...
[dependencies]
surf = "2.0.0-alpha.2"
http-types = "1.2.0"
url = "2.1.1"
# src/lib.rs
use http_types::headers::{HeaderName, HeaderValue};
use url::Url;
use std::convert::TryFrom;
#[test]
fn content_type_change() {
let mut http_types_request = http_types::Request::new(http_types::Method::Get, Url::parse("https://example.com/").unwrap());
http_types_request.insert_header("Content-Type", http_types::mime::JSON);
let surf_request = surf::Request::try_from(http_types_request).unwrap();
let content_type = HeaderName::try_from("Content-Type").unwrap();
let expected = HeaderValue::try_from("application/json").unwrap();
assert_eq!(
&expected,
surf_request.header(&content_type).unwrap().get(0).unwrap(),
);
}
// running 1 test
// test content_type_change ... FAILED
//
// failures:
//
// ---- content_type_change stdout ----
// thread 'content_type_change' panicked at 'assertion failed: `(left == right)`
// left: `HeaderValue { inner: "application/json" }`,
// right: `HeaderValue { inner: "application/octet-stream" }`', src/lib.rs:14:5
// note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
//
//
// failures:
// content_type_change
//
// test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out
//
// error: test failed, to rerun pass '--lib'
```
Contributor guide
Assessment
This issue has not been assessed yet.