firebase_admin_auth_rs/
lib.rs

1mod header_parser;
2mod jwk;
3pub mod jwk_auth;
4mod verifier;
5
6#[cfg(test)]
7mod tests {
8    use crate::jwk::{Jwk, KeyResponse};
9    use wiremock::matchers::{method, path};
10    use wiremock::{Mock, MockServer, ResponseTemplate};
11
12    pub const MAXAGE: u64 = 20045;
13    pub const PATH: &'static str = "/test";
14    pub fn get_test_keys() -> Vec<Jwk> {
15        vec![
16            Jwk {
17                alg: "RS256".to_string(),
18                kid: "kid-0".to_string(),
19                e: "AQAB".to_string(),
20                n: "n-string".to_string(),
21                kty: "RSA".to_string(),
22                r#use: "sig".to_string(),
23            },
24            Jwk {
25                e: "AQAB".to_string(),
26                kty: "RSA".to_string(),
27                n: "n-string".to_string(),
28                kid: "kid-1".to_string(),
29                alg: "RS256".to_string(),
30                r#use: "sig".to_string(),
31            },
32        ]
33    }
34    pub async fn get_mock_server() -> MockServer {
35        let mock_server = MockServer::start().await;
36
37        Mock::given(method("GET"))
38            .and(path(PATH))
39            .respond_with(
40                ResponseTemplate::new(200)
41                    .insert_header(
42                        "Cache-Control",
43                        &format!("public, max-age={}, must-revalidate, no-transform", MAXAGE)
44                            as &str,
45                    )
46                    .set_body_json(KeyResponse {
47                        keys: get_test_keys(),
48                    }),
49            )
50            .mount(&mock_server)
51            .await;
52
53        mock_server
54    }
55
56    pub async fn get_mock_server_invalid_response() -> MockServer {
57        let mock_server = MockServer::start().await;
58
59        Mock::given(method("GET"))
60            .and(path(PATH))
61            .respond_with(ResponseTemplate::new(200))
62            .mount(&mock_server)
63            .await;
64
65        mock_server
66    }
67
68    pub fn get_mock_url(mock_server: &MockServer) -> String {
69        format!("{}{}", mock_server.uri(), PATH)
70    }
71}