MCPcopy Create free account
hub / github.com/06chaynes/http-cache / patch_request_invalidates_cache

Function patch_request_invalidates_cache

http-cache-reqwest/src/test.rs:1049–1099  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1047 .insert_header("content-type", "text/plain")
1048 .insert_header("etag", "\"12345\"")
1049 .set_body_bytes(TEST_BODY),
1050 )
1051 .expect(1);
1052
1053 // Mock HEAD request - should return same headers but no body
1054 let m_head = Mock::given(method("HEAD"))
1055 .respond_with(
1056 ResponseTemplate::new(200)
1057 .insert_header("cache-control", CACHEABLE_PUBLIC)
1058 .insert_header("content-type", "text/plain")
1059 .insert_header("etag", "\"12345\"")
1060 .insert_header("content-length", "4"),
1061 )
1062 .expect(1);
1063
1064 let mock_guard_get = mock_server.register_as_scoped(m_get).await;
1065 let url = format!("{}/", mock_server.uri());
1066 let manager = create_cache_manager();
1067
1068 let client = ClientBuilder::new(Client::new())
1069 .with(Cache(HttpCache {
1070 mode: CacheMode::Default,
1071 manager: manager.clone(),
1072 options: Default::default(),
1073 }))
1074 .build();
1075
1076 // First, cache a GET response
1077 let get_res = client.get(url.clone()).send().await?;
1078 assert_eq!(get_res.status(), 200);
1079 assert_eq!(get_res.bytes().await?, TEST_BODY);
1080
1081 drop(mock_guard_get);
1082 let _mock_guard_head = mock_server.register_as_scoped(m_head).await;
1083
1084 // HEAD request should be able to use cached GET response metadata
1085 // but still make a HEAD request to verify headers
1086 let head_res = client.head(url.clone()).send().await?;
1087 assert_eq!(head_res.status(), 200);
1088 assert_eq!(head_res.headers().get("etag").unwrap(), "\"12345\"");
1089
1090 // Verify both GET and HEAD cache entries exist
1091 let get_data =
1092 CacheManager::get(&manager, &format!("GET:{}", url_parse(&url)?))
1093 .await?;
1094 assert!(get_data.is_some());
1095
1096 let head_data =
1097 CacheManager::get(&manager, &format!("HEAD:{}", url_parse(&url)?))
1098 .await?;
1099 assert!(head_data.is_some());
1100
1101 Ok(())
1102}

Callers

nothing calls this directly

Calls 5

create_cache_managerFunction · 0.85
buildMethod · 0.80
cloneMethod · 0.80
CacheClass · 0.70
getMethod · 0.45

Tested by

no test coverage detected