mithril_aggregator_client/test/
mod.rs

1#[cfg(test)]
2use httpmock::MockServer;
3
4#[cfg(test)]
5use crate::AggregatorHttpClient;
6
7#[cfg(test)]
8mithril_common::define_test_logger!();
9
10#[cfg(test)]
11pub(crate) fn setup_server_and_client() -> (MockServer, AggregatorHttpClient) {
12    let server = MockServer::start();
13    let client = AggregatorHttpClient::builder(server.base_url())
14        .with_logger(TestLogger::stdout())
15        .build()
16        .unwrap();
17
18    (server, client)
19}
20
21#[cfg(test)]
22macro_rules! assert_error_matches {
23    ($error:expr, $error_type:pat) => {
24        assert!(
25            matches!($error, $error_type),
26            "Expected {} error, got '{:?}'.",
27            stringify!($error_type),
28            $error
29        );
30    };
31}
32#[cfg(test)]
33pub(crate) use assert_error_matches;
34
35/// Define a test that checks that http compression is enabled for the client.
36///
37/// Requires `httpmock` in dev-dependencies
38#[macro_export]
39macro_rules! test_http_compression_is_enabled {
40    () => {
41        #[tokio::test]
42        async fn test_http_compression_is_enabled_and_send_accept_encoding_header_with_correct_values() {
43            let server = httpmock::MockServer::start();
44            server.mock(|when, then| {
45                when.is_true(|req| {
46                    let headers = req.headers();
47                    let accept_encoding_header = headers
48                        .get("accept-encoding")
49                        .expect("Accept-Encoding header not found");
50
51                    ["gzip", "br", "deflate", "zstd"].iter().all(|&encoding| {
52                        accept_encoding_header.to_str().is_ok_and(|h| h.contains(encoding))
53                    })
54                });
55
56                then.status(200).body("[]");
57            });
58
59            let client = $crate::AggregatorHttpClient::builder(server.base_url()).build().unwrap();
60            client
61                .send($crate::query::GetCertificatesListQuery::latest())
62                .await
63                .expect("GET request should succeed with Accept-Encoding header");
64        }
65    };
66}