clean up warnings

This commit is contained in:
Joseph Montanaro 2024-07-11 06:04:56 -04:00
parent a32e36be7e
commit 5cf848f7fe
4 changed files with 32 additions and 43 deletions

View File

@ -76,7 +76,7 @@ impl PersistentCredential for AwsBaseCredential {
access_key_id, access_key_id,
secret_key_enc, secret_key_enc,
nonce nonce
) )
VALUES (?, ?, ?, ?);", VALUES (?, ?, ?, ?);",
id, self.access_key_id, ciphertext, nonce_bytes, id, self.access_key_id, ciphertext, nonce_bytes,
).execute(&mut **txn).await?; ).execute(&mut **txn).await?;
@ -203,19 +203,6 @@ mod tests {
) )
} }
fn test_uuid() -> Uuid {
Uuid::try_parse("00000000-0000-0000-0000-000000000000").unwrap()
}
fn test_uuid_2() -> Uuid {
Uuid::try_parse("ffffffff-ffff-ffff-ffff-ffffffffffff").unwrap()
}
fn test_uuid_random() -> Uuid {
let bytes = Crypto::salt();
Uuid::from_slice(&bytes[..16]).unwrap()
}
#[sqlx::test(fixtures("aws_credentials"))] #[sqlx::test(fixtures("aws_credentials"))]
async fn test_load(pool: SqlitePool) { async fn test_load(pool: SqlitePool) {
@ -254,5 +241,5 @@ mod tests {
assert_eq!(&creds().into_credential(), &list[0]); assert_eq!(&creds().into_credential(), &list[0]);
assert_eq!(&creds_2().into_credential(), &list[1]); assert_eq!(&creds_2().into_credential(), &list[1]);
} }
} }

View File

