X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fapi_crud%2Fsrc%2Fsite%2Fcreate.rs;h=540b3c6c1518d685127029542abd6f7117e0f007;hb=92568956353f21649ed9aff68b42699c9d036f30;hp=838d5bc409f6f937fb6976275e925567acc32a80;hpb=e63aa80c3a3631f4713525d65c8223e1106355e8;p=lemmy.git diff --git a/crates/api_crud/src/site/create.rs b/crates/api_crud/src/site/create.rs index 838d5bc4..540b3c6c 100644 --- a/crates/api_crud/src/site/create.rs +++ b/crates/api_crud/src/site/create.rs @@ -27,7 +27,7 @@ use lemmy_db_schema::{ }; use lemmy_db_views::structs::SiteView; use lemmy_utils::{ - error::{LemmyError, LemmyResult}, + error::{LemmyError, LemmyErrorType, LemmyResult}, utils::{ slurs::{check_slurs, check_slurs_opt}, validation::{ @@ -49,7 +49,7 @@ impl PerformCrud for CreateSite { async fn perform(&self, context: &Data) -> Result { let data: &CreateSite = self; let local_user_view = local_user_view_from_jwt(&data.auth, context).await?; - let local_site = LocalSite::read(context.pool()).await?; + let local_site = LocalSite::read(&mut context.pool()).await?; // Make sure user is an admin; other types of users should not create site data... is_admin(&local_user_view)?; @@ -74,7 +74,7 @@ impl PerformCrud for CreateSite { let site_id = local_site.site_id; - Site::update(context.pool(), site_id, &site_form).await?; + Site::update(&mut context.pool(), site_id, &site_form).await?; let local_site_form = LocalSiteUpdateForm::builder() // Set the site setup to true @@ -99,7 +99,7 @@ impl PerformCrud for CreateSite { .captcha_difficulty(data.captcha_difficulty.clone()) .build(); - LocalSite::update(context.pool(), &local_site_form).await?; + LocalSite::update(&mut context.pool(), &local_site_form).await?; let local_site_rate_limit_form = LocalSiteRateLimitUpdateForm::builder() .message(data.rate_limit_message) @@ -116,12 +116,12 @@ impl PerformCrud for CreateSite { .search_per_second(data.rate_limit_search_per_second) .build(); - LocalSiteRateLimit::update(context.pool(), &local_site_rate_limit_form).await?; + LocalSiteRateLimit::update(&mut context.pool(), &local_site_rate_limit_form).await?; - let site_view = SiteView::read_local(context.pool()).await?; + let site_view = SiteView::read_local(&mut context.pool()).await?; let new_taglines = data.taglines.clone(); - let taglines = Tagline::replace(context.pool(), local_site.id, new_taglines).await?; + let taglines = Tagline::replace(&mut context.pool(), local_site.id, new_taglines).await?; let rate_limit_config = local_site_rate_limit_to_rate_limit_config(&site_view.local_site_rate_limit); @@ -140,7 +140,7 @@ impl PerformCrud for CreateSite { fn validate_create_payload(local_site: &LocalSite, create_site: &CreateSite) -> LemmyResult<()> { // Make sure the site hasn't already been set up... if local_site.site_setup { - return Err(LemmyError::from_message("site_already_exists")); + return Err(LemmyErrorType::SiteAlreadyExists)?; }; // Check that the slur regex compiles, and returns the regex if valid... @@ -183,16 +183,20 @@ fn validate_create_payload(local_site: &LocalSite, create_site: &CreateSite) -> #[cfg(test)] mod tests { + #![allow(clippy::unwrap_used)] + #![allow(clippy::indexing_slicing)] + use crate::site::create::validate_create_payload; use lemmy_api_common::site::CreateSite; use lemmy_db_schema::{source::local_site::LocalSite, ListingType, RegistrationMode}; + use lemmy_utils::error::LemmyErrorType; #[test] fn test_validate_invalid_create_payload() { let invalid_payloads = [ ( "CreateSite attempted on set up LocalSite", - "site_already_exists", + LemmyErrorType::SiteAlreadyExists, &generate_local_site( true, None::, @@ -215,7 +219,7 @@ mod tests { ), ( "CreateSite name matches LocalSite slur filter", - "slurs", + LemmyErrorType::Slurs, &generate_local_site( false, Some(String::from("(foo|bar)")), @@ -238,7 +242,7 @@ mod tests { ), ( "CreateSite name matches new slur filter", - "slurs", + LemmyErrorType::Slurs, &generate_local_site( false, Some(String::from("(foo|bar)")), @@ -261,7 +265,7 @@ mod tests { ), ( "CreateSite listing type is Subscribed, which is invalid", - "invalid_default_post_listing_type", + LemmyErrorType::InvalidDefaultPostListingType, &generate_local_site( false, None::, @@ -284,7 +288,7 @@ mod tests { ), ( "CreateSite is both private and federated", - "cant_enable_private_instance_and_federation_together", + LemmyErrorType::CantEnablePrivateInstanceAndFederationTogether, &generate_local_site( false, None::, @@ -307,7 +311,7 @@ mod tests { ), ( "LocalSite is private, but CreateSite also makes it federated", - "cant_enable_private_instance_and_federation_together", + LemmyErrorType::CantEnablePrivateInstanceAndFederationTogether, &generate_local_site( false, None::, @@ -330,7 +334,7 @@ mod tests { ), ( "CreateSite requires application, but neither it nor LocalSite has an application question", - "application_question_required", + LemmyErrorType::ApplicationQuestionRequired, &generate_local_site( false, None::, @@ -356,7 +360,7 @@ mod tests { invalid_payloads.iter().enumerate().for_each( |( idx, - &(reason, expected_err, local_site, create_site), + &(reason, ref expected_err, local_site, create_site), )| { match validate_create_payload( local_site, @@ -370,9 +374,9 @@ mod tests { } Err(error) => { assert!( - error.message.eq(&Some(String::from(expected_err))), + error.error_type.eq(&expected_err.clone()), "Got Err {:?}, but should have failed with message: {} for reason: {}. invalid_payloads.nth({})", - error.message, + error.error_type, expected_err, reason, idx