#[cfg(all(feature = "rust_crypto", feature = "aws_lc_rs"))]
#[test]
fn tie_break_selects_aws_lc_rs() {
let selected = super::preferred_provider();
assert!(
std::ptr::eq(selected, &jsonwebtoken::crypto::aws_lc::DEFAULT_PROVIDER),
"the tie-break must select the aws_lc_rs provider"
);
assert!(
!std::ptr::eq(selected, sid_crypto::jwt::rustcrypto::provider()),
"the tie-break must not fall back to RustCrypto"
);
}
#[cfg(all(feature = "aws_lc_rs", not(feature = "rust_crypto")))]
#[test]
fn aws_lc_rs_only_build_installs_aws_lc_rs() {
assert!(std::ptr::eq(
super::preferred_provider(),
&jsonwebtoken::crypto::aws_lc::DEFAULT_PROVIDER
));
}
#[cfg(all(feature = "rust_crypto", not(feature = "aws_lc_rs")))]
#[test]
fn rust_crypto_only_build_installs_rust_crypto() {
assert!(std::ptr::eq(
super::preferred_provider(),
sid_crypto::jwt::rustcrypto::provider()
));
}
#[test]
fn installing_twice_is_harmless() {
super::install_default_crypto_provider();
super::install_default_crypto_provider();
}
#[test]
fn a_proxy_without_auth_installs_no_jwt_provider() {
let service = crate::ProxyServer::from_yaml_str("service:\n name: demo\n")
.unwrap()
.service(tonic::service::Routes::default())
.unwrap();
drop(service);
assert!(
super::preferred_provider().install_default().is_ok(),
"building a proxy without auth must not install a jsonwebtoken provider"
);
}
#[test]
fn building_the_builtin_verifier_installs_the_provider() {
let jwt = crate::config::JwtConfig {
jwks_uri: Some("https://issuer.example/jwks".into()),
jwks_max_age_secs: 300,
issuer: None,
audience: None,
public_key_pem_file: None,
claims_headers: Default::default(),
roles_claim: "roles".into(),
cache: Default::default(),
};
super::super::verifier::ConfigVerifier::build(&jwt).unwrap();
assert!(super::preferred_provider().install_default().is_err());
}