@ -112,15 +112,16 @@ impl CredentialRecord {
Ok(Self::from_parts(row, credential)) Ok(Self::from_parts(row, credential))
} }
// pub async fn load(id: &Uuid, crypto: &Crypto, pool: &SqlitePool) -> Result<Self, LoadCredentialsError> { #[cfg(test)]
// let row: CredentialRow = sqlx::query_as("SELECT * FROM credentials WHERE id = ?") pub async fn load(id: &Uuid, crypto: &Crypto, pool: &SqlitePool) -> Result<Self, LoadCredentialsError> {
// .bind(id) let row: CredentialRow = sqlx::query_as("SELECT * FROM credentials WHERE id = ?")
// .fetch_optional(pool) .bind(id)
// .await? .fetch_optional(pool)
// .ok_or(LoadCredentialsError::NoCredentials)?; .await?
.ok_or(LoadCredentialsError::NoCredentials)?;
// Self::load_credential(row, crypto, pool).await Self::load_credential(row, crypto, pool).await
// } }
pub async fn load_by_name(name: &str, crypto: &Crypto, pool: &SqlitePool) -> Result<Self, LoadCredentialsError> { pub async fn load_by_name(name: &str, crypto: &Crypto, pool: &SqlitePool) -> Result<Self, LoadCredentialsError> {
let row: CredentialRow = sqlx::query_as("SELECT * FROM credentials WHERE name = ?") let row: CredentialRow = sqlx::query_as("SELECT * FROM credentials WHERE name = ?")
@ -134,7 +135,7 @@ impl CredentialRecord {
pub async fn load_default(credential_type: &str, crypto: &Crypto, pool: &SqlitePool) -> Result<Self, LoadCredentialsError> { pub async fn load_default(credential_type: &str, crypto: &Crypto, pool: &SqlitePool) -> Result<Self, LoadCredentialsError> {
let row: CredentialRow = sqlx::query_as( let row: CredentialRow = sqlx::query_as(
"SELECT * FROM credentials "SELECT * FROM credentials
WHERE credential_type = ? AND is_default = 1" WHERE credential_type = ? AND is_default = 1"
).bind(credential_type) ).bind(credential_type)
.fetch_optional(pool) .fetch_optional(pool)
@ -419,7 +420,7 @@ mod uuid_tests {
#[test] #[test]
fn test_serialize_deserialize_uuid() { fn test_serialize_deserialize_uuid() {
let buf = Crypto::salt(); let buf = Crypto::salt();
let expected = UuidWrapper{ let expected = UuidWrapper{
id: Uuid::from_slice(&buf[..16]).unwrap() id: Uuid::from_slice(&buf[..16]).unwrap()
}; };
let serialized = serde_json::to_string(&expected).unwrap(); let serialized = serde_json::to_string(&expected).unwrap();

View File

@ -99,7 +99,7 @@ impl SshKey {
let row = sqlx::query!( let row = sqlx::query!(
"SELECT c.name "SELECT c.name
FROM credentials c FROM credentials c
JOIN ssh_credentials s JOIN ssh_credentials s
ON s.id = c.id ON s.id = c.id
WHERE s.public_key = ?", WHERE s.public_key = ?",
pubkey pubkey
@ -168,7 +168,7 @@ impl PersistentCredential for SshKey {
let nonce = XNonce::clone_from_slice(&row.nonce); let nonce = XNonce::clone_from_slice(&row.nonce);
let privkey_bytes = crypto.decrypt(&nonce, &row.private_key_enc)?; let privkey_bytes = crypto.decrypt(&nonce, &row.private_key_enc)?;
let algorithm = Algorithm::new(&row.algorithm) let algorithm = Algorithm::new(&row.algorithm)
.map_err(|_| LoadCredentialsError::InvalidData)?; .map_err(|_| LoadCredentialsError::InvalidData)?;
let public_key = PublicKey::from_bytes(&row.public_key) let public_key = PublicKey::from_bytes(&row.public_key)
@ -298,7 +298,6 @@ fn deserialize_algorithm<'de, D>(deserializer: D) -> Result<Algorithm, D::Error>
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use std::fs::{self, File}; use std::fs::{self, File};
use ssh_key::Fingerprint;
use sqlx::types::uuid::uuid; use sqlx::types::uuid::uuid;
use super::*; use super::*;
@ -341,7 +340,7 @@ mod tests {
let k = rsa_plain(); let k = rsa_plain();
assert_eq!(k.algorithm.as_str(), "ssh-rsa"); assert_eq!(k.algorithm.as_str(), "ssh-rsa");
assert_eq!(&k.comment, "hello world"); assert_eq!(&k.comment, "hello world");
assert_eq!( assert_eq!(
k.public_key.fingerprint(Default::default()), k.public_key.fingerprint(Default::default()),
k.private_key.fingerprint(Default::default()), k.private_key.fingerprint(Default::default()),
@ -359,7 +358,7 @@ mod tests {
let k = rsa_enc(); let k = rsa_enc();
assert_eq!(k.algorithm.as_str(), "ssh-rsa"); assert_eq!(k.algorithm.as_str(), "ssh-rsa");
assert_eq!(&k.comment, "hello world"); assert_eq!(&k.comment, "hello world");
assert_eq!( assert_eq!(
k.public_key.fingerprint(Default::default()), k.public_key.fingerprint(Default::default()),
k.private_key.fingerprint(Default::default()), k.private_key.fingerprint(Default::default()),
@ -377,7 +376,7 @@ mod tests {
let k = ed25519_plain(); let k = ed25519_plain();
assert_eq!(k.algorithm.as_str(),"ssh-ed25519"); assert_eq!(k.algorithm.as_str(),"ssh-ed25519");
assert_eq!(&k.comment, "hello world"); assert_eq!(&k.comment, "hello world");
assert_eq!( assert_eq!(
k.public_key.fingerprint(Default::default()), k.public_key.fingerprint(Default::default()),
k.private_key.fingerprint(Default::default()), k.private_key.fingerprint(Default::default()),
@ -395,7 +394,7 @@ mod tests {
let k = ed25519_enc(); let k = ed25519_enc();
assert_eq!(k.algorithm.as_str(), "ssh-ed25519"); assert_eq!(k.algorithm.as_str(), "ssh-ed25519");
assert_eq!(&k.comment, "hello world"); assert_eq!(&k.comment, "hello world");
assert_eq!( assert_eq!(
k.public_key.fingerprint(Default::default()), k.public_key.fingerprint(Default::default()),
k.private_key.fingerprint(Default::default()), k.private_key.fingerprint(Default::default()),
@ -447,7 +446,7 @@ mod tests {
async fn test_load_db(pool: SqlitePool) { async fn test_load_db(pool: SqlitePool) {
let crypto = Crypto::fixed(); let crypto = Crypto::fixed();
let id = uuid!("11111111-1111-1111-1111-111111111111"); let id = uuid!("11111111-1111-1111-1111-111111111111");
let k = SshKey::load(&id, &crypto, &pool).await SshKey::load(&id, &crypto, &pool).await
.expect("Failed to load SSH key from database"); .expect("Failed to load SSH key from database");
} }

View File

@ -44,21 +44,23 @@ pub async fn load_bytes(pool: &SqlitePool, name: &str) -> Result<Option<Vec<u8>>
} }
// pub async fn delete(pool: &SqlitePool, name: &str) -> Result<(), sqlx::Error> { // we don't have a need for this right now, but we will some day
// sqlx::query!("DELETE FROM kv WHERE name = ?", name) #[cfg(test)]
// .execute(pool) pub async fn delete(pool: &SqlitePool, name: &str) -> Result<(), sqlx::Error> {
// .await?; sqlx::query!("DELETE FROM kv WHERE name = ?", name)
// Ok(()) .execute(pool)
// } .await?;
Ok(())
}
pub async fn delete_multi(pool: &SqlitePool, names: &[&str]) -> Result<(), sqlx::Error> { pub async fn delete_multi(pool: &SqlitePool, names: &[&str]) -> Result<(), sqlx::Error> {
let placeholder = names.iter() let placeholder = names.iter()
.map(|_| "?") .map(|_| "?")
.collect::<Vec<&str>>() .collect::<Vec<&str>>()
.join(","); .join(",");
let query = format!("DELETE FROM kv WHERE name IN ({})", placeholder); let query = format!("DELETE FROM kv WHERE name IN ({})", placeholder);
let mut q = sqlx::query(&query); let mut q = sqlx::query(&query);
for name in names { for name in names {
q = q.bind(name); q = q.bind(name);
@ -83,7 +85,7 @@ macro_rules! load_bytes_multi {
( (
// ...with one item for each repetition of $name // ...with one item for each repetition of $name
$( $(
// load_bytes returns Result<Option<_>>, the Result is handled by // load_bytes returns Result<Option<_>>, the Result is handled by
// the ? and we match on the Option // the ? and we match on the Option
match crate::kv::load_bytes($pool, $name).await? { match crate::kv::load_bytes($pool, $name).await? {
Some(v) => v, Some(v) => v,
@ -187,7 +189,7 @@ mod tests {
async fn test_delete(pool: SqlitePool) { async fn test_delete(pool: SqlitePool) {
delete(&pool, "test_bytes").await delete(&pool, "test_bytes").await
.expect("Failed to delete data"); .expect("Failed to delete data");
let loaded = load_bytes(&pool, "test_bytes").await let loaded = load_bytes(&pool, "test_bytes").await
.expect("Failed to load data"); .expect("Failed to load data");
assert_eq!(loaded, None); assert_eq!(loaded, None);