v0.34.9_css_refactor

This commit is contained in:
Mateusz Gruszczyński committed 2026-10-23 11:15:35 +02:00
1 parent 2b7c67d755
commit 66ff9dfaa2
28 files changed
+11518 -13023

No files matched your search

+63
View File
@@ -2966,6 +2966,69 @@ mod tests {
}
store.close().await;
}
#[tokio::test]
async fn modular_panel_css_is_one_embedded_public_asset_with_existing_compression() {
use std::io::Read;
let (router, store, _dir, secret, _) = fixture().await;
let cookie = format!("{}={secret}", auth::COOKIE_NAME);
let css = include_str!(concat!(env!("OUT_DIR"), "/panel-style.css"));
let path = format!("/assets/style_{}.css", super::asset_build_id());
for authenticated in [false, true] {
let mut req = request(&path);
if authenticated {
req = req.header("cookie", &cookie);
}
let response = router
.clone()
.oneshot(req.body(Body::empty()).unwrap())
.await
.unwrap();
assert_eq!(response.status(), StatusCode::OK);
assert_eq!(response.headers()["content-type"], "text/css; charset=utf-8");
assert_eq!(response.headers()["vary"], "Accept-Encoding");
let bytes = axum::body::to_bytes(response.into_body(), css.len() + 1)
.await
.unwrap();
assert_eq!(bytes.as_ref(), css.as_bytes());
}
let response = router
.clone()
.oneshot(
request(&path)
.header("accept-encoding", "gzip")
.body(Body::empty())
.unwrap(),
)
.await
.unwrap();
assert_eq!(response.status(), StatusCode::OK);
assert_eq!(response.headers()["content-encoding"], "gzip");
let compressed = axum::body::to_bytes(response.into_body(), css.len() + 1024)
.await
.unwrap();
let mut decoded = Vec::new();
flate2::read::GzDecoder::new(compressed.as_ref())
.read_to_end(&mut decoded)
.unwrap();
assert_eq!(decoded.as_slice(), css.as_bytes());
for path in ["/assets/css/manifest.json", "/assets/css/base.css"] {
let response = router
.clone()
.oneshot(
request(path)
.header("cookie", &cookie)
.body(Body::empty())
.unwrap(),
)
.await
.unwrap();
assert_eq!(response.status(), StatusCode::NOT_FOUND, "{path}");
}
store.close().await;
}
#[tokio::test]
async fn public_document_and_discovery_contain_only_login_information() {
let (router, store, _dir, _, _) = fixture().await;