Skip to content

Commit

Permalink
use crate name normalization when trying to delete crates / releases
Browse files Browse the repository at this point in the history
  • Loading branch information
syphar committed Sep 28, 2024
1 parent 1d5db8b commit fe4e5ca
Showing 1 changed file with 23 additions and 5 deletions.
28 changes: 23 additions & 5 deletions src/db/delete.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,12 +105,13 @@ pub async fn delete_version(
}

async fn get_id(conn: &mut sqlx::PgConnection, name: &str) -> Result<i32> {
Ok(
sqlx::query_scalar!("SELECT id FROM crates WHERE name = $1", name)
.fetch_optional(&mut *conn)
.await?
.ok_or_else(|| CrateDeletionError::MissingCrate(name.into()))?,
Ok(sqlx::query_scalar!(
"SELECT id FROM crates WHERE normalize_crate_name(name) = normalize_crate_name($1)",
name
)
.fetch_optional(&mut *conn)
.await?
.ok_or_else(|| CrateDeletionError::MissingCrate(name.into()))?)
}

// metaprogramming!
Expand Down Expand Up @@ -233,6 +234,23 @@ mod tests {
.is_some())
}

#[test]
fn test_get_id_uses_normalization() {
async_wrapper(|env| async move {
env.async_fake_release()
.await
.name("Some_Package")
.version("1.0.0")
.create_async()
.await?;

let mut conn = env.async_db().await.async_conn().await;
assert!(get_id(&mut conn, "some-package").await.is_ok());

Ok(())
})
}

#[test_case(true)]
#[test_case(false)]
fn test_delete_crate(archive_storage: bool) {
Expand Down

0 comments on commit fe4e5ca

Please sign in to comment.