Separate crates for server and client binaries #1
@@ -402,7 +402,7 @@ mod tests {
|
|||||||
Ed25519Keypair::from_seed(&[1u8; 32])
|
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 ca_private: PrivateKey = ca.into();
|
||||||
let unix_time = |time: SystemTime| -> u64 {
|
let unix_time = |time: SystemTime| -> u64 {
|
||||||
time.duration_since(SystemTime::UNIX_EPOCH)
|
time.duration_since(SystemTime::UNIX_EPOCH)
|
||||||
@@ -413,7 +413,7 @@ mod tests {
|
|||||||
[0u8; 16],
|
[0u8; 16],
|
||||||
user_key,
|
user_key,
|
||||||
unix_time(SystemTime::now()),
|
unix_time(SystemTime::now()),
|
||||||
unix_time(SystemTime::now() + Duration::from_secs(30)),
|
unix_time(SystemTime::now() + validity),
|
||||||
);
|
);
|
||||||
|
|
||||||
builder
|
builder
|
||||||
@@ -441,18 +441,43 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_certificate() {
|
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();
|
let ca_pub: PublicKey = ca_pub();
|
||||||
assert!(valid_cert
|
assert!(valid_cert
|
||||||
.validate(&[ca_pub.fingerprint(Default::default())])
|
.validate(&[ca_pub.fingerprint(Default::default())])
|
||||||
.is_ok());
|
.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]
|
#[tokio::test]
|
||||||
async fn routes() -> anyhow::Result<()> {
|
async fn routes() -> anyhow::Result<()> {
|
||||||
let state = api_state();
|
let state = api_state();
|
||||||
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 invalid_cert = user_cert(ca_key2(), user_key().public.into());
|
let invalid_cert = user_cert(ca_key2(), user_key().public.into(), Duration::from_secs(30));
|
||||||
let res = put_cert_update(
|
let res = put_cert_update(
|
||||||
PutCert,
|
PutCert,
|
||||||
State(state.clone()),
|
State(state.clone()),
|
||||||
|
Reference in New Issue
Block a user