diff --git a/src/tests/record.rs b/src/tests/record.rs index 3c7f2d373c7..8a6d96a1ce2 100644 --- a/src/tests/record.rs +++ b/src/tests/record.rs @@ -14,7 +14,7 @@ use std::{ use base64::{engine::general_purpose, Engine}; use futures_channel::oneshot; use futures_util::future; -use http::header::CONTENT_TYPE; +use http::{header::CONTENT_TYPE, HeaderMap, HeaderValue}; use hyper::{ body::to_bytes, server::conn::AddrStream, Body, Error, Request, Response, Server, StatusCode, Uri, @@ -278,7 +278,11 @@ async fn record_http(req: Request, client: Client) -> Result { - let body = String::from_utf8_lossy(&body); - assert_eq!(body, exchange.request.body); - } - _ => { - let body = general_purpose::STANDARD.encode(body); - assert_eq!(body, exchange.request.body); - } + if plain_text { + let body = String::from_utf8_lossy(&body); + assert_eq!(body, exchange.request.body); + } else { + let body = general_purpose::STANDARD.encode(body); + assert_eq!(body, exchange.request.body); } let mut builder = Response::builder(); @@ -394,3 +394,12 @@ fn replay_http( Ok(response) } } + +fn is_plain_text(headers: &HeaderMap) -> bool { + if let Some(header_value) = headers.get(CONTENT_TYPE) { + if let Ok(value) = header_value.to_str() { + return value == "text/plain"; + } + } + false +}