From cb85a87fee659f14cce6ccde6a48e584618f3559 Mon Sep 17 00:00:00 2001 From: shimun Date: Sun, 22 Jan 2023 10:35:28 +0100 Subject: [PATCH] added: test update --- server/src/api.rs | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/server/src/api.rs b/server/src/api.rs index ef27fda..2eb089d 100644 --- a/server/src/api.rs +++ b/server/src/api.rs @@ -402,7 +402,7 @@ mod tests { Ed25519Keypair::from_seed(&[1u8; 32]) } - fn user_cert(ca: Ed25519Keypair, user_key: PublicKey) -> Certificate { + fn user_cert(ca: Ed25519Keypair, user_key: PublicKey, validity: Duration) -> Certificate { let ca_private: PrivateKey = ca.into(); let unix_time = |time: SystemTime| -> u64 { time.duration_since(SystemTime::UNIX_EPOCH) @@ -413,7 +413,7 @@ mod tests { [0u8; 16], user_key, unix_time(SystemTime::now()), - unix_time(SystemTime::now() + Duration::from_secs(30)), + unix_time(SystemTime::now() + validity), ); builder @@ -441,18 +441,43 @@ mod tests { #[test] fn test_certificate() { - let valid_cert = user_cert(ca_key(), user_key().public.into()); + let valid_cert = user_cert(ca_key(), user_key().public.into(), Duration::from_secs(30)); let ca_pub: PublicKey = ca_pub(); assert!(valid_cert .validate(&[ca_pub.fingerprint(Default::default())]) .is_ok()); } + #[tokio::test] + async fn update_cert() { + let state = api_state(); + let ca = ca_key(); + let user: PublicKey = user_key().public.into(); + let (cert_first, cert_newer, cert_outdated) = { + ( + user_cert(ca.clone(), user.clone(), Duration::from_secs(30)), + user_cert(ca.clone(), user.clone(), Duration::from_secs(60)), + user_cert(ca.clone(), user.clone(), Duration::from_secs(3)), + ) + }; + let res = put_cert_update(PutCert, State(state.clone()), CertificateBody(cert_first)).await; + assert!(res.is_ok()); + let res = put_cert_update(PutCert, State(state.clone()), CertificateBody(cert_newer)).await; + assert!(res.is_ok()); + let res = put_cert_update( + PutCert, + State(state.clone()), + CertificateBody(cert_outdated), + ) + .await; + assert!(res.is_err()); + } + #[tokio::test] async fn routes() -> anyhow::Result<()> { let state = api_state(); - let valid_cert = user_cert(ca_key(), user_key().public.into()); - let invalid_cert = user_cert(ca_key2(), user_key().public.into()); + let valid_cert = user_cert(ca_key(), user_key().public.into(), Duration::from_secs(30)); + let invalid_cert = user_cert(ca_key2(), user_key().public.into(), Duration::from_secs(30)); let res = put_cert_update( PutCert, State(state.clone()),