diff --git a/src/app.rs b/src/app.rs index ba435ee6270..9bf956a6d89 100644 --- a/src/app.rs +++ b/src/app.rs @@ -21,6 +21,7 @@ use diesel_async::pooled_connection::AsyncDieselConnectionManager; use diesel_async::pooled_connection::deadpool::Pool as DeadpoolPool; use oauth2::basic::BasicClient; use oauth2::{EndpointNotSet, EndpointSet}; +use tracing::{instrument, warn}; type DeadpoolResult = Result< diesel_async::pooled_connection::deadpool::Object, diff --git a/src/auth.rs b/src/auth.rs index 53c60d5c191..8a39d18ce4a 100644 --- a/src/auth.rs +++ b/src/auth.rs @@ -15,6 +15,7 @@ use diesel_async::AsyncPgConnection; use http::request::Parts; use http::{StatusCode, header}; use secrecy::{ExposeSecret, SecretString}; +use tracing::instrument; pub struct AuthHeader(SecretString); diff --git a/src/cloudfront.rs b/src/cloudfront.rs index bb3ba21a87d..f80227bcb4e 100644 --- a/src/cloudfront.rs +++ b/src/cloudfront.rs @@ -3,6 +3,7 @@ use aws_sdk_cloudfront::config::retry::RetryConfig; use aws_sdk_cloudfront::config::{BehaviorVersion, Region}; use aws_sdk_cloudfront::types::{InvalidationBatch, Paths}; use aws_sdk_cloudfront::{Client, Config}; +use tracing::{debug, instrument, warn}; pub struct CloudFront { client: Client, diff --git a/src/config/cdn_log_queue.rs b/src/config/cdn_log_queue.rs index d279355b90d..7326dcba8c6 100644 --- a/src/config/cdn_log_queue.rs +++ b/src/config/cdn_log_queue.rs @@ -1,5 +1,6 @@ use crates_io_env_vars::{required_var, var}; use secrecy::SecretString; +use tracing::warn; #[derive(Debug, Clone)] pub enum CdnLogQueueConfig { diff --git a/src/config/cdn_log_storage.rs b/src/config/cdn_log_storage.rs index 6b030c51b9c..bd0d40ba559 100644 --- a/src/config/cdn_log_storage.rs +++ b/src/config/cdn_log_storage.rs @@ -2,6 +2,7 @@ use anyhow::Context; use crates_io_env_vars::{required_var, var}; use secrecy::SecretString; use std::path::PathBuf; +use tracing::{info, warn}; #[derive(Debug, Clone)] pub enum CdnLogStorageConfig { diff --git a/src/config/server.rs b/src/config/server.rs index c7a15a90d96..32cb6f10f73 100644 --- a/src/config/server.rs +++ b/src/config/server.rs @@ -329,6 +329,7 @@ impl FromStr for AllowedOrigins { #[cfg(test)] mod tests { use super::*; + use claims::{assert_err, assert_none, assert_ok_eq}; #[test] fn parse_traffic_patterns_splits_on_comma_and_looks_for_equal_sign() { diff --git a/src/controllers/category.rs b/src/controllers/category.rs index ea06cfa01ff..770a0cc8ed2 100644 --- a/src/controllers/category.rs +++ b/src/controllers/category.rs @@ -6,10 +6,11 @@ use crate::util::errors::AppResult; use crate::views::EncodableCategory; use axum::Json; use axum::extract::{FromRequestParts, Path, Query}; -use diesel::QueryDsl; +use diesel::prelude::*; use diesel_async::RunQueryDsl; use futures_util::FutureExt; use http::request::Parts; +use serde::{Deserialize, Serialize}; #[derive(Debug, Deserialize, FromRequestParts, utoipa::IntoParams)] #[from_request(via(Query))] diff --git a/src/controllers/crate_owner_invitation.rs b/src/controllers/crate_owner_invitation.rs index 014a0bc577b..127e7cb24aa 100644 --- a/src/controllers/crate_owner_invitation.rs +++ b/src/controllers/crate_owner_invitation.rs @@ -22,6 +22,7 @@ use diesel_async::{AsyncPgConnection, RunQueryDsl}; use http::StatusCode; use http::request::Parts; use indexmap::IndexMap; +use serde::{Deserialize, Serialize}; use std::collections::{HashMap, HashSet}; #[derive(Serialize, utoipa::ToSchema)] diff --git a/src/controllers/github/secret_scanning.rs b/src/controllers/github/secret_scanning.rs index 43250656890..ccaf73517d8 100644 --- a/src/controllers/github/secret_scanning.rs +++ b/src/controllers/github/secret_scanning.rs @@ -20,13 +20,14 @@ use minijinja::context; use p256::PublicKey; use p256::ecdsa::VerifyingKey; use p256::ecdsa::signature::Verifier; +use serde::{Deserialize, Serialize}; use serde_json as json; use std::collections::{BTreeMap, BTreeSet, HashMap}; use std::str::FromStr; use std::sync::LazyLock; use std::time::Duration; use tokio::sync::Mutex; -use tracing::warn; +use tracing::{debug, warn}; // Minimum number of seconds to wait before refreshing cache of GitHub's public keys const PUBLIC_KEY_CACHE_LIFETIME: Duration = Duration::from_secs(60 * 60 * 24); // 24 hours diff --git a/src/controllers/helpers.rs b/src/controllers/helpers.rs index 9a664656ba9..8ef73846e78 100644 --- a/src/controllers/helpers.rs +++ b/src/controllers/helpers.rs @@ -1,5 +1,6 @@ use axum::Json; use axum::response::{IntoResponse, Response}; +use serde::Serialize; pub mod authorization; pub(crate) mod pagination; diff --git a/src/controllers/helpers/pagination.rs b/src/controllers/helpers/pagination.rs index b13d5b29674..4fc88a03c9e 100644 --- a/src/controllers/helpers/pagination.rs +++ b/src/controllers/helpers/pagination.rs @@ -449,13 +449,13 @@ macro_rules! seek { $($(#[$field_meta:meta])? $field:ident: $ty:ty),* $(,)? }) => { paste::item! { - #[derive(Debug, Default, Deserialize, PartialEq)] + #[derive(Debug, Default, serde::Deserialize, PartialEq)] #[serde(from = $variant "Helper")] $vis struct $variant { $($(#[$field_meta])? pub(super) $field: $ty),* } - #[derive(Debug, Default, Deserialize, Serialize, PartialEq)] + #[derive(Debug, Default, serde::Deserialize, serde::Serialize, PartialEq)] struct [<$variant Helper>]($($(#[$field_meta])? pub(super) $ty),*); impl From<[<$variant Helper>]> for $variant { @@ -487,7 +487,7 @@ macro_rules! seek { seek!(@variant_struct $vis $variant $fields); )* paste::item! { - #[derive(Debug, Deserialize, Serialize, PartialEq)] + #[derive(Debug, serde::Deserialize, serde::Serialize, PartialEq)] #[serde(untagged)] $vis enum [<$name Payload>] { $( @@ -544,6 +544,7 @@ pub(crate) use seek; mod tests { use super::*; use chrono::Utc; + use claims::assert_ok_eq; use http::{Method, Request, StatusCode}; use insta::assert_snapshot; diff --git a/src/controllers/keyword.rs b/src/controllers/keyword.rs index 467247b7797..20d18b8ed05 100644 --- a/src/controllers/keyword.rs +++ b/src/controllers/keyword.rs @@ -8,6 +8,7 @@ use axum::Json; use axum::extract::{FromRequestParts, Path, Query}; use diesel::prelude::*; use http::request::Parts; +use serde::{Deserialize, Serialize}; #[derive(Debug, Deserialize, FromRequestParts, utoipa::IntoParams)] #[from_request(via(Query))] diff --git a/src/controllers/krate.rs b/src/controllers/krate.rs index 1fd32cd2769..9e6de400ab5 100644 --- a/src/controllers/krate.rs +++ b/src/controllers/krate.rs @@ -4,6 +4,7 @@ use axum::extract::{FromRequestParts, Path}; use crates_io_database::schema::crates; use diesel::{OptionalExtension, QueryDsl}; use diesel_async::{AsyncPgConnection, RunQueryDsl}; +use serde::Deserialize; use utoipa::IntoParams; pub mod delete; diff --git a/src/controllers/krate/delete.rs b/src/controllers/krate/delete.rs index 6afc3b2edf8..9beeb0811f1 100644 --- a/src/controllers/krate/delete.rs +++ b/src/controllers/krate/delete.rs @@ -19,6 +19,7 @@ use diesel_async::{AsyncConnection, AsyncPgConnection, RunQueryDsl}; use http::StatusCode; use http::request::Parts; use minijinja::context; +use serde::Deserialize; use tracing::error; const DOWNLOADS_PER_MONTH_LIMIT: u64 = 500; @@ -205,6 +206,7 @@ mod tests { use crate::tests::builders::{DependencyBuilder, PublishBuilder}; use crate::tests::util::{RequestHelper, Response, TestApp}; use axum::RequestPartsExt; + use claims::{assert_none, assert_some}; use crates_io_database::schema::crate_owners; use diesel_async::AsyncPgConnection; use http::{Request, StatusCode}; diff --git a/src/controllers/krate/downloads.rs b/src/controllers/krate/downloads.rs index b15b533e975..a9d7ab7371c 100644 --- a/src/controllers/krate/downloads.rs +++ b/src/controllers/krate/downloads.rs @@ -19,6 +19,7 @@ use diesel::prelude::*; use diesel_async::{AsyncPgConnection, RunQueryDsl}; use futures_util::FutureExt; use futures_util::future::BoxFuture; +use serde::{Deserialize, Serialize}; use std::cmp; use std::str::FromStr; diff --git a/src/controllers/krate/follow.rs b/src/controllers/krate/follow.rs index 168bc8e807f..dd6af617e1c 100644 --- a/src/controllers/krate/follow.rs +++ b/src/controllers/krate/follow.rs @@ -11,6 +11,7 @@ use axum::Json; use diesel::prelude::*; use diesel_async::{AsyncPgConnection, RunQueryDsl}; use http::request::Parts; +use serde::Serialize; async fn follow_target( crate_name: &str, diff --git a/src/controllers/krate/metadata.rs b/src/controllers/krate/metadata.rs index 7f00f00d885..f2416327718 100644 --- a/src/controllers/krate/metadata.rs +++ b/src/controllers/krate/metadata.rs @@ -21,6 +21,7 @@ use diesel::prelude::*; use diesel_async::{AsyncPgConnection, RunQueryDsl}; use futures_util::FutureExt; use futures_util::future::{BoxFuture, always_ready}; +use serde::{Deserialize, Serialize}; use std::str::FromStr; #[derive(Debug, Deserialize, FromRequestParts, utoipa::IntoParams)] diff --git a/src/controllers/krate/owners.rs b/src/controllers/krate/owners.rs index 439dadab69e..ac2a4da23c7 100644 --- a/src/controllers/krate/owners.rs +++ b/src/controllers/krate/owners.rs @@ -23,6 +23,7 @@ use http::request::Parts; use minijinja::context; use oauth2::AccessToken; use secrecy::ExposeSecret; +use serde::{Deserialize, Serialize}; use thiserror::Error; use tracing::warn; diff --git a/src/controllers/krate/publish.rs b/src/controllers/krate/publish.rs index 7a9424b3788..e29e4e4c99d 100644 --- a/src/controllers/krate/publish.rs +++ b/src/controllers/krate/publish.rs @@ -26,6 +26,7 @@ use sha2::{Digest, Sha256}; use std::collections::HashMap; use tokio::io::{AsyncRead, AsyncReadExt}; use tokio_util::io::StreamReader; +use tracing::{error, instrument}; use url::Url; use crate::models::{ @@ -1024,6 +1025,7 @@ impl From for BoxedAppError { #[cfg(test)] mod tests { use super::{missing_metadata_error_message, validate_url}; + use claims::assert_err; #[test] fn deny_relative_urls() { diff --git a/src/controllers/krate/rev_deps.rs b/src/controllers/krate/rev_deps.rs index 5c346794bac..0c5d9793bf0 100644 --- a/src/controllers/krate/rev_deps.rs +++ b/src/controllers/krate/rev_deps.rs @@ -9,6 +9,7 @@ use crates_io_database::schema::{crates, users, versions}; use diesel::prelude::*; use diesel_async::RunQueryDsl; use http::request::Parts; +use serde::Serialize; #[derive(Debug, Serialize, utoipa::ToSchema)] pub struct RevDepsResponse { diff --git a/src/controllers/krate/search.rs b/src/controllers/krate/search.rs index 621c005a4af..cec74691430 100644 --- a/src/controllers/krate/search.rs +++ b/src/controllers/krate/search.rs @@ -5,13 +5,15 @@ use axum::Json; use axum::extract::FromRequestParts; use axum_extra::extract::Query; use derive_more::Deref; +use diesel::alias; use diesel::dsl::{InnerJoinQuerySource, LeftJoinQuerySource, exists}; use diesel::prelude::*; use diesel::sql_types::Bool; use diesel_async::{AsyncPgConnection, RunQueryDsl}; use diesel_full_text_search::{configuration::TsConfigurationByName, *}; use http::request::Parts; -use tracing::Instrument; +use serde::{Deserialize, Serialize}; +use tracing::{Instrument, info_span}; use utoipa::IntoParams; use crate::app::AppState; diff --git a/src/controllers/krate/versions.rs b/src/controllers/krate/versions.rs index e20c21270a9..7c221d3af19 100644 --- a/src/controllers/krate/versions.rs +++ b/src/controllers/krate/versions.rs @@ -21,6 +21,7 @@ use diesel_async::{AsyncPgConnection, RunQueryDsl}; use futures_util::{TryStreamExt, future}; use http::request::Parts; use indexmap::{IndexMap, IndexSet}; +use serde::{Deserialize, Serialize}; use std::str::FromStr; #[derive(Debug, Deserialize, FromRequestParts, utoipa::IntoParams)] diff --git a/src/controllers/session.rs b/src/controllers/session.rs index c2e30f75232..7ca76afbb2b 100644 --- a/src/controllers/session.rs +++ b/src/controllers/session.rs @@ -1,13 +1,3 @@ -use axum::Json; -use axum::extract::{FromRequestParts, Query}; -use diesel::prelude::*; -use diesel_async::scoped_futures::ScopedFutureExt; -use diesel_async::{AsyncConnection, AsyncPgConnection, RunQueryDsl}; -use http::request::Parts; -use minijinja::context; -use oauth2::{AuthorizationCode, CsrfToken, Scope, TokenResponse}; -use secrecy::ExposeSecret; - use crate::app::AppState; use crate::email::EmailMessage; use crate::email::Emails; @@ -17,8 +7,19 @@ use crate::schema::users; use crate::util::diesel::is_read_only_error; use crate::util::errors::{AppResult, bad_request, server_error}; use crate::views::EncodableMe; +use axum::Json; +use axum::extract::{FromRequestParts, Query}; use crates_io_github::GitHubUser; use crates_io_session::SessionExtension; +use diesel::prelude::*; +use diesel_async::scoped_futures::ScopedFutureExt; +use diesel_async::{AsyncConnection, AsyncPgConnection, RunQueryDsl}; +use http::request::Parts; +use minijinja::context; +use oauth2::{AuthorizationCode, CsrfToken, Scope, TokenResponse}; +use secrecy::ExposeSecret; +use serde::{Deserialize, Serialize}; +use tracing::warn; #[derive(Debug, Serialize, utoipa::ToSchema)] pub struct BeginResponse { diff --git a/src/controllers/site_metadata.rs b/src/controllers/site_metadata.rs index cf2248c1cf5..37d4f4f4278 100644 --- a/src/controllers/site_metadata.rs +++ b/src/controllers/site_metadata.rs @@ -1,6 +1,7 @@ use crate::app::AppState; use axum::Json; use axum::response::IntoResponse; +use serde::Serialize; #[derive(Debug, Serialize, utoipa::ToSchema)] pub struct MetadataResponse<'a> { diff --git a/src/controllers/summary.rs b/src/controllers/summary.rs index 1eab25083b4..eea640169c4 100644 --- a/src/controllers/summary.rs +++ b/src/controllers/summary.rs @@ -9,6 +9,7 @@ use axum::Json; use diesel::prelude::*; use diesel_async::{AsyncPgConnection, RunQueryDsl}; use futures_util::FutureExt; +use serde::Serialize; use std::future::Future; #[derive(Debug, Serialize, utoipa::ToSchema)] diff --git a/src/controllers/team.rs b/src/controllers/team.rs index 23ba01a10fd..ddf64f8a348 100644 --- a/src/controllers/team.rs +++ b/src/controllers/team.rs @@ -6,6 +6,7 @@ use axum::Json; use axum::extract::Path; use diesel::prelude::*; use diesel_async::RunQueryDsl; +use serde::Serialize; #[derive(Debug, Serialize, utoipa::ToSchema)] pub struct GetResponse { diff --git a/src/controllers/token.rs b/src/controllers/token.rs index 42cb3a9d87c..5d29ed98c90 100644 --- a/src/controllers/token.rs +++ b/src/controllers/token.rs @@ -24,7 +24,8 @@ use http::StatusCode; use http::request::Parts; use minijinja::context; use secrecy::ExposeSecret; -use serde::Serialize; +use serde::{Deserialize, Serialize}; +use tracing::error; #[derive(Deserialize)] pub struct GetParams { diff --git a/src/controllers/trustpub/github_configs/create/mod.rs b/src/controllers/trustpub/github_configs/create/mod.rs index 7e6e3e99ebc..599357aa103 100644 --- a/src/controllers/trustpub/github_configs/create/mod.rs +++ b/src/controllers/trustpub/github_configs/create/mod.rs @@ -19,6 +19,7 @@ use http::request::Parts; use minijinja::context; use oauth2::AccessToken; use secrecy::ExposeSecret; +use tracing::warn; #[cfg(test)] mod tests; diff --git a/src/controllers/trustpub/github_configs/json.rs b/src/controllers/trustpub/github_configs/json.rs index 8fb0870fd40..376cdabcb9f 100644 --- a/src/controllers/trustpub/github_configs/json.rs +++ b/src/controllers/trustpub/github_configs/json.rs @@ -1,6 +1,7 @@ use axum::Json; use axum::extract::FromRequest; use chrono::{DateTime, Utc}; +use serde::{Deserialize, Serialize}; #[derive(Debug, Serialize, utoipa::ToSchema)] pub struct GitHubConfig { diff --git a/src/controllers/trustpub/github_configs/list/mod.rs b/src/controllers/trustpub/github_configs/list/mod.rs index 59c08934fcd..2349b4c261a 100644 --- a/src/controllers/trustpub/github_configs/list/mod.rs +++ b/src/controllers/trustpub/github_configs/list/mod.rs @@ -12,6 +12,7 @@ use diesel::dsl::{exists, select}; use diesel::prelude::*; use diesel_async::RunQueryDsl; use http::request::Parts; +use serde::Deserialize; #[cfg(test)] mod tests; diff --git a/src/controllers/trustpub/tokens/exchange/mod.rs b/src/controllers/trustpub/tokens/exchange/mod.rs index ff1e7e5ec69..02398f9f037 100644 --- a/src/controllers/trustpub/tokens/exchange/mod.rs +++ b/src/controllers/trustpub/tokens/exchange/mod.rs @@ -14,6 +14,7 @@ use diesel::result::Error::DatabaseError; use diesel_async::scoped_futures::ScopedFutureExt; use diesel_async::{AsyncConnection, RunQueryDsl}; use secrecy::ExposeSecret; +use tracing::warn; #[cfg(test)] mod tests; diff --git a/src/controllers/trustpub/tokens/exchange/tests.rs b/src/controllers/trustpub/tokens/exchange/tests.rs index e903b473ae8..ed7ef69db7a 100644 --- a/src/controllers/trustpub/tokens/exchange/tests.rs +++ b/src/controllers/trustpub/tokens/exchange/tests.rs @@ -1,5 +1,6 @@ use crate::tests::builders::CrateBuilder; use crate::tests::util::{MockAnonymousUser, RequestHelper, TestApp}; +use claims::assert_ok; use crates_io_database::models::trustpub::NewGitHubConfig; use crates_io_database::schema::trustpub_tokens; use crates_io_trustpub::access_token::AccessToken; diff --git a/src/controllers/trustpub/tokens/json.rs b/src/controllers/trustpub/tokens/json.rs index c9fefbef0c3..0920e06da8d 100644 --- a/src/controllers/trustpub/tokens/json.rs +++ b/src/controllers/trustpub/tokens/json.rs @@ -1,5 +1,6 @@ use axum::Json; use axum::extract::FromRequest; +use serde::{Deserialize, Serialize}; #[derive(Debug, Deserialize, FromRequest, utoipa::ToSchema)] #[from_request(via(Json))] diff --git a/src/controllers/user/email_notifications.rs b/src/controllers/user/email_notifications.rs index baf6e760c6e..dbf2e24936a 100644 --- a/src/controllers/user/email_notifications.rs +++ b/src/controllers/user/email_notifications.rs @@ -8,6 +8,7 @@ use axum::Json; use diesel::prelude::*; use diesel_async::RunQueryDsl; use http::request::Parts; +use serde::Deserialize; use std::collections::HashMap; #[derive(Deserialize)] diff --git a/src/controllers/user/me.rs b/src/controllers/user/me.rs index 1b5989e77b1..046ebcc86d3 100644 --- a/src/controllers/user/me.rs +++ b/src/controllers/user/me.rs @@ -1,11 +1,5 @@ -use crate::auth::AuthCheck; -use axum::Json; -use diesel::prelude::*; -use diesel_async::RunQueryDsl; -use futures_util::FutureExt; -use http::request::Parts; - use crate::app::AppState; +use crate::auth::AuthCheck; use crate::controllers::helpers::Paginate; use crate::controllers::helpers::pagination::{Paginated, PaginationOptions}; use crate::models::krate::CrateName; @@ -13,6 +7,12 @@ use crate::models::{CrateOwner, Follow, OwnerKind, User, Version, VersionOwnerAc use crate::schema::{crate_owners, crates, emails, follows, users, versions}; use crate::util::errors::AppResult; use crate::views::{EncodableMe, EncodablePrivateUser, EncodableVersion, OwnedCrate}; +use axum::Json; +use diesel::prelude::*; +use diesel_async::RunQueryDsl; +use futures_util::FutureExt; +use http::request::Parts; +use serde::Serialize; /// Get the currently authenticated user. #[utoipa::path( diff --git a/src/controllers/user/other.rs b/src/controllers/user/other.rs index b0ac93b29ba..de438bed6e6 100644 --- a/src/controllers/user/other.rs +++ b/src/controllers/user/other.rs @@ -1,15 +1,15 @@ -use axum::Json; -use axum::extract::Path; -use bigdecimal::{BigDecimal, ToPrimitive}; -use diesel::prelude::*; -use diesel_async::RunQueryDsl; - use crate::app::AppState; use crate::models::{CrateOwner, OwnerKind, User}; use crate::schema::{crate_downloads, crate_owners, crates}; use crate::util::errors::AppResult; use crate::views::EncodablePublicUser; +use axum::Json; +use axum::extract::Path; +use bigdecimal::{BigDecimal, ToPrimitive}; use crates_io_diesel_helpers::lower; +use diesel::prelude::*; +use diesel_async::RunQueryDsl; +use serde::Serialize; #[derive(Debug, Serialize, utoipa::ToSchema)] pub struct GetResponse { diff --git a/src/controllers/user/update.rs b/src/controllers/user/update.rs index 6a681b6bdae..7d5174974b1 100644 --- a/src/controllers/user/update.rs +++ b/src/controllers/user/update.rs @@ -13,6 +13,8 @@ use http::request::Parts; use lettre::Address; use minijinja::context; use secrecy::ExposeSecret; +use serde::Deserialize; +use tracing::warn; #[derive(Deserialize)] pub struct UserUpdate { diff --git a/src/controllers/version/dependencies.rs b/src/controllers/version/dependencies.rs index 26ef36b9062..4246efaf49c 100644 --- a/src/controllers/version/dependencies.rs +++ b/src/controllers/version/dependencies.rs @@ -7,6 +7,7 @@ use axum::Json; use crates_io_database::schema::{crates, dependencies}; use diesel::prelude::*; use diesel_async::RunQueryDsl; +use serde::Serialize; #[derive(Debug, Serialize, utoipa::ToSchema)] pub struct Response { diff --git a/src/controllers/version/docs.rs b/src/controllers/version/docs.rs index f6d907e6a05..664f4f5995e 100644 --- a/src/controllers/version/docs.rs +++ b/src/controllers/version/docs.rs @@ -9,6 +9,7 @@ use crate::worker::jobs; use crates_io_worker::BackgroundJob as _; use http::StatusCode; use http::request::Parts; +use tracing::error; /// Trigger a rebuild for the crate documentation on docs.rs. #[utoipa::path( diff --git a/src/controllers/version/downloads.rs b/src/controllers/version/downloads.rs index 631a29438e8..0410bbd409a 100644 --- a/src/controllers/version/downloads.rs +++ b/src/controllers/version/downloads.rs @@ -17,6 +17,7 @@ use chrono::{Duration, NaiveDate, Utc}; use diesel::prelude::*; use diesel_async::RunQueryDsl; use http::request::Parts; +use serde::{Deserialize, Serialize}; #[derive(Debug, Serialize, utoipa::ToSchema)] pub struct UrlResponse { diff --git a/src/controllers/version/metadata.rs b/src/controllers/version/metadata.rs index f3d141f1cec..381ec6cb6ba 100644 --- a/src/controllers/version/metadata.rs +++ b/src/controllers/version/metadata.rs @@ -4,12 +4,12 @@ //! index or cached metadata which was extracted (client side) from the //! `Cargo.toml` file. -use axum::Json; - use crate::app::AppState; use crate::models::VersionOwnerAction; use crate::util::errors::AppResult; use crate::views::EncodableVersion; +use axum::Json; +use serde::Serialize; use super::CrateVersionPath; diff --git a/src/controllers/version/readme.rs b/src/controllers/version/readme.rs index 19747ff6aba..9b5169b7109 100644 --- a/src/controllers/version/readme.rs +++ b/src/controllers/version/readme.rs @@ -4,6 +4,7 @@ use crate::util::{RequestUtils, redirect}; use axum::Json; use axum::response::{IntoResponse, Response}; use http::request::Parts; +use serde::Serialize; #[derive(Debug, Serialize, utoipa::ToSchema)] pub struct UrlResponse { diff --git a/src/controllers/version/update.rs b/src/controllers/version/update.rs index 272bb0517d2..96647db7afe 100644 --- a/src/controllers/version/update.rs +++ b/src/controllers/version/update.rs @@ -15,7 +15,8 @@ use diesel::prelude::*; use diesel_async::{AsyncPgConnection, RunQueryDsl}; use http::StatusCode; use http::request::Parts; -use serde::Deserialize; +use serde::{Deserialize, Serialize}; +use tracing::warn; #[derive(Deserialize)] pub struct VersionUpdate { diff --git a/src/email.rs b/src/email.rs index d6a683d3fcf..2545c0955ea 100644 --- a/src/email.rs +++ b/src/email.rs @@ -233,6 +233,7 @@ pub struct StoredEmail { #[cfg(test)] mod tests { use super::*; + use claims::{assert_err, assert_ok}; #[tokio::test] async fn sending_to_invalid_email_fails() { diff --git a/src/external_urls.rs b/src/external_urls.rs index 7f3f7ed6116..acf92a4061a 100644 --- a/src/external_urls.rs +++ b/src/external_urls.rs @@ -49,6 +49,7 @@ fn domain_is_subdomain(potential_subdomain: &str, root: &str) -> bool { #[cfg(test)] mod tests { use super::*; + use claims::assert_some_eq; #[test] fn domain_blocked_no_url_provided() { diff --git a/src/fastly.rs b/src/fastly.rs index 8ec0b5361af..ae865c83771 100644 --- a/src/fastly.rs +++ b/src/fastly.rs @@ -2,6 +2,7 @@ use anyhow::{Context, anyhow}; use reqwest::Client; use reqwest::header::{HeaderMap, HeaderValue}; use secrecy::{ExposeSecret, SecretString}; +use tracing::{debug, instrument, trace}; #[derive(Debug)] pub struct Fastly { diff --git a/src/index.rs b/src/index.rs index 0e52eb91962..b8c2645e6e3 100644 --- a/src/index.rs +++ b/src/index.rs @@ -9,6 +9,7 @@ use crates_io_index::features::split_features; use diesel::prelude::*; use diesel_async::{AsyncPgConnection, RunQueryDsl}; use sentry::Level; +use tracing::{debug, instrument}; #[instrument(skip_all, fields(krate.name = ?name))] pub async fn get_index_data( diff --git a/src/lib.rs b/src/lib.rs index 7f3839dfd75..7428861b43a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,16 +4,6 @@ //! implemented in the [category](category/index.html), [keyword](keyword/index.html), //! [krate](krate/index.html), [user](user/index.html) and [version](version/index.html) modules. -#[cfg(test)] -#[macro_use] -extern crate claims; -#[macro_use] -extern crate diesel; -#[macro_use] -extern crate serde; -#[macro_use] -extern crate tracing; - pub use crate::{app::App, email::Emails}; pub use crates_io_database::{models, schema}; use std::sync::Arc; diff --git a/src/licenses.rs b/src/licenses.rs index c2a49883b2e..a078923d7c3 100644 --- a/src/licenses.rs +++ b/src/licenses.rs @@ -14,6 +14,7 @@ pub fn parse_license_expr(s: &str) -> Result { #[cfg(test)] mod tests { use super::parse_license_expr; + use claims::{assert_err, assert_ok}; #[test] fn licenses() { diff --git a/src/metrics/log_encoder.rs b/src/metrics/log_encoder.rs index 4146152a942..c5d70e43c44 100644 --- a/src/metrics/log_encoder.rs +++ b/src/metrics/log_encoder.rs @@ -9,6 +9,7 @@ use std::cell::Cell; use std::collections::HashMap; use std::io::Write; use std::rc::Rc; +use tracing::{info, warn}; const CHUNKS_MAX_SIZE_BYTES: usize = 5000; diff --git a/src/middleware/cargo_compat.rs b/src/middleware/cargo_compat.rs index 21b1826bb43..b41abc04cf0 100644 --- a/src/middleware/cargo_compat.rs +++ b/src/middleware/cargo_compat.rs @@ -4,6 +4,7 @@ use axum::middleware::Next; use axum::response::{IntoResponse, Response}; use http::{Method, StatusCode, header}; use std::str::FromStr; +use tracing::error; #[derive(Clone, Copy, Debug)] pub enum StatusCodeConfig { diff --git a/src/middleware/debug.rs b/src/middleware/debug.rs index 9b622d59745..ff336c66075 100644 --- a/src/middleware/debug.rs +++ b/src/middleware/debug.rs @@ -3,6 +3,7 @@ use axum::extract::Request; use axum::middleware::Next; use axum::response::IntoResponse; +use tracing::debug; pub async fn debug_requests(req: Request, next: Next) -> impl IntoResponse { debug!(" version: {:?}", req.version()); diff --git a/src/middleware/log_request.rs b/src/middleware/log_request.rs index 8af57c6d88d..007371aa895 100644 --- a/src/middleware/log_request.rs +++ b/src/middleware/log_request.rs @@ -19,7 +19,7 @@ use std::collections::HashMap; use std::fmt::Display; use std::sync::Arc; use std::time::Instant; -use tracing::Level; +use tracing::{Level, event}; #[derive(Clone, Debug)] pub struct ErrorField(pub String); diff --git a/src/middleware/normalize_path.rs b/src/middleware/normalize_path.rs index c69ef96342c..9213a3acadb 100644 --- a/src/middleware/normalize_path.rs +++ b/src/middleware/normalize_path.rs @@ -69,6 +69,7 @@ mod tests { use super::{OriginalPath, normalize_path_inner}; use axum::body::Body; use axum::extract::Request; + use claims::assert_some; #[test] fn path_normalization() { diff --git a/src/middleware/real_ip.rs b/src/middleware/real_ip.rs index 20f323bdd4d..81f8b846439 100644 --- a/src/middleware/real_ip.rs +++ b/src/middleware/real_ip.rs @@ -4,6 +4,7 @@ use axum::middleware::Next; use axum::response::IntoResponse; use derive_more::Deref; use std::net::{IpAddr, SocketAddr}; +use tracing::debug; #[derive(Copy, Clone, Debug, Deref)] pub struct RealIp(IpAddr); diff --git a/src/real_ip.rs b/src/real_ip.rs index 41452d8f47a..667f519383b 100644 --- a/src/real_ip.rs +++ b/src/real_ip.rs @@ -4,6 +4,7 @@ use std::iter::Iterator; use std::net::IpAddr; use std::str::from_utf8; use std::sync::LazyLock; +use tracing::warn; const X_FORWARDED_FOR: &str = "X-Forwarded-For"; diff --git a/src/sentry/mod.rs b/src/sentry/mod.rs index a84d810f1c0..614a8cceaff 100644 --- a/src/sentry/mod.rs +++ b/src/sentry/mod.rs @@ -3,6 +3,7 @@ use http::header::{AUTHORIZATION, COOKIE}; use sentry::protocol::Event; use sentry::{ClientInitGuard, ClientOptions, TransactionContext}; use std::sync::Arc; +use tracing::warn; /// Initializes the Sentry SDK from the environment variables. /// @@ -88,6 +89,7 @@ fn options(config: SentryConfig) -> ClientOptions { #[cfg(test)] mod tests { use super::*; + use claims::{assert_none, assert_some}; use sentry::{ capture_error, diff --git a/src/storage.rs b/src/storage.rs index eb642bb1586..f948483f8fa 100644 --- a/src/storage.rs +++ b/src/storage.rs @@ -15,6 +15,7 @@ use std::path::PathBuf; use std::sync::Arc; use tokio::fs::File; use tokio::io::AsyncWriteExt; +use tracing::{instrument, warn}; const PREFIX_CRATES: &str = "crates"; const PREFIX_READMES: &str = "readmes"; diff --git a/src/tests/categories.rs b/src/tests/categories.rs index 79976676a1f..4076333fbfe 100644 --- a/src/tests/categories.rs +++ b/src/tests/categories.rs @@ -1,4 +1,5 @@ use crate::schema::categories; +use claims::assert_ok; use crates_io_test_db::TestDatabase; use diesel::*; use diesel_async::{AsyncPgConnection, RunQueryDsl}; diff --git a/src/tests/github_secret_scanning.rs b/src/tests/github_secret_scanning.rs index 0054639b4dd..1786e614d21 100644 --- a/src/tests/github_secret_scanning.rs +++ b/src/tests/github_secret_scanning.rs @@ -6,6 +6,7 @@ use crate::util::token::HashedToken; use crate::{models::ApiToken, schema::api_tokens}; use base64::{Engine as _, engine::general_purpose}; use chrono::{TimeDelta, Utc}; +use claims::assert_ok; use crates_io_database::models::CrateOwner; use crates_io_database::models::trustpub::NewToken; use crates_io_database::schema::trustpub_tokens; diff --git a/src/tests/issues/issue2736.rs b/src/tests/issues/issue2736.rs index 5f4eabd663d..7ea847ce4ec 100644 --- a/src/tests/issues/issue2736.rs +++ b/src/tests/issues/issue2736.rs @@ -1,6 +1,7 @@ use crate::models::CrateOwner; use crate::tests::builders::CrateBuilder; use crate::tests::util::{RequestHelper, TestApp}; +use claims::assert_none; use crates_io_database::schema::users; use diesel::prelude::*; use diesel_async::RunQueryDsl; diff --git a/src/tests/krate/publish/max_size.rs b/src/tests/krate/publish/max_size.rs index 4f18d839135..3f3ddb07ea6 100644 --- a/src/tests/krate/publish/max_size.rs +++ b/src/tests/krate/publish/max_size.rs @@ -1,5 +1,6 @@ use crate::tests::builders::{CrateBuilder, PublishBuilder}; use crate::tests::util::{RequestHelper, TestApp}; +use claims::assert_ok; use crates_io_tarball::TarballBuilder; use flate2::Compression; use googletest::prelude::*; diff --git a/src/tests/krate/publish/tarball.rs b/src/tests/krate/publish/tarball.rs index c80ef300abb..e58e3316ffa 100644 --- a/src/tests/krate/publish/tarball.rs +++ b/src/tests/krate/publish/tarball.rs @@ -1,6 +1,7 @@ use crate::tests::builders::PublishBuilder; use crate::tests::util::{RequestHelper, TestApp}; use bytes::{BufMut, BytesMut}; +use claims::assert_ok; use crates_io_tarball::TarballBuilder; use googletest::prelude::*; use insta::assert_snapshot; diff --git a/src/tests/krate/yanking.rs b/src/tests/krate/yanking.rs index b2d2483704b..12e7192a326 100644 --- a/src/tests/krate/yanking.rs +++ b/src/tests/krate/yanking.rs @@ -5,6 +5,7 @@ use crate::tests::builders::PublishBuilder; use crate::tests::routes::crates::versions::yank_unyank::YankRequestHelper; use crate::tests::util::{RequestHelper, TestApp}; use chrono::Utc; +use claims::assert_some_eq; use diesel::ExpressionMethods; use diesel_async::RunQueryDsl; use googletest::prelude::*; diff --git a/src/tests/mod.rs b/src/tests/mod.rs index 9d0ee1983a3..eba892f98a8 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -8,6 +8,7 @@ use crate::views::{ use crate::tests::util::github::next_gh_id; use diesel::prelude::*; use diesel_async::AsyncPgConnection; +use serde::{Deserialize, Serialize}; mod account_lock; mod authentication; diff --git a/src/tests/owners.rs b/src/tests/owners.rs index 8777b66ac3b..837a1d8e077 100644 --- a/src/tests/owners.rs +++ b/src/tests/owners.rs @@ -14,6 +14,7 @@ use diesel::prelude::*; use diesel_async::RunQueryDsl; use http::StatusCode; use insta::assert_snapshot; +use serde::Deserialize; use serde_json::json; #[derive(Deserialize)] diff --git a/src/tests/read_only_mode.rs b/src/tests/read_only_mode.rs index eb285f33552..6e7baa7fca5 100644 --- a/src/tests/read_only_mode.rs +++ b/src/tests/read_only_mode.rs @@ -1,6 +1,6 @@ use crate::tests::builders::CrateBuilder; use crate::tests::{RequestHelper, TestApp}; - +use claims::assert_ok_eq; use diesel::prelude::*; use diesel_async::RunQueryDsl; use insta::{assert_json_snapshot, assert_snapshot}; diff --git a/src/tests/routes/categories/get.rs b/src/tests/routes/categories/get.rs index b25b3a6bee5..4c99e804a5a 100644 --- a/src/tests/routes/categories/get.rs +++ b/src/tests/routes/categories/get.rs @@ -2,6 +2,7 @@ use crate::models::Category; use crate::tests::builders::CrateBuilder; use crate::tests::new_category; use crate::tests::util::{MockAnonymousUser, RequestHelper, TestApp}; +use claims::assert_ok; use crates_io_database::schema::categories; use diesel::insert_into; use diesel_async::RunQueryDsl; diff --git a/src/tests/routes/crates/downloads.rs b/src/tests/routes/crates/downloads.rs index 6fe1f1a11ae..ac4894d3c7e 100644 --- a/src/tests/routes/crates/downloads.rs +++ b/src/tests/routes/crates/downloads.rs @@ -7,6 +7,7 @@ use diesel::prelude::*; use diesel_async::{AsyncPgConnection, RunQueryDsl}; use http::StatusCode; use insta::{assert_json_snapshot, assert_snapshot}; +use serde::Deserialize; #[derive(Deserialize)] struct Downloads { diff --git a/src/tests/routes/crates/versions/dependencies.rs b/src/tests/routes/crates/versions/dependencies.rs index 34be8a21db9..f783bfc1075 100644 --- a/src/tests/routes/crates/versions/dependencies.rs +++ b/src/tests/routes/crates/versions/dependencies.rs @@ -2,6 +2,7 @@ use crate::tests::builders::{CrateBuilder, VersionBuilder}; use crate::tests::util::{RequestHelper, TestApp}; use crate::views::EncodableDependency; use insta::assert_snapshot; +use serde::Deserialize; #[derive(Deserialize)] pub struct Deps { diff --git a/src/tests/routes/crates/versions/list.rs b/src/tests/routes/crates/versions/list.rs index a56a56f9cee..29d7047974e 100644 --- a/src/tests/routes/crates/versions/list.rs +++ b/src/tests/routes/crates/versions/list.rs @@ -6,6 +6,7 @@ use diesel::{prelude::*, update}; use diesel_async::RunQueryDsl; use googletest::prelude::*; use insta::{assert_json_snapshot, assert_snapshot}; +use serde::Deserialize; use serde_json::json; #[tokio::test(flavor = "multi_thread")] diff --git a/src/tests/routes/keywords/list.rs b/src/tests/routes/keywords/list.rs index 5892c20126d..e70d01c07fa 100644 --- a/src/tests/routes/keywords/list.rs +++ b/src/tests/routes/keywords/list.rs @@ -1,6 +1,7 @@ use crate::models::Keyword; use crate::tests::util::{RequestHelper, TestApp}; use crate::views::EncodableKeyword; +use serde::Deserialize; #[derive(Deserialize)] struct KeywordList { diff --git a/src/tests/routes/keywords/read.rs b/src/tests/routes/keywords/read.rs index 80f151cd0da..703da785089 100644 --- a/src/tests/routes/keywords/read.rs +++ b/src/tests/routes/keywords/read.rs @@ -3,6 +3,7 @@ use crate::tests::builders::CrateBuilder; use crate::tests::util::{RequestHelper, TestApp}; use crate::views::EncodableKeyword; use insta::assert_snapshot; +use serde::Deserialize; #[derive(Deserialize)] struct GoodKeyword { diff --git a/src/tests/routes/me/email_notifications.rs b/src/tests/routes/me/email_notifications.rs index 85514982ef9..7140a5ee76f 100644 --- a/src/tests/routes/me/email_notifications.rs +++ b/src/tests/routes/me/email_notifications.rs @@ -5,6 +5,7 @@ use crate::tests::util::{RequestHelper, TestApp}; use diesel::prelude::*; use diesel_async::RunQueryDsl; use http::StatusCode; +use serde::Serialize; use serde_json::json; #[derive(Serialize)] diff --git a/src/tests/routes/me/get.rs b/src/tests/routes/me/get.rs index e8818833cfd..25cdff6bc41 100644 --- a/src/tests/routes/me/get.rs +++ b/src/tests/routes/me/get.rs @@ -2,6 +2,7 @@ use crate::tests::builders::CrateBuilder; use crate::tests::util::{RequestHelper, TestApp}; use crate::views::{EncodablePrivateUser, OwnedCrate}; use insta::{assert_json_snapshot, assert_snapshot}; +use serde::Deserialize; impl crate::tests::util::MockCookieUser { pub async fn show_me(&self) -> UserShowPrivateResponse { diff --git a/src/tests/routes/me/tokens/create.rs b/src/tests/routes/me/tokens/create.rs index 856c8f18e5d..03504a3e9d1 100644 --- a/src/tests/routes/me/tokens/create.rs +++ b/src/tests/routes/me/tokens/create.rs @@ -2,6 +2,7 @@ use crate::models::ApiToken; use crate::models::token::{CrateScope, EndpointScope, NewApiToken}; use crate::tests::util::insta::{self, assert_json_snapshot}; use crate::tests::util::{RequestHelper, TestApp}; +use claims::assert_ok; use diesel::prelude::*; use diesel_async::RunQueryDsl; use googletest::prelude::*; diff --git a/src/tests/routes/me/tokens/delete.rs b/src/tests/routes/me/tokens/delete.rs index 44b72cd321b..deecb14c220 100644 --- a/src/tests/routes/me/tokens/delete.rs +++ b/src/tests/routes/me/tokens/delete.rs @@ -1,8 +1,10 @@ use crate::models::ApiToken; use crate::schema::api_tokens; use crate::tests::util::{RequestHelper, TestApp}; +use claims::assert_ok; use diesel::prelude::*; use diesel_async::RunQueryDsl; +use serde::Deserialize; #[derive(Deserialize)] pub struct RevokedResponse {} diff --git a/src/tests/routes/me/tokens/delete_current.rs b/src/tests/routes/me/tokens/delete_current.rs index 6db821fb85a..62f7717ecaa 100644 --- a/src/tests/routes/me/tokens/delete_current.rs +++ b/src/tests/routes/me/tokens/delete_current.rs @@ -1,6 +1,7 @@ use crate::models::ApiToken; use crate::schema::api_tokens; use crate::tests::util::{RequestHelper, TestApp}; +use claims::assert_ok; use diesel::prelude::*; use diesel_async::RunQueryDsl; use insta::assert_snapshot; diff --git a/src/tests/routes/me/tokens/get.rs b/src/tests/routes/me/tokens/get.rs index dbf7db69dc5..15aa4d38490 100644 --- a/src/tests/routes/me/tokens/get.rs +++ b/src/tests/routes/me/tokens/get.rs @@ -1,6 +1,7 @@ use crate::models::token::{CrateScope, EndpointScope, NewApiToken}; use crate::tests::util::{RequestHelper, TestApp}; use chrono::{Duration, Utc}; +use claims::assert_ok; use insta::{assert_json_snapshot, assert_snapshot}; #[tokio::test(flavor = "multi_thread")] diff --git a/src/tests/routes/me/tokens/list.rs b/src/tests/routes/me/tokens/list.rs index a17c8efd4e4..87d66974dcb 100644 --- a/src/tests/routes/me/tokens/list.rs +++ b/src/tests/routes/me/tokens/list.rs @@ -2,6 +2,7 @@ use crate::models::token::{CrateScope, EndpointScope, NewApiToken}; use crate::tests::util::insta::{self, assert_json_snapshot}; use crate::tests::util::{RequestHelper, TestApp}; use chrono::{Duration, Utc}; +use claims::{assert_ok, assert_some}; use insta::assert_snapshot; use serde_json::json; diff --git a/src/tests/routes/me/updates.rs b/src/tests/routes/me/updates.rs index 2cb9bb10505..eb4694ff9ad 100644 --- a/src/tests/routes/me/updates.rs +++ b/src/tests/routes/me/updates.rs @@ -3,11 +3,13 @@ use crate::tests::OkBool; use crate::tests::builders::{CrateBuilder, VersionBuilder}; use crate::tests::util::{RequestHelper, TestApp}; use crate::views::EncodableVersion; +use claims::assert_none; use diesel::prelude::*; use diesel::update; use diesel_async::RunQueryDsl; use googletest::prelude::*; use insta::assert_snapshot; +use serde::Deserialize; #[tokio::test(flavor = "multi_thread")] async fn api_token_cannot_get_user_updates() { diff --git a/src/tests/routes/private/crate_owner_invitations.rs b/src/tests/routes/private/crate_owner_invitations.rs index d34cfd8e4fd..94ca8b78b54 100644 --- a/src/tests/routes/private/crate_owner_invitations.rs +++ b/src/tests/routes/private/crate_owner_invitations.rs @@ -4,6 +4,7 @@ use crate::tests::builders::CrateBuilder; use crate::tests::util::{MockCookieUser, RequestHelper, TestApp}; use crate::views::{EncodableCrateOwnerInvitation, EncodablePublicUser}; use http::StatusCode; +use serde::Deserialize; use serde_json::json; #[derive(Deserialize, Debug, PartialEq, Eq)] diff --git a/src/tests/routes/session/begin.rs b/src/tests/routes/session/begin.rs index 7cbc6abcd60..e820da6d952 100644 --- a/src/tests/routes/session/begin.rs +++ b/src/tests/routes/session/begin.rs @@ -1,4 +1,5 @@ use crate::tests::util::{RequestHelper, TestApp}; +use serde::Deserialize; #[derive(Deserialize)] struct AuthResponse { diff --git a/src/tests/routes/summary.rs b/src/tests/routes/summary.rs index ae45e19570f..230907249e7 100644 --- a/src/tests/routes/summary.rs +++ b/src/tests/routes/summary.rs @@ -8,6 +8,7 @@ use crates_io_database::schema::categories; use diesel::{ExpressionMethods, insert_into, update}; use diesel_async::scoped_futures::ScopedFutureExt; use diesel_async::{AsyncConnection, RunQueryDsl}; +use serde::Deserialize; #[derive(Deserialize)] struct SummaryResponse { diff --git a/src/tests/routes/users/read.rs b/src/tests/routes/users/read.rs index cd697fc53e7..7caa728024a 100644 --- a/src/tests/routes/users/read.rs +++ b/src/tests/routes/users/read.rs @@ -2,7 +2,9 @@ use crate::models::NewUser; use crate::schema::users; use crate::tests::util::{RequestHelper, TestApp}; use crate::views::EncodablePublicUser; +use claims::assert_ok; use diesel_async::RunQueryDsl; +use serde::Deserialize; #[derive(Deserialize)] pub struct UserShowPublicResponse { diff --git a/src/tests/routes/users/stats.rs b/src/tests/routes/users/stats.rs index d2896782234..4b14fe4afa3 100644 --- a/src/tests/routes/users/stats.rs +++ b/src/tests/routes/users/stats.rs @@ -1,4 +1,5 @@ use crate::tests::util::{RequestHelper, TestApp}; +use serde::Deserialize; #[derive(Deserialize)] struct UserStats { diff --git a/src/tests/token.rs b/src/tests/token.rs index f5aed1bc124..14f0ae705d8 100644 --- a/src/tests/token.rs +++ b/src/tests/token.rs @@ -2,6 +2,7 @@ use crate::tests::builders::PublishBuilder; use crate::tests::util::MockTokenUser; use crate::tests::{RequestHelper, TestApp}; use crate::{models::ApiToken, views::EncodableMe}; +use claims::{assert_none, assert_ok, assert_some}; use diesel::prelude::*; use diesel_async::RunQueryDsl; use insta::assert_snapshot; diff --git a/src/tests/unhealthy_database.rs b/src/tests/unhealthy_database.rs index 82dee6d9ca0..64f37bf336b 100644 --- a/src/tests/unhealthy_database.rs +++ b/src/tests/unhealthy_database.rs @@ -1,5 +1,6 @@ use crate::tests::builders::CrateBuilder; use crate::tests::util::{RequestHelper, TestApp}; +use claims::{assert_ok, assert_some}; use diesel_async::AsyncPgConnection; use diesel_async::pooled_connection::deadpool::Pool; use googletest::assert_that; diff --git a/src/tests/user.rs b/src/tests/user.rs index b10fb2e30bb..ac44af2038d 100644 --- a/src/tests/user.rs +++ b/src/tests/user.rs @@ -5,6 +5,7 @@ use crate::tests::util::github::next_gh_id; use crate::tests::util::{MockCookieUser, RequestHelper}; use crate::util::token::HashedToken; use chrono::{DateTime, Utc}; +use claims::assert_ok; use crates_io_github::GitHubUser; use diesel::prelude::*; use diesel_async::RunQueryDsl; diff --git a/src/tests/util/insta.rs b/src/tests/util/insta.rs index 47af0ea2e46..d0ded533785 100644 --- a/src/tests/util/insta.rs +++ b/src/tests/util/insta.rs @@ -1,4 +1,5 @@ pub use ::insta::*; +use claims::assert_some; use googletest::prelude::*; pub fn id_redaction(expected_id: i32) -> insta::internals::Redaction { diff --git a/src/tests/util/response.rs b/src/tests/util/response.rs index 0edd9348129..966665a10c7 100644 --- a/src/tests/util/response.rs +++ b/src/tests/util/response.rs @@ -1,5 +1,6 @@ use crate::tests::util::matchers::is_success; use bytes::Bytes; +use claims::{assert_ok, assert_some, assert_some_eq}; use googletest::prelude::*; use serde_json::Value; use std::marker::PhantomData; diff --git a/src/tests/util/test_app.rs b/src/tests/util/test_app.rs index c528b30190a..cf0a8d21f7e 100644 --- a/src/tests/util/test_app.rs +++ b/src/tests/util/test_app.rs @@ -11,6 +11,7 @@ use crate::tests::util::chaosproxy::ChaosProxy; use crate::tests::util::github::MOCK_GITHUB_DATA; use crate::worker::{Environment, RunnerExt}; use crate::{App, Emails, Env}; +use claims::assert_some; use crates_io_docs_rs::MockDocsRsClient; use crates_io_github::MockGitHubClient; use crates_io_index::testing::UpstreamIndex; diff --git a/src/tests/worker/git.rs b/src/tests/worker/git.rs index afd2ab479ff..3c555311c49 100644 --- a/src/tests/worker/git.rs +++ b/src/tests/worker/git.rs @@ -2,6 +2,7 @@ use crate::models::Crate; use crate::tests::builders::PublishBuilder; use crate::tests::util::{RequestHelper, TestApp}; use crate::worker::jobs; +use claims::{assert_ok, assert_ok_eq}; use crates_io_worker::BackgroundJob; use diesel::prelude::*; use diesel_async::RunQueryDsl; diff --git a/src/typosquat/cache.rs b/src/typosquat/cache.rs index 8c135aef703..cb49a571906 100644 --- a/src/typosquat/cache.rs +++ b/src/typosquat/cache.rs @@ -1,6 +1,7 @@ use diesel_async::AsyncPgConnection; use std::sync::Arc; use thiserror::Error; +use tracing::{instrument, warn}; use typomania::Harness; use typomania::checks::{Bitflips, Omitted, SwappedWords, Typos}; diff --git a/src/util/errors.rs b/src/util/errors.rs index c824fb26ddb..ad312d83c6e 100644 --- a/src/util/errors.rs +++ b/src/util/errors.rs @@ -19,13 +19,13 @@ use std::borrow::Cow; use std::error::Error; use std::fmt; +use crate::middleware::log_request::ErrorField; use axum::Extension; use chrono::{DateTime, Utc}; use diesel::result::{DatabaseErrorKind, Error as DieselError}; use http::StatusCode; use tokio::task::JoinError; - -use crate::middleware::log_request::ErrorField; +use tracing::error; mod json; @@ -286,7 +286,7 @@ mod tests { #[test] fn http_error_responses() { - use crate::serde::de::Error; + use serde::de::Error; // Types for handling common error status codes assert_eq!(bad_request("").response().status(), StatusCode::BAD_REQUEST); diff --git a/src/util/tracing.rs b/src/util/tracing.rs index e8f8e568a06..2f79f2c15bd 100644 --- a/src/util/tracing.rs +++ b/src/util/tracing.rs @@ -1,7 +1,6 @@ use crates_io_env_vars::var; use sentry::integrations::tracing::EventFilter; -use tracing::Level; -use tracing::Metadata; +use tracing::{Level, Metadata, warn}; use tracing_subscriber::filter::LevelFilter; use tracing_subscriber::{EnvFilter, Layer, prelude::*}; diff --git a/src/views.rs b/src/views.rs index c3b3be8443e..60ad1a710b2 100644 --- a/src/views.rs +++ b/src/views.rs @@ -1,11 +1,11 @@ -use chrono::{DateTime, Utc}; - use crate::external_urls::remove_blocked_urls; use crate::models::{ ApiToken, Category, Crate, Dependency, DependencyKind, Keyword, Owner, ReverseDependency, Team, TopVersions, User, Version, VersionDownload, VersionOwnerAction, }; +use chrono::{DateTime, Utc}; use crates_io_github as github; +use serde::{Deserialize, Serialize}; pub mod krate_publish; pub use self::krate_publish::{EncodableCrateDependency, PublishMetadata}; @@ -1026,6 +1026,7 @@ pub struct PublishWarnings { mod tests { use super::*; use chrono::NaiveDate; + use claims::assert_some; #[test] fn category_dates_serializes_to_rfc3339() { diff --git a/src/worker/environment.rs b/src/worker/environment.rs index 30dc9fa801d..61dced1fcc2 100644 --- a/src/worker/environment.rs +++ b/src/worker/environment.rs @@ -16,6 +16,7 @@ use std::ops::{Deref, DerefMut}; use std::sync::Arc; use std::time::Instant; use tokio::sync::OnceCell; +use tracing::{info, instrument}; #[derive(Builder)] pub struct Environment { diff --git a/src/worker/jobs/archive_version_downloads.rs b/src/worker/jobs/archive_version_downloads.rs index f827079ef2e..760191a32f5 100644 --- a/src/worker/jobs/archive_version_downloads.rs +++ b/src/worker/jobs/archive_version_downloads.rs @@ -10,12 +10,14 @@ use diesel_async::{AsyncPgConnection, RunQueryDsl}; use futures_util::StreamExt; use object_store::ObjectStore; use secrecy::{ExposeSecret, SecretString}; +use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; use std::collections::btree_map::Entry; use std::path::Path; use std::sync::Arc; use std::time::Instant; use tempfile::tempdir; +use tracing::{debug, error, info, warn}; const FILE_NAME: &str = "version_downloads.csv"; @@ -250,6 +252,7 @@ async fn delete(conn: &mut AsyncPgConnection, dates: Vec) -> anyhow:: mod tests { use super::*; use crate::schema::{crates, version_downloads, versions}; + use claims::assert_err; use crates_io_test_db::TestDatabase; use insta::assert_snapshot; diff --git a/src/worker/jobs/daily_db_maintenance.rs b/src/worker/jobs/daily_db_maintenance.rs index 804808cf62e..0d8cda99a6d 100644 --- a/src/worker/jobs/daily_db_maintenance.rs +++ b/src/worker/jobs/daily_db_maintenance.rs @@ -2,7 +2,9 @@ use crate::worker::Environment; use crates_io_worker::BackgroundJob; use diesel::sql_query; use diesel_async::RunQueryDsl; +use serde::{Deserialize, Serialize}; use std::sync::Arc; +use tracing::info; #[derive(Serialize, Deserialize)] pub struct DailyDbMaintenance; diff --git a/src/worker/jobs/delete_crate.rs b/src/worker/jobs/delete_crate.rs index 3ef848bf3f4..0d907582dbf 100644 --- a/src/worker/jobs/delete_crate.rs +++ b/src/worker/jobs/delete_crate.rs @@ -3,8 +3,10 @@ use crate::worker::Environment; use crate::worker::jobs::InvalidateCdns; use anyhow::Context; use crates_io_worker::BackgroundJob; +use serde::{Deserialize, Serialize}; use std::sync::Arc; use tokio::try_join; +use tracing::info; /// A background job that deletes all files associated with a crate from the storage backend. #[derive(Serialize, Deserialize)] diff --git a/src/worker/jobs/docs_rs_queue_rebuild.rs b/src/worker/jobs/docs_rs_queue_rebuild.rs index 96183a20f0f..f9c323840a1 100644 --- a/src/worker/jobs/docs_rs_queue_rebuild.rs +++ b/src/worker/jobs/docs_rs_queue_rebuild.rs @@ -2,7 +2,9 @@ use crate::worker::Environment; use anyhow::anyhow; use crates_io_docs_rs::DocsRsError; use crates_io_worker::BackgroundJob; +use serde::{Deserialize, Serialize}; use std::sync::Arc; +use tracing::{error, warn}; /// A background job that queues a docs rebuild for a specific release #[derive(Serialize, Deserialize)] diff --git a/src/worker/jobs/downloads/clean_processed_log_files.rs b/src/worker/jobs/downloads/clean_processed_log_files.rs index 9850a7b5842..c5cae1c8cd3 100644 --- a/src/worker/jobs/downloads/clean_processed_log_files.rs +++ b/src/worker/jobs/downloads/clean_processed_log_files.rs @@ -3,6 +3,7 @@ use crate::worker::Environment; use crates_io_worker::BackgroundJob; use diesel::prelude::*; use diesel_async::{AsyncPgConnection, RunQueryDsl}; +use serde::{Deserialize, Serialize}; use std::sync::Arc; /// This job is responsible for cleaning up old entries in the diff --git a/src/worker/jobs/downloads/process_log.rs b/src/worker/jobs/downloads/process_log.rs index ed024c74b31..4396f716ba7 100644 --- a/src/worker/jobs/downloads/process_log.rs +++ b/src/worker/jobs/downloads/process_log.rs @@ -16,9 +16,11 @@ use object_store::local::LocalFileSystem; use object_store::memory::InMemory; use object_store::path::Path; use semver::Version; +use serde::{Deserialize, Serialize}; use std::fmt::Debug; use std::sync::Arc; use tokio::io::BufReader; +use tracing::{debug, info, instrument, warn}; /// A background job that loads a CDN log file from an object store (aka. S3), /// counts the number of downloads for each crate and version, and then inserts @@ -412,6 +414,7 @@ async fn save_as_processed( mod tests { use super::*; use crate::schema::{crates, version_downloads, versions}; + use claims::assert_ok; use crates_io_test_db::TestDatabase; use diesel_async::pooled_connection::AsyncDieselConnectionManager; use insta::assert_debug_snapshot; diff --git a/src/worker/jobs/downloads/queue/job.rs b/src/worker/jobs/downloads/queue/job.rs index 4289fea21c1..f5f63197275 100644 --- a/src/worker/jobs/downloads/queue/job.rs +++ b/src/worker/jobs/downloads/queue/job.rs @@ -9,7 +9,9 @@ use aws_sdk_sqs::types::Message; use crates_io_worker::BackgroundJob; use diesel_async::AsyncPgConnection; use diesel_async::pooled_connection::deadpool::Pool; +use serde::{Deserialize, Serialize}; use std::sync::Arc; +use tracing::{debug, info, instrument, warn}; /// A background job that processes messages from the CDN log queue. /// @@ -225,6 +227,7 @@ mod tests { use aws_sdk_sqs::operation::receive_message::builders::ReceiveMessageOutputBuilder; use aws_sdk_sqs::types::Message; use aws_sdk_sqs::types::builders::MessageBuilder; + use claims::assert_ok; use crates_io_test_db::TestDatabase; use crates_io_worker::schema::background_jobs; use diesel::prelude::*; diff --git a/src/worker/jobs/downloads/queue/message.rs b/src/worker/jobs/downloads/queue/message.rs index 428bd171eaf..1dc000142bc 100644 --- a/src/worker/jobs/downloads/queue/message.rs +++ b/src/worker/jobs/downloads/queue/message.rs @@ -1,3 +1,4 @@ +use serde::{Deserialize, Serialize}; use std::str::FromStr; #[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] @@ -40,6 +41,7 @@ impl FromStr for Message { #[cfg(test)] mod tests { use super::*; + use claims::assert_ok; use insta::assert_debug_snapshot; #[test] diff --git a/src/worker/jobs/downloads/update_metadata.rs b/src/worker/jobs/downloads/update_metadata.rs index c2b38c80b9f..56be964f4fc 100644 --- a/src/worker/jobs/downloads/update_metadata.rs +++ b/src/worker/jobs/downloads/update_metadata.rs @@ -4,8 +4,10 @@ use crates_io_worker::BackgroundJob; use diesel::prelude::*; use diesel::sql_types::BigInt; use diesel_async::{AsyncPgConnection, RunQueryDsl}; +use serde::{Deserialize, Serialize}; use std::sync::Arc; use std::time::{Duration, Instant}; +use tracing::{info, instrument}; #[derive(Serialize, Deserialize)] pub struct UpdateDownloads; diff --git a/src/worker/jobs/dump_db.rs b/src/worker/jobs/dump_db.rs index e741443b1b4..a5a77f954fa 100644 --- a/src/worker/jobs/dump_db.rs +++ b/src/worker/jobs/dump_db.rs @@ -3,8 +3,10 @@ use crate::worker::Environment; use crates_io_database_dump::{DumpDirectory, create_archives}; use crates_io_worker::BackgroundJob; use secrecy::ExposeSecret; +use serde::{Deserialize, Serialize}; use std::path::PathBuf; use std::sync::Arc; +use tracing::{info, warn}; #[derive(Clone, Serialize, Deserialize)] pub struct DumpDb; diff --git a/src/worker/jobs/expiry_notification.rs b/src/worker/jobs/expiry_notification.rs index 4e2e91c4b38..fbcc5e284fc 100644 --- a/src/worker/jobs/expiry_notification.rs +++ b/src/worker/jobs/expiry_notification.rs @@ -8,7 +8,9 @@ use diesel::prelude::*; use diesel::sql_types::Timestamptz; use diesel_async::{AsyncPgConnection, RunQueryDsl}; use minijinja::context; +use serde::{Deserialize, Serialize}; use std::sync::Arc; +use tracing::{debug, error, info, instrument, warn}; /// The threshold for the expiry notification. const EXPIRY_THRESHOLD: chrono::TimeDelta = chrono::TimeDelta::days(3); diff --git a/src/worker/jobs/index/normalize.rs b/src/worker/jobs/index/normalize.rs index 2f2d23a4b44..2773d3b19fb 100644 --- a/src/worker/jobs/index/normalize.rs +++ b/src/worker/jobs/index/normalize.rs @@ -2,10 +2,12 @@ use crate::tasks::spawn_blocking; use crate::worker::Environment; use crates_io_index::Crate; use crates_io_worker::BackgroundJob; +use serde::{Deserialize, Serialize}; use std::fs; use std::io::{BufRead, BufReader}; use std::process::Command; use std::sync::Arc; +use tracing::info; #[derive(Serialize, Deserialize)] pub struct NormalizeIndex { diff --git a/src/worker/jobs/index/squash.rs b/src/worker/jobs/index/squash.rs index f4b50befbf1..304a18f3a7e 100644 --- a/src/worker/jobs/index/squash.rs +++ b/src/worker/jobs/index/squash.rs @@ -3,8 +3,10 @@ use crate::worker::Environment; use chrono::Utc; use crates_io_env_vars::var_parsed; use crates_io_worker::BackgroundJob; +use serde::{Deserialize, Serialize}; use std::process::Command; use std::sync::Arc; +use tracing::{info, instrument}; use url::Url; #[derive(Serialize, Deserialize)] diff --git a/src/worker/jobs/index/sync.rs b/src/worker/jobs/index/sync.rs index da1e92a8806..fd0dd36a273 100644 --- a/src/worker/jobs/index/sync.rs +++ b/src/worker/jobs/index/sync.rs @@ -4,10 +4,12 @@ use crate::worker::Environment; use anyhow::Context; use crates_io_index::Repository; use crates_io_worker::BackgroundJob; +use serde::{Deserialize, Serialize}; use std::fs; use std::fs::File; use std::io::{ErrorKind, Write}; use std::sync::Arc; +use tracing::{debug, info, instrument}; #[derive(Serialize, Deserialize)] pub struct SyncToGitIndex { diff --git a/src/worker/jobs/index_version_downloads_archive/mod.rs b/src/worker/jobs/index_version_downloads_archive/mod.rs index 5ba49c7af24..0f02520a654 100644 --- a/src/worker/jobs/index_version_downloads_archive/mod.rs +++ b/src/worker/jobs/index_version_downloads_archive/mod.rs @@ -1,11 +1,12 @@ use std::{collections::BTreeSet, sync::Arc}; +use crate::worker::Environment; use anyhow::Context; use crates_io_worker::BackgroundJob; use futures_util::TryStreamExt; use object_store::{ObjectMeta, ObjectStore}; - -use crate::worker::Environment; +use serde::{Deserialize, Serialize}; +use tracing::{info, warn}; const INDEX_PATH: &str = "archive/version-downloads/index.html"; const INDEX_JSON_PATH: &str = "archive/version-downloads/index.json"; diff --git a/src/worker/jobs/invalidate_cdns.rs b/src/worker/jobs/invalidate_cdns.rs index 491709be29f..104e4b672d6 100644 --- a/src/worker/jobs/invalidate_cdns.rs +++ b/src/worker/jobs/invalidate_cdns.rs @@ -2,6 +2,7 @@ use std::sync::Arc; use anyhow::Context; use crates_io_worker::BackgroundJob; +use serde::{Deserialize, Serialize}; use crate::worker::Environment; diff --git a/src/worker/jobs/readmes.rs b/src/worker/jobs/readmes.rs index 09e996ab897..b3cdfcdf9c5 100644 --- a/src/worker/jobs/readmes.rs +++ b/src/worker/jobs/readmes.rs @@ -7,7 +7,9 @@ use crates_io_markdown::text_to_html; use crates_io_worker::BackgroundJob; use diesel_async::AsyncConnection; use diesel_async::scoped_futures::ScopedFutureExt; +use serde::{Deserialize, Serialize}; use std::sync::Arc; +use tracing::{info, instrument}; #[derive(Clone, Serialize, Deserialize)] pub struct RenderAndUploadReadme { diff --git a/src/worker/jobs/rss/sync_crate_feed.rs b/src/worker/jobs/rss/sync_crate_feed.rs index 12db08234e3..9f9a11d31ff 100644 --- a/src/worker/jobs/rss/sync_crate_feed.rs +++ b/src/worker/jobs/rss/sync_crate_feed.rs @@ -5,7 +5,9 @@ use chrono::{Duration, Utc}; use crates_io_worker::BackgroundJob; use diesel::prelude::*; use diesel_async::{AsyncPgConnection, RunQueryDsl}; +use serde::{Deserialize, Serialize}; use std::sync::Arc; +use tracing::{info, warn}; /// Items younger than this will always be included in the feed. const ALWAYS_INCLUDE_AGE: Duration = Duration::hours(24); @@ -178,6 +180,7 @@ impl VersionUpdate { mod tests { use super::*; use chrono::DateTime; + use claims::assert_ok; use crates_io_test_db::TestDatabase; use futures_util::future::join_all; use insta::assert_debug_snapshot; diff --git a/src/worker/jobs/rss/sync_crates_feed.rs b/src/worker/jobs/rss/sync_crates_feed.rs index 4258f50e38c..242e8b0510b 100644 --- a/src/worker/jobs/rss/sync_crates_feed.rs +++ b/src/worker/jobs/rss/sync_crates_feed.rs @@ -5,7 +5,9 @@ use chrono::{Duration, Utc}; use crates_io_worker::BackgroundJob; use diesel::prelude::*; use diesel_async::{AsyncPgConnection, RunQueryDsl}; +use serde::{Deserialize, Serialize}; use std::sync::Arc; +use tracing::{info, warn}; #[derive(Serialize, Deserialize)] pub struct SyncCratesFeed; @@ -152,6 +154,7 @@ impl NewCrate { mod tests { use super::*; use chrono::DateTime; + use claims::assert_ok; use crates_io_test_db::TestDatabase; use diesel_async::AsyncPgConnection; use futures_util::future::join_all; diff --git a/src/worker/jobs/rss/sync_updates_feed.rs b/src/worker/jobs/rss/sync_updates_feed.rs index 5aa295097d7..69479e132c6 100644 --- a/src/worker/jobs/rss/sync_updates_feed.rs +++ b/src/worker/jobs/rss/sync_updates_feed.rs @@ -5,7 +5,9 @@ use chrono::{Duration, Utc}; use crates_io_worker::BackgroundJob; use diesel::prelude::*; use diesel_async::{AsyncPgConnection, RunQueryDsl}; +use serde::{Deserialize, Serialize}; use std::sync::Arc; +use tracing::{info, warn}; #[derive(Serialize, Deserialize)] pub struct SyncUpdatesFeed; @@ -168,6 +170,7 @@ impl VersionUpdate { mod tests { use super::*; use chrono::{DateTime, Utc}; + use claims::assert_ok; use crates_io_test_db::TestDatabase; use futures_util::future::join_all; use insta::assert_debug_snapshot; diff --git a/src/worker/jobs/send_publish_notifications.rs b/src/worker/jobs/send_publish_notifications.rs index 65adbef7065..fea389271c6 100644 --- a/src/worker/jobs/send_publish_notifications.rs +++ b/src/worker/jobs/send_publish_notifications.rs @@ -8,8 +8,9 @@ use crates_io_worker::BackgroundJob; use diesel::prelude::*; use diesel_async::{AsyncPgConnection, RunQueryDsl}; use minijinja::context; +use serde::{Deserialize, Serialize}; use std::sync::Arc; -use tracing::warn; +use tracing::{debug, info, warn}; /// Background job that sends email notifications to all crate owners when a /// new crate version is published. diff --git a/src/worker/jobs/sync_admins.rs b/src/worker/jobs/sync_admins.rs index 1d5c9e84975..1b2c04bdeff 100644 --- a/src/worker/jobs/sync_admins.rs +++ b/src/worker/jobs/sync_admins.rs @@ -6,8 +6,10 @@ use crates_io_worker::BackgroundJob; use diesel::prelude::*; use diesel_async::RunQueryDsl; use minijinja::context; +use serde::{Deserialize, Serialize}; use std::collections::HashSet; use std::sync::Arc; +use tracing::{debug, info, warn}; /// See . const PERMISSION_NAME: &str = "crates_io_admin"; diff --git a/src/worker/jobs/trustpub/delete_jtis.rs b/src/worker/jobs/trustpub/delete_jtis.rs index 6e058fa7b72..a4c14907def 100644 --- a/src/worker/jobs/trustpub/delete_jtis.rs +++ b/src/worker/jobs/trustpub/delete_jtis.rs @@ -3,6 +3,7 @@ use crates_io_database::schema::trustpub_used_jtis; use crates_io_worker::BackgroundJob; use diesel::prelude::*; use diesel_async::RunQueryDsl; +use serde::{Deserialize, Serialize}; use std::sync::Arc; /// A background job that deletes expired JSON Web Token IDs (JTIs) diff --git a/src/worker/jobs/trustpub/delete_tokens.rs b/src/worker/jobs/trustpub/delete_tokens.rs index 4b528a93e37..c858777185f 100644 --- a/src/worker/jobs/trustpub/delete_tokens.rs +++ b/src/worker/jobs/trustpub/delete_tokens.rs @@ -3,6 +3,7 @@ use crates_io_database::schema::trustpub_tokens; use crates_io_worker::BackgroundJob; use diesel::prelude::*; use diesel_async::RunQueryDsl; +use serde::{Deserialize, Serialize}; use std::sync::Arc; /// A background job that deletes expired temporary access diff --git a/src/worker/jobs/typosquat.rs b/src/worker/jobs/typosquat.rs index 7be28f3f593..8653f8ea87f 100644 --- a/src/worker/jobs/typosquat.rs +++ b/src/worker/jobs/typosquat.rs @@ -10,7 +10,8 @@ use crate::typosquat::{Cache, Crate}; use crate::worker::Environment; use anyhow::Context; use minijinja::context; -use tracing::{error, info}; +use serde::{Deserialize, Serialize}; +use tracing::{error, info, instrument}; /// A job to check the name of a newly published crate against the most popular crates to see if /// the new crate might be typosquatting an existing, popular crate. diff --git a/src/worker/jobs/update_default_version.rs b/src/worker/jobs/update_default_version.rs index 4856d800241..1186196673d 100644 --- a/src/worker/jobs/update_default_version.rs +++ b/src/worker/jobs/update_default_version.rs @@ -1,7 +1,9 @@ use crate::models::update_default_version; use crate::worker::Environment; use crates_io_worker::BackgroundJob; +use serde::{Deserialize, Serialize}; use std::sync::Arc; +use tracing::info; #[derive(Serialize, Deserialize)] pub struct UpdateDefaultVersion {