| 188 | |
| 189 | #[tokio::test] |
| 190 | async fn no_cache_mode() -> Result<()> { |
| 191 | let cache_dir = tempfile::tempdir()?; |
| 192 | let manager = |
| 193 | CACacheManager::new(cache_dir.path().to_path_buf(), false); |
| 194 | let cache = HttpCache { |
| 195 | mode: CacheMode::NoCache, |
| 196 | manager: manager.clone(), |
| 197 | options: HttpCacheOptions::default(), |
| 198 | }; |
| 199 | let cache_layer = HttpCacheLayer::with_cache(cache); |
| 200 | |
| 201 | let test_service = TestService::new( |
| 202 | StatusCode::OK, |
| 203 | vec![("cache-control", CACHEABLE_PUBLIC)], |
| 204 | TEST_BODY, |
| 205 | ); |
| 206 | let mut cached_service = cache_layer.layer(test_service); |
| 207 | |
| 208 | let request = Request::builder() |
| 209 | .method("GET") |
| 210 | .uri("http://example.com/test") |
| 211 | .body(Full::new(Bytes::new())) |
| 212 | .unwrap(); |
| 213 | |
| 214 | // First request |
| 215 | let response = |
| 216 | cached_service.ready().await?.call(request.clone()).await?; |
| 217 | assert_eq!(response.status(), StatusCode::OK); |
| 218 | |
| 219 | // Second request - should revalidate (NoCache mode) |
| 220 | let response = cached_service.ready().await?.call(request).await?; |
| 221 | assert_eq!(response.status(), StatusCode::OK); |
| 222 | |
| 223 | Ok(()) |
| 224 | } |
| 225 | |
| 226 | #[tokio::test] |
| 227 | async fn force_cache_mode() -> Result<()> { |