diff --git a/ohkami/src/testing/mod.rs b/ohkami/src/testing/mod.rs index 079c76e8c..16fd93a90 100644 --- a/ohkami/src/testing/mod.rs +++ b/ohkami/src/testing/mod.rs @@ -52,23 +52,31 @@ impl Testing for Ohkami { impl TestingOhkami { #[must_use] - pub fn oneshot(&self, req: TestRequest) -> Oneshot { + pub fn oneshot(&self, test_req: TestRequest) -> Oneshot { let router = self.0.clone(); - let res = async move { - let mut request = Request::uninit(#[cfg(feature="__rt_native__")] crate::util::IP_0000); - let mut request = unsafe {Pin::new_unchecked(&mut request)}; + let test_res = async move { + let mut req = Request::uninit(#[cfg(feature="__rt_native__")] crate::util::IP_0000); + let mut req = Pin::new(&mut req); - let res = match request.as_mut().read(&mut &req.encode()[..]).await { - Ok(Some(())) => router.handle(&mut request).await, - Ok(None) => panic!("No request"), + let res = match req.as_mut().read(&mut &test_req.encode()[..]).await { Err(res) => res, + Ok(None) => panic!("No request"), + Ok(Some(())) => { + if req.headers.host().is_none() { + req.headers.set().host("ohkami.test"); + } + if req.headers.date().is_none() { + req.headers.set().date(ohkami_lib::imf_fixdate(crate::util::unix_timestamp())); + } + router.handle(&mut req).await + } }; TestResponse(res) }; - Oneshot(Box::new(res)) + Oneshot(Box::new(test_res)) } } diff --git a/ohkami_lib/src/time.rs b/ohkami_lib/src/time.rs index 016e40abc..f431aee41 100644 --- a/ohkami_lib/src/time.rs +++ b/ohkami_lib/src/time.rs @@ -1,9 +1,11 @@ //! Most parts are based on [chrono](https://github.com/chronotope/chrono); MIT. -/// Current datetime by **IMF-fixdate** format like `Sun, 06 Nov 1994 08:49:37 GMT`, used in `Date` header. +/// format a unix timestamp by **IMF-fixdate** like `Sun, 06 Nov 1994 08:49:37 GMT`, +/// mainly intended for `Date` header. /// /// (reference:[https://datatracker.ietf.org/doc/html/rfc9110#name-date-time-formats](https://datatracker.ietf.org/doc/html/rfc9110#name-date-time-formats)) -#[inline(always)] pub fn imf_fixdate(unix_timestamp: u64) -> String { +#[inline(always)] +pub fn imf_fixdate(unix_timestamp: u64) -> String { UTCDateTime::from_unix_timestamp(unix_timestamp).into_imf_fixdate() }