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

Function put_request_invalidates_cache

http-cache-surf/src/test.rs:879–927  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

877
878 #[tokio::test]
879 async fn put_request_invalidates_cache() -> Result<()> {
880 let mock_server = MockServer::start().await;
881
882 // Mock GET request for caching
883 let m_get = Mock::given(method("GET"))
884 .respond_with(
885 ResponseTemplate::new(200)
886 .insert_header("cache-control", CACHEABLE_PUBLIC)
887 .set_body_bytes(TEST_BODY),
888 )
889 .expect(1);
890
891 // Mock PUT request that should invalidate cache
892 let m_put = Mock::given(method("PUT"))
893 .respond_with(ResponseTemplate::new(204))
894 .expect(1);
895
896 let mock_guard_get = mock_server.register_as_scoped(m_get).await;
897 let url = format!("{}/", mock_server.uri());
898 let manager = MokaManager::default();
899
900 let client = Client::new().with(Cache(HttpCache {
901 mode: CacheMode::Default,
902 manager: manager.clone(),
903 options: Default::default(),
904 }));
905
906 // First, cache a GET response
907 let get_req = Request::new(Method::Get, url_parse(&url)?);
908 client.send(get_req).await?;
909
910 // Verify it's cached
911 let data = manager.get(&format!("GET:{}", url_parse(&url)?)).await?;
912 assert!(data.is_some());
913
914 drop(mock_guard_get);
915 let _mock_guard_put = mock_server.register_as_scoped(m_put).await;
916
917 // PUT request should invalidate the cached GET response
918 let put_req = Request::new(Method::Put, url_parse(&url)?);
919 let put_res = client.send(put_req).await?;
920 assert_eq!(put_res.status(), 204);
921
922 // Verify cache was invalidated
923 let data = manager.get(&format!("GET:{}", url_parse(&url)?)).await?;
924 assert!(data.is_none());
925
926 Ok(())
927 }
928
929 #[tokio::test]
930 async fn patch_request_invalidates_cache() -> Result<()> {

Callers

nothing calls this directly

Calls 4

url_parseFunction · 0.85
cloneMethod · 0.80
CacheClass · 0.70
getMethod · 0.45

Tested by

no test coverage detected