1pub use jsonwebkey;
4
5use jsonwebkey::JsonWebKey;
6use serde::{Deserialize, Serialize};
7
8#[cfg(feature = "with-decrypt")]
9pub mod decrypt;
10
11#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Default)]
15pub struct JsonWebKeySet {
16 pub keys: Vec<JsonWebKey>,
17}
18
19#[cfg(feature = "serde_json")]
20impl std::str::FromStr for JsonWebKeySet {
21 type Err = serde_json::Error;
22 fn from_str(json: &str) -> Result<Self, Self::Err> {
23 serde_json::from_str(json)
24 }
25}
26
27#[cfg(test)]
28mod tests {
29 use super::*;
30
31 #[test]
32 fn test_de_with_apple_oidc() {
33 let jwk_set = serde_json::from_str::<JsonWebKeySet>(include_str!(
34 "../tests/oidc_keys_json_files/apple.json"
35 ))
36 .unwrap();
37 assert_eq!(jwk_set.keys.len(), 3);
38 }
39
40 #[test]
41 fn test_de_with_gitlab_oidc() {
42 let jwk_set = serde_json::from_str::<JsonWebKeySet>(include_str!(
43 "../tests/oidc_keys_json_files/gitlab.json"
44 ))
45 .unwrap();
46 assert_eq!(jwk_set.keys.len(), 2);
47 }
48
49 #[test]
50 fn test_de_with_google_oidc() {
51 let jwk_set = serde_json::from_str::<JsonWebKeySet>(include_str!(
52 "../tests/oidc_keys_json_files/google.json"
53 ))
54 .unwrap();
55 assert_eq!(jwk_set.keys.len(), 3);
56 }
57
58 #[test]
59 fn test_de_with_microsoft_oidc() {
60 let jwk_set = serde_json::from_str::<JsonWebKeySet>(include_str!(
61 "../tests/oidc_keys_json_files/microsoft.json"
62 ))
63 .unwrap();
64 assert_eq!(jwk_set.keys.len(), 7);
65 }
66
67 #[test]
68 fn test_de_with_yahoo_oidc() {
69 let jwk_set = serde_json::from_str::<JsonWebKeySet>(include_str!(
70 "../tests/oidc_keys_json_files/yahoo.json"
71 ))
72 .unwrap();
73 assert_eq!(jwk_set.keys.len(), 3);
74 }
75}