pub mod api_key;
pub mod authorization;
pub mod futures;
#[cfg(feature = "token")]
pub mod token;
pub use api_key::ApiKeyAuth;
pub use authorization::Authorization;
#[cfg(feature = "token")]
pub use token::TokenAuth;
#[cfg(test)]
pub(crate) mod test {
use bytes::Bytes;
use http::{HeaderValue, Request, header::AUTHORIZATION};
use http_body_util::Full;
use ts_crypto::any::SigningKey;
use ts_token::{TokenIssuer, jwt::TokenType};
pub const PEM: &str = include_str!("../../../ts-token/tests/keys/private.ed25519.pem");
pub const JWK: &str = r#"{"kid":"Cnm4neUDvdKZWXHIZCzcF2yqrh4rBhtrAGs47oaYkHg","use":"sig","kty":"OKP","alg":"EdDSA","crv":"Ed25519","x":"kjcgG6MObZTP8ie3IhpTxYBFxDAwNgjz6AEBnnm9K3U"}"#;
pub fn get_request(typ: Option<TokenType>) -> Request<Full<Bytes>> {
let mut request = Request::builder().uri("/resource/id");
if let Some(typ) = typ {
let key = SigningKey::from_unknown_pem(PEM.as_bytes()).expect("key should be valid");
let issuer = TokenIssuer::from_key(key).expect("key should be a valid issuer");
let token = issuer.issue_token("subject".to_string(), typ).serialize();
request.headers_mut().expect("request should be ok").insert(
AUTHORIZATION,
HeaderValue::from_str(&format!("bearer {token}"))
.expect("token should be a valid header value"),
);
}
request
.body(Full::<Bytes>::default())
.expect("request should be ok")
}
}