| 225 | |
| 226 | #[tokio::test] |
| 227 | async fn force_cache_mode() -> Result<()> { |
| 228 | let cache_dir = tempfile::tempdir()?; |
| 229 | let manager = |
| 230 | CACacheManager::new(cache_dir.path().to_path_buf(), false); |
| 231 | let cache = HttpCache { |
| 232 | mode: CacheMode::ForceCache, |
| 233 | manager: manager.clone(), |
| 234 | options: HttpCacheOptions::default(), |
| 235 | }; |
| 236 | let cache_layer = HttpCacheLayer::with_cache(cache); |
| 237 | |
| 238 | let test_service = TestService::new( |
| 239 | StatusCode::OK, |
| 240 | vec![("cache-control", "max-age=0, public")], |
| 241 | TEST_BODY, |
| 242 | ); |
| 243 | let mut cached_service = cache_layer.layer(test_service); |
| 244 | |
| 245 | let request = Request::builder() |
| 246 | .method("GET") |
| 247 | .uri("http://example.com/test") |
| 248 | .body(Full::new(Bytes::new())) |
| 249 | .unwrap(); |
| 250 | |
| 251 | // First request - cache miss, remote request |
| 252 | let response = |
| 253 | cached_service.ready().await?.call(request.clone()).await?; |
| 254 | assert_eq!(response.status(), StatusCode::OK); |
| 255 | |
| 256 | Ok(()) |
| 257 | } |
| 258 | |
| 259 | #[tokio::test] |
| 260 | async fn ignore_rules_mode() -> Result<()> { |