diff options
| -rw-r--r-- | rust/src/auth.rs | 16 | ||||
| -rw-r--r-- | rust/src/bin/fatcat-auth.rs | 8 | ||||
| -rw-r--r-- | rust/src/bin/fatcat-export.rs | 8 | ||||
| -rw-r--r-- | rust/src/editing.rs | 18 | ||||
| -rw-r--r-- | rust/src/endpoint_handlers.rs | 32 | ||||
| -rw-r--r-- | rust/src/endpoints.rs | 34 | ||||
| -rw-r--r-- | rust/src/entity_crud.rs | 130 | ||||
| -rw-r--r-- | rust/src/identifiers.rs | 29 | ||||
| -rw-r--r-- | rust/tests/helpers.rs | 9 | ||||
| -rw-r--r-- | rust/tests/test_api_server_http.rs | 214 | ||||
| -rw-r--r-- | rust/tests/test_auth.rs | 6 | ||||
| -rw-r--r-- | rust/tests/test_fcid.rs | 16 | 
12 files changed, 295 insertions, 225 deletions
diff --git a/rust/src/auth.rs b/rust/src/auth.rs index 07dfb4f6..d86e5ba8 100644 --- a/rust/src/auth.rs +++ b/rust/src/auth.rs @@ -32,7 +32,7 @@ pub enum FatcatRole {  #[derive(Clone)]  pub struct AuthContext { -    pub editor_id: FatCatId, +    pub editor_id: FatcatId,      editor_row: EditorRow,  } @@ -66,7 +66,7 @@ impl AuthContext {          }      } -    pub fn require_editgroup(&self, conn: &DbConn, editgroup_id: FatCatId) -> Result<()> { +    pub fn require_editgroup(&self, conn: &DbConn, editgroup_id: FatcatId) -> Result<()> {          if self.has_role(FatcatRole::Admin) {              return Ok(());          } @@ -214,7 +214,7 @@ impl AuthConfectionary {      pub fn create_token(          &self, -        editor_id: FatCatId, +        editor_id: FatcatId,          duration: Option<chrono::Duration>,      ) -> Result<String> {          let mut mac = Macaroon::create(&self.location, &self.key, &self.identifier) @@ -264,10 +264,10 @@ impl AuthConfectionary {              }          };          let mut verifier = Verifier::new(); -        let mut editor_id: Option<FatCatId> = None; +        let mut editor_id: Option<FatcatId> = None;          for caveat in mac.first_party_caveats() {              if caveat.predicate().starts_with("editor_id = ") { -                editor_id = Some(FatCatId::from_str(caveat.predicate().get(12..).unwrap())?); +                editor_id = Some(FatcatId::from_str(caveat.predicate().get(12..).unwrap())?);                  break;              }          } @@ -391,7 +391,7 @@ impl AuthConfectionary {          };          let editor_row = self.parse_macaroon_token(conn, &token, endpoint)?;          Ok(Some(AuthContext { -            editor_id: FatCatId::from_uuid(&editor_row.id), +            editor_id: FatcatId::from_uuid(&editor_row.id),              editor_row,          }))      } @@ -436,7 +436,7 @@ pub fn create_key() -> String {      BASE64.encode(&key)  } -pub fn revoke_tokens(conn: &DbConn, editor_id: FatCatId) -> Result<()> { +pub fn revoke_tokens(conn: &DbConn, editor_id: FatcatId) -> Result<()> {      diesel::update(editor::table.filter(editor::id.eq(&editor_id.to_uuid())))          .set(editor::auth_epoch.eq(Utc::now()))          .execute(conn)?; @@ -459,7 +459,7 @@ pub fn print_editors(conn: &DbConn) -> Result<()> {      for e in all_editors {          println!(              "{}\t{}/{}/{}\t{}\t{}\t{:?}", -            FatCatId::from_uuid(&e.id).to_string(), +            FatcatId::from_uuid(&e.id).to_string(),              e.is_superuser,              e.is_admin,              e.is_bot, diff --git a/rust/src/bin/fatcat-auth.rs b/rust/src/bin/fatcat-auth.rs index 7e2a7c39..9efd47ed 100644 --- a/rust/src/bin/fatcat-auth.rs +++ b/rust/src/bin/fatcat-auth.rs @@ -5,7 +5,7 @@ use clap::{App, SubCommand};  use fatcat::auth;  use fatcat::editing;  use fatcat::errors::*; -use fatcat::identifiers::FatCatId; +use fatcat::identifiers::FatcatId;  use fatcat::server::*;  use std::process;  use std::str::FromStr; @@ -82,17 +82,17 @@ fn main() -> Result<()> {                  subm.is_present("bot"),              )?;              //println!("{:?}", editor); -            println!("{}", FatCatId::from_uuid(&editor.id).to_string()); +            println!("{}", FatcatId::from_uuid(&editor.id).to_string());          }          ("create-token", Some(subm)) => { -            let editor_id = FatCatId::from_str(subm.value_of("editor-id").unwrap())?; +            let editor_id = FatcatId::from_str(subm.value_of("editor-id").unwrap())?;              println!("{}", confectionary.create_token(editor_id, None)?);          }          ("inspect-token", Some(subm)) => {              confectionary.inspect_token(&db_conn, subm.value_of("token").unwrap())?;          }          ("revoke-tokens", Some(subm)) => { -            let editor_id = FatCatId::from_str(subm.value_of("editor-id").unwrap())?; +            let editor_id = FatcatId::from_str(subm.value_of("editor-id").unwrap())?;              fatcat::auth::revoke_tokens(&db_conn, editor_id)?;              println!("success!");          } diff --git a/rust/src/bin/fatcat-export.rs b/rust/src/bin/fatcat-export.rs index 157070e5..d438c00a 100644 --- a/rust/src/bin/fatcat-export.rs +++ b/rust/src/bin/fatcat-export.rs @@ -44,9 +44,9 @@ arg_enum! {  }  struct IdentRow { -    ident_id: FatCatId, +    ident_id: FatcatId,      rev_id: Option<Uuid>, -    redirect_id: Option<FatCatId>, +    redirect_id: Option<FatcatId>,  }  macro_rules! generic_loop_work { @@ -116,14 +116,14 @@ fn parse_line(s: &str) -> Result<IdentRow> {          bail!("Invalid input line");      }      Ok(IdentRow { -        ident_id: FatCatId::from_uuid(&Uuid::from_str(&fields[0])?), +        ident_id: FatcatId::from_uuid(&Uuid::from_str(&fields[0])?),          rev_id: match fields[1].as_ref() {              "" => None,              val => Some(Uuid::from_str(&val)?),          },          redirect_id: match fields[2].as_ref() {              "" => None, -            val => Some(FatCatId::from_uuid(&Uuid::from_str(&val)?)), +            val => Some(FatcatId::from_uuid(&Uuid::from_str(&val)?)),          },      })  } diff --git a/rust/src/editing.rs b/rust/src/editing.rs index 42dd013e..6a2495c5 100644 --- a/rust/src/editing.rs +++ b/rust/src/editing.rs @@ -10,8 +10,8 @@ use fatcat_api_spec::models::*;  use uuid::Uuid;  pub struct EditContext { -    pub editor_id: FatCatId, -    pub editgroup_id: FatCatId, +    pub editor_id: FatcatId, +    pub editgroup_id: FatcatId,      pub extra_json: Option<serde_json::Value>,      pub autoaccept: bool,  } @@ -32,20 +32,20 @@ impl EditContext {  pub fn make_edit_context(      conn: &DbConn, -    editor_id: FatCatId, -    editgroup_id: Option<FatCatId>, +    editor_id: FatcatId, +    editgroup_id: Option<FatcatId>,      autoaccept: bool,  ) -> Result<EditContext> { -    let editgroup_id: FatCatId = match (editgroup_id, autoaccept) { +    let editgroup_id: FatcatId = match (editgroup_id, autoaccept) {          (Some(eg), _) => eg,          // If autoaccept and no editgroup_id passed, always create a new one for this transaction          (None, true) => {              let eg_row: EditgroupRow = diesel::insert_into(editgroup::table)                  .values((editgroup::editor_id.eq(editor_id.to_uuid()),))                  .get_result(conn)?; -            FatCatId::from_uuid(&eg_row.id) +            FatcatId::from_uuid(&eg_row.id)          } -        (None, false) => FatCatId::from_uuid(&create_editgroup(conn, editor_id.to_uuid())?), +        (None, false) => FatcatId::from_uuid(&create_editgroup(conn, editor_id.to_uuid())?),      };      Ok(EditContext {          editor_id, @@ -74,7 +74,7 @@ pub fn create_editor(  pub fn update_editor_username(      conn: &DbConn, -    editor_id: FatCatId, +    editor_id: FatcatId,      username: String,  ) -> Result<EditorRow> {      check_username(&username)?; @@ -95,7 +95,7 @@ pub fn create_editgroup(conn: &DbConn, editor_id: Uuid) -> Result<Uuid> {  }  /// This function should always be run within a transaction -pub fn accept_editgroup(conn: &DbConn, editgroup_id: FatCatId) -> Result<ChangelogRow> { +pub fn accept_editgroup(conn: &DbConn, editgroup_id: FatcatId) -> Result<ChangelogRow> {      // check that we haven't accepted already (in changelog)      // NB: could leave this to a UNIQUE constraint      // TODO: redundant with check_edit_context diff --git a/rust/src/endpoint_handlers.rs b/rust/src/endpoint_handlers.rs index ff49f3d1..4dc528bd 100644 --- a/rust/src/endpoint_handlers.rs +++ b/rust/src/endpoint_handlers.rs @@ -23,8 +23,8 @@ macro_rules! entity_batch_handler {              conn: &DbConn,              entity_list: &[models::$model],              autoaccept: bool, -            editor_id: FatCatId, -            editgroup_id: Option<FatCatId>, +            editor_id: FatcatId, +            editgroup_id: Option<FatcatId>,          ) -> Result<Vec<EntityEdit>> {              let edit_context = make_edit_context(conn, editor_id, editgroup_id, autoaccept)?; @@ -44,7 +44,7 @@ macro_rules! entity_batch_handler {  pub fn get_release_files(      conn: &DbConn, -    ident: FatCatId, +    ident: FatcatId,      hide_flags: HideFlags,  ) -> Result<Vec<FileEntity>> {      let rows: Vec<(FileRevRow, FileIdentRow, FileRevReleaseRow)> = file_rev::table @@ -62,7 +62,7 @@ pub fn get_release_files(  pub fn get_release_filesets(      conn: &DbConn, -    ident: FatCatId, +    ident: FatcatId,      hide_flags: HideFlags,  ) -> Result<Vec<FilesetEntity>> {      let rows: Vec<(FilesetRevRow, FilesetIdentRow, FilesetRevReleaseRow)> = fileset_rev::table @@ -80,7 +80,7 @@ pub fn get_release_filesets(  pub fn get_release_webcaptures(      conn: &DbConn, -    ident: FatCatId, +    ident: FatcatId,      hide_flags: HideFlags,  ) -> Result<Vec<WebcaptureEntity>> {      let rows: Vec<( @@ -178,7 +178,7 @@ impl Server {      pub fn get_creator_releases_handler(          &self,          conn: &DbConn, -        ident: FatCatId, +        ident: FatcatId,          hide_flags: HideFlags,      ) -> Result<Vec<ReleaseEntity>> {          // TODO: some kind of unique or group-by? @@ -326,7 +326,7 @@ impl Server {      pub fn get_release_files_handler(          &self,          conn: &DbConn, -        ident: FatCatId, +        ident: FatcatId,          hide_flags: HideFlags,      ) -> Result<Vec<FileEntity>> {          get_release_files(conn, ident, hide_flags) @@ -335,7 +335,7 @@ impl Server {      pub fn get_release_filesets_handler(          &self,          conn: &DbConn, -        ident: FatCatId, +        ident: FatcatId,          hide_flags: HideFlags,      ) -> Result<Vec<FilesetEntity>> {          get_release_filesets(conn, ident, hide_flags) @@ -344,7 +344,7 @@ impl Server {      pub fn get_release_webcaptures_handler(          &self,          conn: &DbConn, -        ident: FatCatId, +        ident: FatcatId,          hide_flags: HideFlags,      ) -> Result<Vec<WebcaptureEntity>> {          get_release_webcaptures(conn, ident, hide_flags) @@ -353,7 +353,7 @@ impl Server {      pub fn get_work_releases_handler(          &self,          conn: &DbConn, -        ident: FatCatId, +        ident: FatcatId,          hide_flags: HideFlags,      ) -> Result<Vec<ReleaseEntity>> {          let rows: Vec<(ReleaseRevRow, ReleaseIdentRow)> = release_rev::table @@ -368,7 +368,7 @@ impl Server {              .collect()      } -    pub fn accept_editgroup_handler(&self, conn: &DbConn, editgroup_id: FatCatId) -> Result<()> { +    pub fn accept_editgroup_handler(&self, conn: &DbConn, editgroup_id: FatcatId) -> Result<()> {          accept_editgroup(conn, editgroup_id)?;          Ok(())      } @@ -380,7 +380,7 @@ impl Server {      ) -> Result<Editgroup> {          let row: EditgroupRow = insert_into(editgroup::table)              .values(( -                editgroup::editor_id.eq(FatCatId::from_str(&entity.editor_id.unwrap())?.to_uuid()), +                editgroup::editor_id.eq(FatcatId::from_str(&entity.editor_id.unwrap())?.to_uuid()),                  editgroup::description.eq(entity.description),                  editgroup::extra_json.eq(entity.extra),              )) @@ -398,7 +398,7 @@ impl Server {      pub fn get_editgroup_handler(          &self,          conn: &DbConn, -        editgroup_id: FatCatId, +        editgroup_id: FatcatId,      ) -> Result<Editgroup> {          let row: EditgroupRow = editgroup::table.find(editgroup_id.to_uuid()).first(conn)?; @@ -471,7 +471,7 @@ impl Server {          Ok(eg)      } -    pub fn get_editor_handler(&self, conn: &DbConn, editor_id: FatCatId) -> Result<Editor> { +    pub fn get_editor_handler(&self, conn: &DbConn, editor_id: FatcatId) -> Result<Editor> {          let row: EditorRow = editor::table.find(editor_id.to_uuid()).first(conn)?;          Ok(row.into_model())      } @@ -479,7 +479,7 @@ impl Server {      pub fn get_editor_changelog_handler(          &self,          conn: &DbConn, -        editor_id: FatCatId, +        editor_id: FatcatId,      ) -> Result<Vec<ChangelogEntry>> {          // TODO: single query          let editor: EditorRow = editor::table.find(editor_id.to_uuid()).first(conn)?; @@ -528,7 +528,7 @@ impl Server {      pub fn get_changelog_entry_handler(&self, conn: &DbConn, index: i64) -> Result<ChangelogEntry> {          let cl_row: ChangelogRow = changelog::table.find(index).first(conn)?;          let editgroup = -            self.get_editgroup_handler(conn, FatCatId::from_uuid(&cl_row.editgroup_id))?; +            self.get_editgroup_handler(conn, FatcatId::from_uuid(&cl_row.editgroup_id))?;          let mut entry = cl_row.into_model();          entry.editgroup = Some(editgroup); diff --git a/rust/src/endpoints.rs b/rust/src/endpoints.rs index f7f2d948..a66f5d51 100644 --- a/rust/src/endpoints.rs +++ b/rust/src/endpoints.rs @@ -48,7 +48,7 @@ macro_rules! wrap_entity_handlers {              let conn = self.db_pool.get().expect("db_pool error");              // No transaction for GET              let ret = match (|| { -                let entity_id = FatCatId::from_str(&ident)?; +                let entity_id = FatcatId::from_str(&ident)?;                  let hide_flags = match hide {                      None => HideFlags::none(),                      Some(param) => HideFlags::from_str(¶m)?, @@ -96,7 +96,7 @@ macro_rules! wrap_entity_handlers {          ) -> Box<Future<Item = $post_resp, Error = ApiError> + Send> {              let conn = self.db_pool.get().expect("db_pool error");              let ret = match conn.transaction(|| { -                let editgroup_id = FatCatId::from_str(&editgroup_id)?; +                let editgroup_id = FatcatId::from_str(&editgroup_id)?;                  let auth_context = self.auth_confectionary.require_auth(&conn, &context.auth_data, Some(stringify!($post_fn)))?;                  auth_context.require_role(FatcatRole::Editor)?;                  auth_context.require_editgroup(&conn, editgroup_id)?; @@ -150,7 +150,7 @@ macro_rules! wrap_entity_handlers {                  let auth_context = self.auth_confectionary.require_auth(&conn, &context.auth_data, Some(stringify!($post_batch_fn)))?;                  auth_context.require_role(FatcatRole::Editor)?;                  let editgroup_id = if let Some(s) = editgroup_id { -                    let eg_id = FatCatId::from_str(&s)?; +                    let eg_id = FatcatId::from_str(&s)?;                      auth_context.require_editgroup(&conn, eg_id)?;                      Some(eg_id)                  } else { None }; @@ -199,10 +199,10 @@ macro_rules! wrap_entity_handlers {          ) -> Box<Future<Item = $update_resp, Error = ApiError> + Send> {              let conn = self.db_pool.get().expect("db_pool error");              let ret = match conn.transaction(|| { -                let editgroup_id = FatCatId::from_str(&editgroup_id)?; +                let editgroup_id = FatcatId::from_str(&editgroup_id)?;                  let auth_context = self.auth_confectionary.require_auth(&conn, &context.auth_data, Some(stringify!($update_fn)))?;                  auth_context.require_role(FatcatRole::Editor)?; -                let entity_id = FatCatId::from_str(&ident)?; +                let entity_id = FatcatId::from_str(&ident)?;                  auth_context.require_editgroup(&conn, editgroup_id)?;                  let edit_context = make_edit_context(&conn, auth_context.editor_id, Some(editgroup_id), false)?;                  edit_context.check(&conn)?; @@ -253,10 +253,10 @@ macro_rules! wrap_entity_handlers {          ) -> Box<Future<Item = $delete_resp, Error = ApiError> + Send> {              let conn = self.db_pool.get().expect("db_pool error");              let ret = match conn.transaction(|| { -                let editgroup_id = FatCatId::from_str(&editgroup_id)?; +                let editgroup_id = FatcatId::from_str(&editgroup_id)?;                  let auth_context = self.auth_confectionary.require_auth(&conn, &context.auth_data, Some(stringify!($delete_fn)))?;                  auth_context.require_role(FatcatRole::Editor)?; -                let entity_id = FatCatId::from_str(&ident)?; +                let entity_id = FatcatId::from_str(&ident)?;                  auth_context.require_editgroup(&conn, editgroup_id)?;                  let edit_context = make_edit_context(&conn, auth_context.editor_id, Some(editgroup_id), false)?;                  edit_context.check(&conn)?; @@ -304,7 +304,7 @@ macro_rules! wrap_entity_handlers {              let conn = self.db_pool.get().expect("db_pool error");              // No transaction for GET?              let ret = match (|| { -                let entity_id = FatCatId::from_str(&ident)?; +                let entity_id = FatcatId::from_str(&ident)?;                  $model::db_get_history(&conn, entity_id, limit)              })() {                  Ok(history) => @@ -409,7 +409,7 @@ macro_rules! wrap_entity_handlers {                  let auth_context = self.auth_confectionary.require_auth(&conn, &context.auth_data, Some(stringify!($delete_edit_fn)))?;                  auth_context.require_role(FatcatRole::Editor)?;                  let edit = $model::db_get_edit(&conn, edit_id)?; -                auth_context.require_editgroup(&conn, FatCatId::from_uuid(&edit.editgroup_id))?; +                auth_context.require_editgroup(&conn, FatcatId::from_uuid(&edit.editgroup_id))?;                  $model::db_delete_edit(&conn, edit_id)              }) {                  Ok(()) => @@ -446,8 +446,8 @@ macro_rules! wrap_entity_handlers {              let conn = self.db_pool.get().expect("db_pool error");              // No transaction for GET?              let ret = match (|| { -                let entity_id = FatCatId::from_str(&ident)?; -                let redirects: Vec<FatCatId> = $model::db_get_redirects(&conn, entity_id)?; +                let entity_id = FatcatId::from_str(&ident)?; +                let redirects: Vec<FatcatId> = $model::db_get_redirects(&conn, entity_id)?;                  Ok(redirects.into_iter().map(|fcid| fcid.to_string()).collect())              })() {                  Ok(redirects) => @@ -528,7 +528,7 @@ macro_rules! wrap_fcid_handler {              let conn = self.db_pool.get().expect("db_pool error");              // No transaction for GET              let ret = match (|| { -                let fcid = FatCatId::from_str(&id)?; +                let fcid = FatcatId::from_str(&id)?;                  self.$get_handler(&conn, fcid)              })() {                  Ok(entity) => @@ -563,7 +563,7 @@ macro_rules! wrap_fcid_hide_handler {              let conn = self.db_pool.get().expect("db_pool error");              // No transaction for GET              let ret = match (|| { -                let fcid = FatCatId::from_str(&id)?; +                let fcid = FatcatId::from_str(&id)?;                  let hide_flags = match hide {                      None => HideFlags::none(),                      Some(param) => HideFlags::from_str(¶m)?, @@ -962,7 +962,7 @@ impl Api for Server {                  &context.auth_data,                  Some("update_editor"),              )?; -            let editor_id = FatCatId::from_str(&editor_id)?; +            let editor_id = FatcatId::from_str(&editor_id)?;              // DANGER! these permissions are for username updates only!              if editor_id == auth_context.editor_id {                  // self edit of username allowed @@ -1041,7 +1041,7 @@ impl Api for Server {      ) -> Box<Future<Item = AcceptEditgroupResponse, Error = ApiError> + Send> {          let conn = self.db_pool.get().expect("db_pool error");          let ret = match conn.transaction(|| { -            let editgroup_id = FatCatId::from_str(&editgroup_id)?; +            let editgroup_id = FatcatId::from_str(&editgroup_id)?;              let auth_context = self.auth_confectionary.require_auth(                  &conn,                  &context.auth_data, @@ -1100,7 +1100,7 @@ impl Api for Server {      ) -> Box<Future<Item = GetEditgroupResponse, Error = ApiError> + Send> {          let conn = self.db_pool.get().expect("db_pool error");          let ret = match conn.transaction(|| { -            let editgroup_id = FatCatId::from_str(&editgroup_id)?; +            let editgroup_id = FatcatId::from_str(&editgroup_id)?;              self.get_editgroup_handler(&conn, editgroup_id)          }) {              Ok(entity) => GetEditgroupResponse::Found(entity), @@ -1247,7 +1247,7 @@ impl Api for Server {              let (editor, created) = self.auth_oidc_handler(&conn, params)?;              // create an auth token with 31 day duration              let token = self.auth_confectionary.create_token( -                FatCatId::from_str(&editor.editor_id.clone().unwrap())?, +                FatcatId::from_str(&editor.editor_id.clone().unwrap())?,                  Some(chrono::Duration::days(31)),              )?;              let result = AuthOidcResult { editor, token }; diff --git a/rust/src/entity_crud.rs b/rust/src/entity_crud.rs index 81b359da..618bd2ff 100644 --- a/rust/src/entity_crud.rs +++ b/rust/src/entity_crud.rs @@ -49,7 +49,7 @@ where      // Generic Methods      fn from_deleted_row(ident_row: Self::IdentRow) -> Result<Self>; -    fn db_get(conn: &DbConn, ident: FatCatId, hide: HideFlags) -> Result<Self>; +    fn db_get(conn: &DbConn, ident: FatcatId, hide: HideFlags) -> Result<Self>;      fn db_get_rev(conn: &DbConn, rev_id: Uuid, hide: HideFlags) -> Result<Self>;      fn db_expand(&mut self, conn: &DbConn, expand: ExpandFlags) -> Result<()>;      fn db_create(&self, conn: &DbConn, edit_context: &EditContext) -> Result<Self::EditRow>; @@ -62,22 +62,22 @@ where          &self,          conn: &DbConn,          edit_context: &EditContext, -        ident: FatCatId, +        ident: FatcatId,      ) -> Result<Self::EditRow>;      fn db_delete(          conn: &DbConn,          edit_context: &EditContext, -        ident: FatCatId, +        ident: FatcatId,      ) -> Result<Self::EditRow>;      fn db_get_history(          conn: &DbConn, -        ident: FatCatId, +        ident: FatcatId,          limit: Option<i64>,      ) -> Result<Vec<EntityHistoryEntry>>;      fn db_get_edit(conn: &DbConn, edit_id: Uuid) -> Result<Self::EditRow>;      fn db_delete_edit(conn: &DbConn, edit_id: Uuid) -> Result<()>; -    fn db_get_redirects(conn: &DbConn, ident: FatCatId) -> Result<Vec<FatCatId>>; -    fn db_accept_edits(conn: &DbConn, editgroup_id: FatCatId) -> Result<u64>; +    fn db_get_redirects(conn: &DbConn, ident: FatcatId) -> Result<Vec<FatcatId>>; +    fn db_accept_edits(conn: &DbConn, editgroup_id: FatcatId) -> Result<u64>;      // Entity-specific Methods      fn db_from_row( @@ -260,7 +260,7 @@ fn test_hide_flags() {  macro_rules! generic_db_get {      ($ident_table:ident, $rev_table:ident) => { -        fn db_get(conn: &DbConn, ident: FatCatId, hide: HideFlags) -> Result<Self> { +        fn db_get(conn: &DbConn, ident: FatcatId, hide: HideFlags) -> Result<Self> {              let res: Option<(Self::IdentRow, Self::RevRow)> = $ident_table::table                  .find(ident.to_uuid())                  .inner_join($rev_table::table) @@ -378,7 +378,7 @@ macro_rules! generic_db_create_batch {  macro_rules! generic_db_update {      ($ident_table: ident, $edit_table: ident) => { -        fn db_update(&self, conn: &DbConn, edit_context: &EditContext, ident: FatCatId) -> Result<Self::EditRow> { +        fn db_update(&self, conn: &DbConn, edit_context: &EditContext, ident: FatcatId) -> Result<Self::EditRow> {              let current: Self::IdentRow = $ident_table::table.find(ident.to_uuid()).first(conn)?;              let no_redirect: Option<Uuid> = None;              // TODO: is this actually true? or should we allow updates in the same editgroup? @@ -400,7 +400,7 @@ macro_rules! generic_db_update {                  }                  // special case: redirect to another entity                  if let Some(ref redirect_ident) = self.redirect { -                    let redirect_ident = FatCatId::from_str(&redirect_ident)?.to_uuid(); +                    let redirect_ident = FatcatId::from_str(&redirect_ident)?.to_uuid();                      if Some(redirect_ident) == current.redirect_id {                          return Err(ErrorKind::OtherBadRequest(                              "redundantly redirecting entity to it's current target currently isn't supported".to_string()).into()); @@ -472,7 +472,7 @@ macro_rules! generic_db_delete {          fn db_delete(              conn: &DbConn,              edit_context: &EditContext, -            ident: FatCatId, +            ident: FatcatId,          ) -> Result<Self::EditRow> {              let current: Self::IdentRow = $ident_table::table.find(ident.to_uuid()).first(conn)?;              if current.is_live != true { @@ -508,7 +508,7 @@ macro_rules! generic_db_get_history {      ($edit_table:ident) => {          fn db_get_history(              conn: &DbConn, -            ident: FatCatId, +            ident: FatcatId,              limit: Option<i64>,          ) -> Result<Vec<EntityHistoryEntry>> {              let limit = limit.unwrap_or(50); // TODO: make a static @@ -569,12 +569,12 @@ macro_rules! generic_db_delete_edit {  macro_rules! generic_db_get_redirects {      ($ident_table:ident) => { -        fn db_get_redirects(conn: &DbConn, ident: FatCatId) -> Result<Vec<FatCatId>> { +        fn db_get_redirects(conn: &DbConn, ident: FatcatId) -> Result<Vec<FatcatId>> {              let res: Vec<Uuid> = $ident_table::table                  .select($ident_table::id)                  .filter($ident_table::redirect_id.eq(ident.to_uuid()))                  .get_results(conn)?; -            Ok(res.iter().map(|u| FatCatId::from_uuid(u)).collect()) +            Ok(res.iter().map(|u| FatcatId::from_uuid(u)).collect())          }      };  } @@ -619,7 +619,7 @@ macro_rules! generic_db_get_redirects {  #[allow(unused_macros)]  macro_rules! generic_db_accept_edits_batch {      ($entity_name_str:expr, $ident_table:ident, $edit_table:ident) => { -        fn db_accept_edits(conn: &DbConn, editgroup_id: FatCatId) -> Result<u64> { +        fn db_accept_edits(conn: &DbConn, editgroup_id: FatcatId) -> Result<u64> {              // NOTE: the checks and redirects can be skipped for accepts that are all inserts              // (which I guess we only know for batch inserts with auto-accept?) @@ -701,7 +701,7 @@ macro_rules! generic_db_accept_edits_batch {  #[allow(unused_macros)]  macro_rules! generic_db_accept_edits_each {      ($ident_table:ident, $edit_table:ident) => { -        fn db_accept_edits(conn: &DbConn, editgroup_id: FatCatId) -> Result<u64> { +        fn db_accept_edits(conn: &DbConn, editgroup_id: FatcatId) -> Result<u64> {              // 1. select edit rows (in sql)              let edit_rows: Vec<Self::EditRow> = $edit_table::table                  .filter($edit_table::editgroup_id.eq(&editgroup_id.to_uuid())) @@ -777,11 +777,11 @@ impl EntityCrud for ContainerEntity {              abbrev: None,              coden: None,              state: Some(ident_row.state().unwrap().shortname()), -            ident: Some(FatCatId::from_uuid(&ident_row.id).to_string()), +            ident: Some(FatcatId::from_uuid(&ident_row.id).to_string()),              revision: ident_row.rev_id.map(|u| u.to_string()),              redirect: ident_row                  .redirect_id -                .map(|u| FatCatId::from_uuid(&u).to_string()), +                .map(|u| FatcatId::from_uuid(&u).to_string()),              extra: None,              edit_extra: None,          }) @@ -796,8 +796,8 @@ impl EntityCrud for ContainerEntity {          let (state, ident_id, redirect_id) = match ident_row {              Some(i) => (                  Some(i.state().unwrap().shortname()), -                Some(FatCatId::from_uuid(&i.id).to_string()), -                i.redirect_id.map(|u| FatCatId::from_uuid(&u).to_string()), +                Some(FatcatId::from_uuid(&i.id).to_string()), +                i.redirect_id.map(|u| FatcatId::from_uuid(&u).to_string()),              ),              None => (None, None, None),          }; @@ -892,11 +892,11 @@ impl EntityCrud for CreatorEntity {              orcid: None,              wikidata_qid: None,              state: Some(ident_row.state().unwrap().shortname()), -            ident: Some(FatCatId::from_uuid(&ident_row.id).to_string()), +            ident: Some(FatcatId::from_uuid(&ident_row.id).to_string()),              revision: ident_row.rev_id.map(|u| u.to_string()),              redirect: ident_row                  .redirect_id -                .map(|u| FatCatId::from_uuid(&u).to_string()), +                .map(|u| FatcatId::from_uuid(&u).to_string()),          })      } @@ -909,8 +909,8 @@ impl EntityCrud for CreatorEntity {          let (state, ident_id, redirect_id) = match ident_row {              Some(i) => (                  Some(i.state().unwrap().shortname()), -                Some(FatCatId::from_uuid(&i.id).to_string()), -                i.redirect_id.map(|u| FatCatId::from_uuid(&u).to_string()), +                Some(FatcatId::from_uuid(&i.id).to_string()), +                i.redirect_id.map(|u| FatcatId::from_uuid(&u).to_string()),              ),              None => (None, None, None),          }; @@ -1002,11 +1002,11 @@ impl EntityCrud for FileEntity {              mimetype: None,              release_ids: None,              state: Some(ident_row.state().unwrap().shortname()), -            ident: Some(FatCatId::from_uuid(&ident_row.id).to_string()), +            ident: Some(FatcatId::from_uuid(&ident_row.id).to_string()),              revision: ident_row.rev_id.map(|u| u.to_string()),              redirect: ident_row                  .redirect_id -                .map(|u| FatCatId::from_uuid(&u).to_string()), +                .map(|u| FatcatId::from_uuid(&u).to_string()),              extra: None,              edit_extra: None,          }) @@ -1021,8 +1021,8 @@ impl EntityCrud for FileEntity {          let (state, ident_id, redirect_id) = match ident_row {              Some(i) => (                  Some(i.state().unwrap().shortname()), -                Some(FatCatId::from_uuid(&i.id).to_string()), -                i.redirect_id.map(|u| FatCatId::from_uuid(&u).to_string()), +                Some(FatcatId::from_uuid(&i.id).to_string()), +                i.redirect_id.map(|u| FatcatId::from_uuid(&u).to_string()),              ),              None => (None, None, None),          }; @@ -1037,11 +1037,11 @@ impl EntityCrud for FileEntity {              })              .collect(); -        let release_ids: Vec<FatCatId> = file_rev_release::table +        let release_ids: Vec<FatcatId> = file_rev_release::table              .filter(file_rev_release::file_rev.eq(rev_row.id))              .get_results(conn)?              .into_iter() -            .map(|r: FileRevReleaseRow| FatCatId::from_uuid(&r.target_release_ident_id)) +            .map(|r: FileRevReleaseRow| FatcatId::from_uuid(&r.target_release_ident_id))              .collect();          Ok(FileEntity { @@ -1104,7 +1104,7 @@ impl EntityCrud for FileEntity {                          .map(|r| {                              Ok(FileRevReleaseRow {                                  file_rev: *rev_id, -                                target_release_ident_id: FatCatId::from_str(r)?.to_uuid(), +                                target_release_ident_id: FatcatId::from_str(r)?.to_uuid(),                              })                          })                          .collect(); @@ -1175,11 +1175,11 @@ impl EntityCrud for FilesetEntity {              urls: None,              release_ids: None,              state: Some(ident_row.state().unwrap().shortname()), -            ident: Some(FatCatId::from_uuid(&ident_row.id).to_string()), +            ident: Some(FatcatId::from_uuid(&ident_row.id).to_string()),              revision: ident_row.rev_id.map(|u| u.to_string()),              redirect: ident_row                  .redirect_id -                .map(|u| FatCatId::from_uuid(&u).to_string()), +                .map(|u| FatcatId::from_uuid(&u).to_string()),              extra: None,              edit_extra: None,          }) @@ -1194,8 +1194,8 @@ impl EntityCrud for FilesetEntity {          let (state, ident_id, redirect_id) = match ident_row {              Some(i) => (                  Some(i.state().unwrap().shortname()), -                Some(FatCatId::from_uuid(&i.id).to_string()), -                i.redirect_id.map(|u| FatCatId::from_uuid(&u).to_string()), +                Some(FatcatId::from_uuid(&i.id).to_string()), +                i.redirect_id.map(|u| FatcatId::from_uuid(&u).to_string()),              ),              None => (None, None, None),          }; @@ -1224,11 +1224,11 @@ impl EntityCrud for FilesetEntity {              })              .collect(); -        let release_ids: Vec<FatCatId> = fileset_rev_release::table +        let release_ids: Vec<FatcatId> = fileset_rev_release::table              .filter(fileset_rev_release::fileset_rev.eq(rev_row.id))              .get_results(conn)?              .into_iter() -            .map(|r: FilesetRevReleaseRow| FatCatId::from_uuid(&r.target_release_ident_id)) +            .map(|r: FilesetRevReleaseRow| FatcatId::from_uuid(&r.target_release_ident_id))              .collect();          Ok(FilesetEntity { @@ -1321,7 +1321,7 @@ impl EntityCrud for FilesetEntity {                          .map(|r| {                              Ok(FilesetRevReleaseRow {                                  fileset_rev: *rev_id, -                                target_release_ident_id: FatCatId::from_str(r)?.to_uuid(), +                                target_release_ident_id: FatcatId::from_str(r)?.to_uuid(),                              })                          })                          .collect(); @@ -1385,11 +1385,11 @@ impl EntityCrud for WebcaptureEntity {              timestamp: None,              release_ids: None,              state: Some(ident_row.state().unwrap().shortname()), -            ident: Some(FatCatId::from_uuid(&ident_row.id).to_string()), +            ident: Some(FatcatId::from_uuid(&ident_row.id).to_string()),              revision: ident_row.rev_id.map(|u| u.to_string()),              redirect: ident_row                  .redirect_id -                .map(|u| FatCatId::from_uuid(&u).to_string()), +                .map(|u| FatcatId::from_uuid(&u).to_string()),              extra: None,              edit_extra: None,          }) @@ -1404,8 +1404,8 @@ impl EntityCrud for WebcaptureEntity {          let (state, ident_id, redirect_id) = match ident_row {              Some(i) => (                  Some(i.state().unwrap().shortname()), -                Some(FatCatId::from_uuid(&i.id).to_string()), -                i.redirect_id.map(|u| FatCatId::from_uuid(&u).to_string()), +                Some(FatcatId::from_uuid(&i.id).to_string()), +                i.redirect_id.map(|u| FatcatId::from_uuid(&u).to_string()),              ),              None => (None, None, None),          }; @@ -1435,11 +1435,11 @@ impl EntityCrud for WebcaptureEntity {              })              .collect(); -        let release_ids: Vec<FatCatId> = webcapture_rev_release::table +        let release_ids: Vec<FatcatId> = webcapture_rev_release::table              .filter(webcapture_rev_release::webcapture_rev.eq(rev_row.id))              .get_results(conn)?              .into_iter() -            .map(|r: WebcaptureRevReleaseRow| FatCatId::from_uuid(&r.target_release_ident_id)) +            .map(|r: WebcaptureRevReleaseRow| FatcatId::from_uuid(&r.target_release_ident_id))              .collect();          Ok(WebcaptureEntity { @@ -1539,7 +1539,7 @@ impl EntityCrud for WebcaptureEntity {                          .map(|r| {                              Ok(WebcaptureRevReleaseRow {                                  webcapture_rev: *rev_id, -                                target_release_ident_id: FatCatId::from_str(r)?.to_uuid(), +                                target_release_ident_id: FatcatId::from_str(r)?.to_uuid(),                              })                          })                          .collect(); @@ -1621,11 +1621,11 @@ impl EntityCrud for ReleaseEntity {              abstracts: None,              state: Some(ident_row.state().unwrap().shortname()), -            ident: Some(FatCatId::from_uuid(&ident_row.id).to_string()), +            ident: Some(FatcatId::from_uuid(&ident_row.id).to_string()),              revision: ident_row.rev_id.map(|u| u.to_string()),              redirect: ident_row                  .redirect_id -                .map(|u| FatCatId::from_uuid(&u).to_string()), +                .map(|u| FatcatId::from_uuid(&u).to_string()),              extra: None,              edit_extra: None,          }) @@ -1645,8 +1645,8 @@ impl EntityCrud for ReleaseEntity {                  Some(ident) => match &self.redirect {                      // If we're a redirect, then expand for the *target* identifier, not *our*                      // identifier. Tricky! -                    None => FatCatId::from_str(&ident)?, -                    Some(redir) => FatCatId::from_str(&redir)?, +                    None => FatcatId::from_str(&ident)?, +                    Some(redir) => FatcatId::from_str(&redir)?,                  },              };              self.files = Some(get_release_files(conn, ident, HideFlags::none())?); @@ -1655,7 +1655,7 @@ impl EntityCrud for ReleaseEntity {              if let Some(ref cid) = self.container_id {                  self.container = Some(ContainerEntity::db_get(                      conn, -                    FatCatId::from_str(&cid)?, +                    FatcatId::from_str(&cid)?,                      HideFlags::none(),                  )?);              } @@ -1666,7 +1666,7 @@ impl EntityCrud for ReleaseEntity {                      if let Some(ref creator_id) = contrib.creator_id {                          contrib.creator = Some(CreatorEntity::db_get(                              conn, -                            FatCatId::from_str(creator_id)?, +                            FatcatId::from_str(creator_id)?,                              HideFlags::none(),                          )?);                      } @@ -1731,7 +1731,7 @@ impl EntityCrud for ReleaseEntity {                  let mut model = (*model).clone();                  if model.work_id.is_none() {                      model.work_id = -                        Some(FatCatId::from_uuid(&new_work_ids.pop().unwrap()).to_string()) +                        Some(FatcatId::from_uuid(&new_work_ids.pop().unwrap()).to_string())                  }                  model              }) @@ -1782,8 +1782,8 @@ impl EntityCrud for ReleaseEntity {          let (state, ident_id, redirect_id) = match ident_row {              Some(i) => (                  Some(i.state().unwrap().shortname()), -                Some(FatCatId::from_uuid(&i.id).to_string()), -                i.redirect_id.map(|u| FatCatId::from_uuid(&u).to_string()), +                Some(FatcatId::from_uuid(&i.id).to_string()), +                i.redirect_id.map(|u| FatcatId::from_uuid(&u).to_string()),              ),              None => (None, None, None),          }; @@ -1806,7 +1806,7 @@ impl EntityCrud for ReleaseEntity {                          locator: r.locator,                          target_release_id: r                              .target_release_ident_id -                            .map(|v| FatCatId::from_uuid(&v).to_string()), +                            .map(|v| FatcatId::from_uuid(&v).to_string()),                      })                      .collect(),              ), @@ -1830,7 +1830,7 @@ impl EntityCrud for ReleaseEntity {                          extra: c.extra_json,                          creator_id: c                              .creator_ident_id -                            .map(|v| FatCatId::from_uuid(&v).to_string()), +                            .map(|v| FatcatId::from_uuid(&v).to_string()),                          creator: None,                      })                      .collect(), @@ -1879,10 +1879,10 @@ impl EntityCrud for ReleaseEntity {              container: None,              container_id: rev_row                  .container_ident_id -                .map(|u| FatCatId::from_uuid(&u).to_string()), +                .map(|u| FatcatId::from_uuid(&u).to_string()),              publisher: rev_row.publisher,              language: rev_row.language, -            work_id: Some(FatCatId::from_uuid(&rev_row.work_ident_id).to_string()), +            work_id: Some(FatcatId::from_uuid(&rev_row.work_ident_id).to_string()),              refs,              contribs,              abstracts, @@ -1951,11 +1951,11 @@ impl EntityCrud for ReleaseEntity {                      pages: model.pages.clone(),                      work_ident_id: match model.work_id.clone() {                          None => bail!("release_revs must have a work_id by the time they are inserted; this is an internal soundness error"), -                        Some(s) => FatCatId::from_str(&s)?.to_uuid(), +                        Some(s) => FatcatId::from_str(&s)?.to_uuid(),                      },                      container_ident_id: match model.container_id.clone() {                          None => None, -                        Some(s) => Some(FatCatId::from_str(&s)?.to_uuid()), +                        Some(s) => Some(FatcatId::from_str(&s)?.to_uuid()),                      },                      publisher: model.publisher.clone(),                      language: model.language.clone(), @@ -1983,7 +1983,7 @@ impl EntityCrud for ReleaseEntity {                                  release_rev: *rev_id,                                  target_release_ident_id: match r.target_release_id.clone() {                                      None => None, -                                    Some(v) => Some(FatCatId::from_str(&v)?.to_uuid()), +                                    Some(v) => Some(FatcatId::from_str(&v)?.to_uuid()),                                  },                                  index_val: r.index.map(|v| v as i32),                                  key: r.key.clone(), @@ -2009,7 +2009,7 @@ impl EntityCrud for ReleaseEntity {                                  release_rev: *rev_id,                                  creator_ident_id: match c.creator_id.clone() {                                      None => None, -                                    Some(v) => Some(FatCatId::from_str(&v)?.to_uuid()), +                                    Some(v) => Some(FatcatId::from_str(&v)?.to_uuid()),                                  },                                  raw_name: c.raw_name.clone(),                                  index_val: c.index.map(|v| v as i32), @@ -2111,11 +2111,11 @@ impl EntityCrud for WorkEntity {          Ok(WorkEntity {              state: Some(ident_row.state().unwrap().shortname()), -            ident: Some(FatCatId::from_uuid(&ident_row.id).to_string()), +            ident: Some(FatcatId::from_uuid(&ident_row.id).to_string()),              revision: ident_row.rev_id.map(|u| u.to_string()),              redirect: ident_row                  .redirect_id -                .map(|u| FatCatId::from_uuid(&u).to_string()), +                .map(|u| FatcatId::from_uuid(&u).to_string()),              extra: None,              edit_extra: None,          }) @@ -2130,8 +2130,8 @@ impl EntityCrud for WorkEntity {          let (state, ident_id, redirect_id) = match ident_row {              Some(i) => (                  Some(i.state().unwrap().shortname()), -                Some(FatCatId::from_uuid(&i.id).to_string()), -                i.redirect_id.map(|u| FatCatId::from_uuid(&u).to_string()), +                Some(FatcatId::from_uuid(&i.id).to_string()), +                i.redirect_id.map(|u| FatcatId::from_uuid(&u).to_string()),              ),              None => (None, None, None),          }; diff --git a/rust/src/identifiers.rs b/rust/src/identifiers.rs index e107d16f..073464aa 100644 --- a/rust/src/identifiers.rs +++ b/rust/src/identifiers.rs @@ -3,51 +3,50 @@ use data_encoding::BASE32_NOPAD;  use regex::Regex;  use serde_json;  use std::str::FromStr; +use std::{convert, fmt};  use uuid::Uuid; -use std::{fmt, convert}; -  #[derive(Clone, Copy, PartialEq, Debug)] -pub struct FatCatId(Uuid); +pub struct FatcatId(Uuid); -impl fmt::Display for FatCatId { +impl fmt::Display for FatcatId {      fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {          write!(f, "{}", uuid2fcid(&self.to_uuid()))      }  } -impl FromStr for FatCatId { +impl FromStr for FatcatId {      type Err = Error; -    fn from_str(s: &str) -> Result<FatCatId> { -        fcid2uuid(s).map(FatCatId) +    fn from_str(s: &str) -> Result<FatcatId> { +        fcid2uuid(s).map(FatcatId)      }  } -impl convert::AsRef<Uuid> for FatCatId { +impl convert::AsRef<Uuid> for FatcatId {      fn as_ref(&self) -> &Uuid {          &self.0      }  } -impl convert::Into<Uuid> for FatCatId { +impl convert::Into<Uuid> for FatcatId {      fn into(self) -> Uuid {          self.0      }  } -impl convert::From<Uuid> for FatCatId { -    fn from(u: Uuid) -> FatCatId { -        FatCatId(u) +impl convert::From<Uuid> for FatcatId { +    fn from(u: Uuid) -> FatcatId { +        FatcatId(u)      }  } -impl FatCatId { +impl FatcatId {      pub fn to_uuid(&self) -> Uuid {          self.0      }      // TODO: make it possible to just pass 'Uuid' in addition to '&Uuid' -    pub fn from_uuid(u: &Uuid) -> FatCatId { -        FatCatId(*u) +    pub fn from_uuid(u: &Uuid) -> FatcatId { +        FatcatId(*u)      }  } diff --git a/rust/tests/helpers.rs b/rust/tests/helpers.rs index 01891eaf..2410aa32 100644 --- a/rust/tests/helpers.rs +++ b/rust/tests/helpers.rs @@ -1,5 +1,5 @@  use fatcat::auth::MacaroonAuthMiddleware; -use fatcat::identifiers::FatCatId; +use fatcat::identifiers::FatcatId;  use fatcat::server;  use fatcat_api_spec::client::Client;  use fatcat_api_spec::Context; @@ -9,9 +9,8 @@ use iron::{status, Chain, Headers, Iron, Listening};  use iron_test::response;  use std::str::FromStr; -  pub static TEST_ADMIN_EDITOR_ID: &str = "aaaaaaaaaaaabkvkaaaaaaaaae"; -//static TEST_ADMIN_EDITOR_ID: FatCatId = FatCatId::from_str("aaaaaaaaaaaabkvkaaaaaaaaae").unwrap(); +//static TEST_ADMIN_EDITOR_ID: FatcatId = FatcatId::from_str("aaaaaaaaaaaabkvkaaaaaaaaae").unwrap();  // A current problem with this method is that if the test fails (eg, panics, assert fails), the  // server never gets closed, and the server thread hangs forever. @@ -22,7 +21,7 @@ pub fn setup_client() -> (Client, Context, Listening) {      let server = server::create_test_server().unwrap();      // setup auth as admin user -    let admin_id = FatCatId::from_str(TEST_ADMIN_EDITOR_ID).unwrap(); +    let admin_id = FatcatId::from_str(TEST_ADMIN_EDITOR_ID).unwrap();      let token = server          .auth_confectionary          .create_token(admin_id, None) @@ -59,7 +58,7 @@ pub fn setup_http() -> (      let conn = server.db_pool.get().expect("db_pool error");      // setup auth as admin user -    let admin_id = FatCatId::from_str(TEST_ADMIN_EDITOR_ID).unwrap(); +    let admin_id = FatcatId::from_str(TEST_ADMIN_EDITOR_ID).unwrap();      let token = server          .auth_confectionary          .create_token(admin_id, None) diff --git a/rust/tests/test_api_server_http.rs b/rust/tests/test_api_server_http.rs index 4773a44e..17ba6615 100644 --- a/rust/tests/test_api_server_http.rs +++ b/rust/tests/test_api_server_http.rs @@ -485,12 +485,15 @@ fn test_reverse_lookups() {  #[test]  fn test_post_container() {      let (headers, router, conn) = helpers::setup_http(); -    let editor_id = FatCatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); -    let editgroup_id = FatCatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap()); +    let editor_id = FatcatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); +    let editgroup_id = FatcatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap());      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/container?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/container?editgroup_id={}", +                editgroup_id +            ),              headers,              r#"{"name": "test journal"}"#,              &router, @@ -519,12 +522,15 @@ fn test_post_batch_container() {  #[test]  fn test_post_creator() {      let (headers, router, conn) = helpers::setup_http(); -    let editor_id = FatCatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); -    let editgroup_id = FatCatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap()); +    let editor_id = FatcatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); +    let editgroup_id = FatcatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap());      helpers::check_http_response(          request::post( -            &format!( "http://localhost:9411/v0/creator?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/creator?editgroup_id={}", +                editgroup_id +            ),              headers,              r#"{"display_name": "some person"}"#,              &router, @@ -537,8 +543,8 @@ fn test_post_creator() {  #[test]  fn test_post_file() {      let (headers, router, conn) = helpers::setup_http(); -    let editor_id = FatCatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); -    let editgroup_id = FatCatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap()); +    let editor_id = FatcatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); +    let editgroup_id = FatcatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap());      helpers::check_http_response(          request::post( @@ -607,8 +613,8 @@ fn test_post_file() {  #[test]  fn test_post_fileset() {      let (headers, router, conn) = helpers::setup_http(); -    let editor_id = FatCatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); -    let editgroup_id = FatCatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap()); +    let editor_id = FatcatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); +    let editgroup_id = FatcatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap());      helpers::check_http_response(          request::post( @@ -667,8 +673,8 @@ fn test_post_fileset() {  #[test]  fn test_post_webcapture() {      let (headers, router, conn) = helpers::setup_http(); -    let editor_id = FatCatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); -    let editgroup_id = FatCatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap()); +    let editor_id = FatcatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); +    let editgroup_id = FatcatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap());      helpers::check_http_response(          request::post( @@ -737,8 +743,8 @@ fn test_post_webcapture() {  #[test]  fn test_post_release() {      let (headers, router, conn) = helpers::setup_http(); -    let editor_id = FatCatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); -    let editgroup_id = FatCatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap()); +    let editor_id = FatcatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); +    let editgroup_id = FatcatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap());      helpers::check_http_response(          request::post( @@ -840,12 +846,15 @@ fn test_post_release() {  #[test]  fn test_post_work() {      let (headers, router, conn) = helpers::setup_http(); -    let editor_id = FatCatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); -    let editgroup_id = FatCatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap()); +    let editor_id = FatcatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); +    let editgroup_id = FatcatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap());      helpers::check_http_response(          request::post( -            &format!( "http://localhost:9411/v0/work?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/work?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              // TODO: target_work_id              r#"{ @@ -861,12 +870,15 @@ fn test_post_work() {  #[test]  fn test_update_work() {      let (headers, router, conn) = helpers::setup_http(); -    let editor_id = FatCatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); -    let editgroup_id = FatCatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap()); +    let editor_id = FatcatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); +    let editgroup_id = FatcatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap());      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/work?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/work?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{                  "extra": { "source": "other speculation" } @@ -879,10 +891,7 @@ fn test_update_work() {      helpers::check_http_response(          request::post( -            &format!( -                "http://localhost:9411/v0/editgroup/{}/accept", -                editgroup_id -            ), +            &format!("http://localhost:9411/v0/editgroup/{}/accept", editgroup_id),              headers.clone(),              "",              &router, @@ -895,12 +904,15 @@ fn test_update_work() {  #[test]  fn test_delete_work() {      let (headers, router, conn) = helpers::setup_http(); -    let editor_id = FatCatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); -    let editgroup_id = FatCatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap()); +    let editor_id = FatcatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); +    let editgroup_id = FatcatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap());      helpers::check_http_response(          request::delete( -            &format!("http://localhost:9411/v0/work/aaaaaaaaaaaaavkvaaaaaaaaai?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/work/aaaaaaaaaaaaavkvaaaaaaaaai?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              &router,          ), @@ -923,8 +935,8 @@ fn test_delete_work() {  #[test]  fn test_accept_editgroup() {      let (headers, router, conn) = helpers::setup_http(); -    let editor_id = FatCatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); -    let editgroup_id = FatCatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap()); +    let editor_id = FatcatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); +    let editgroup_id = FatcatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap());      let c: i64 = container_ident::table          .filter(container_ident::is_live.eq(false)) @@ -941,7 +953,10 @@ fn test_accept_editgroup() {      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/container?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/container?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              &format!(                  "{{\"name\": \"test journal 1\", \"editgroup_id\": \"{}\"}}", @@ -954,7 +969,10 @@ fn test_accept_editgroup() {      );      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/container?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/container?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              &format!(                  "{{\"name\": \"test journal 2\", \"editgroup_id\": \"{}\"}}", @@ -975,10 +993,7 @@ fn test_accept_editgroup() {      helpers::check_http_response(          request::get( -            &format!( -                "http://localhost:9411/v0/editgroup/{}", -                editgroup_id -            ), +            &format!("http://localhost:9411/v0/editgroup/{}", editgroup_id),              headers.clone(),              &router,          ), @@ -988,10 +1003,7 @@ fn test_accept_editgroup() {      helpers::check_http_response(          request::post( -            &format!( -                "http://localhost:9411/v0/editgroup/{}/accept", -                editgroup_id -            ), +            &format!("http://localhost:9411/v0/editgroup/{}/accept", editgroup_id),              headers.clone(),              "",              &router, @@ -1042,12 +1054,15 @@ fn test_changelog() {  #[test]  fn test_400() {      let (headers, router, conn) = helpers::setup_http(); -    let editor_id = FatCatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); -    let editgroup_id = FatCatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap()); +    let editor_id = FatcatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); +    let editgroup_id = FatcatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap());      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers,              r#"{"title": "secret paper",                  "release_type": "article-journal", @@ -1118,13 +1133,16 @@ fn test_edit_gets() {  #[test]  fn test_bad_external_idents() {      let (headers, router, conn) = helpers::setup_http(); -    let editor_id = FatCatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); -    let editgroup_id = FatCatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap()); +    let editor_id = FatcatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); +    let editgroup_id = FatcatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap());      // Bad wikidata QID      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"title": "secret paper",                  "wikidata_qid": "P12345" @@ -1136,7 +1154,10 @@ fn test_bad_external_idents() {      );      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"name": "my journal",                  "wikidata_qid": "P12345" @@ -1148,7 +1169,10 @@ fn test_bad_external_idents() {      );      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"display_name": "some body",                  "wikidata_qid": "P12345" @@ -1162,7 +1186,10 @@ fn test_bad_external_idents() {      // Bad PMCID      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"title": "secret paper",                  "pmcid": "12345" @@ -1176,7 +1203,10 @@ fn test_bad_external_idents() {      // Bad PMID      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"title": "secret paper",                  "pmid": "not-a-number" @@ -1190,7 +1220,10 @@ fn test_bad_external_idents() {      // Bad DOI      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"title": "secret paper",                  "doi": "asdf" @@ -1204,7 +1237,10 @@ fn test_bad_external_idents() {      // Good identifiers      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"title": "secret paper",                  "doi": "10.1234/abcde.781231231239", @@ -1222,12 +1258,15 @@ fn test_bad_external_idents() {  #[test]  fn test_abstracts() {      let (headers, router, conn) = helpers::setup_http(); -    let editor_id = FatCatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); -    let editgroup_id = FatCatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap()); +    let editor_id = FatcatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); +    let editgroup_id = FatcatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap());      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"title": "some paper",                  "doi": "10.1234/iiiiiii", @@ -1317,8 +1356,8 @@ fn test_abstracts() {  #[test]  fn test_contribs() {      let (headers, router, conn) = helpers::setup_http(); -    let editor_id = FatCatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); -    let editgroup_id = FatCatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap()); +    let editor_id = FatcatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); +    let editgroup_id = FatcatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap());      helpers::check_http_response(          request::post( @@ -1404,13 +1443,16 @@ fn test_post_batch_autoaccept() {  #[test]  fn test_release_dates() {      let (headers, router, conn) = helpers::setup_http(); -    let editor_id = FatCatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); -    let editgroup_id = FatCatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap()); +    let editor_id = FatcatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); +    let editgroup_id = FatcatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap());      // Ok      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"title": "secret minimal paper",                  "release_type": "article-journal", @@ -1425,7 +1467,10 @@ fn test_release_dates() {      // Ok      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"title": "secret minimal paper",                  "release_type": "article-journal", @@ -1440,7 +1485,10 @@ fn test_release_dates() {      // Ok; ISO 8601      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"title": "secret minimal paper",                  "release_type": "article-journal", @@ -1453,7 +1501,10 @@ fn test_release_dates() {      );      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"title": "secret minimal paper",                  "release_type": "article-journal", @@ -1468,7 +1519,10 @@ fn test_release_dates() {      // Ok      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"title": "secret minimal paper",                  "release_type": "article-journal", @@ -1484,7 +1538,10 @@ fn test_release_dates() {      // Ok for now, but may be excluded later      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"title": "secret minimal paper",                  "release_type": "article-journal", @@ -1500,7 +1557,10 @@ fn test_release_dates() {      // Bad: year/month only      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"title": "secret minimal paper",                  "release_type": "article-journal", @@ -1515,7 +1575,10 @@ fn test_release_dates() {      // Bad: full timestamp      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"title": "secret minimal paper",                  "release_type": "article-journal", @@ -1530,7 +1593,10 @@ fn test_release_dates() {      // Bad: bogus month/day      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"title": "secret minimal paper",                  "release_type": "article-journal", @@ -1546,13 +1612,16 @@ fn test_release_dates() {  #[test]  fn test_release_types() {      let (headers, router, conn) = helpers::setup_http(); -    let editor_id = FatCatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); -    let editgroup_id = FatCatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap()); +    let editor_id = FatcatId::from_str(helpers::TEST_ADMIN_EDITOR_ID).unwrap(); +    let editgroup_id = FatcatId::from_uuid(&create_editgroup(&conn, editor_id.to_uuid()).unwrap());      // Ok      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"title": "secret minimal paper",                  "release_type": "article-journal" @@ -1566,7 +1635,10 @@ fn test_release_types() {      // Bad      helpers::check_http_response(          request::post( -            &format!("http://localhost:9411/v0/release?editgroup_id={}", editgroup_id), +            &format!( +                "http://localhost:9411/v0/release?editgroup_id={}", +                editgroup_id +            ),              headers.clone(),              r#"{"title": "secret minimal paper",                  "release_type": "journal-article" diff --git a/rust/tests/test_auth.rs b/rust/tests/test_auth.rs index d93051f2..c0d81753 100644 --- a/rust/tests/test_auth.rs +++ b/rust/tests/test_auth.rs @@ -1,5 +1,5 @@  use fatcat::auth::AuthConfectionary; -use fatcat::identifiers::FatCatId; +use fatcat::identifiers::FatcatId;  use fatcat::{auth, server};  use std::str::FromStr; @@ -8,7 +8,7 @@ fn test_macaroons() {      // Test everything we can without connecting to database      let c = AuthConfectionary::new_dummy(); -    let editor_id = FatCatId::from_str("q3nouwy3nnbsvo3h5klxsx4a7y").unwrap(); +    let editor_id = FatcatId::from_str("q3nouwy3nnbsvo3h5klxsx4a7y").unwrap();      // create token w/o expiration      c.create_token(editor_id, None).unwrap(); @@ -25,7 +25,7 @@ fn test_auth_db() {      let server = server::create_test_server().unwrap();      let conn = server.db_pool.get().expect("db_pool error");      let c = AuthConfectionary::new_dummy(); -    let editor_id = FatCatId::from_str("aaaaaaaaaaaabkvkaaaaaaaaae").unwrap(); +    let editor_id = FatcatId::from_str("aaaaaaaaaaaabkvkaaaaaaaaae").unwrap();      // create token      let token = c.create_token(editor_id, None).unwrap(); diff --git a/rust/tests/test_fcid.rs b/rust/tests/test_fcid.rs index 31f7030a..4feaa940 100644 --- a/rust/tests/test_fcid.rs +++ b/rust/tests/test_fcid.rs @@ -3,15 +3,15 @@ extern crate uuid;  // TODO: these should just be in-line in identifiers.rs -use fatcat::identifiers::{fcid2uuid, uuid2fcid, FatCatId}; +use fatcat::identifiers::{fcid2uuid, uuid2fcid, FatcatId};  use uuid::Uuid;  #[test]  fn test_fcid_conversions() {      let test_uuid = Uuid::parse_str("86daea5b-1b6b-432a-bb67-ea97795f80fe").unwrap(); -    let test_str  = "q3nouwy3nnbsvo3h5klxsx4a7y"; +    let test_str = "q3nouwy3nnbsvo3h5klxsx4a7y"; -    assert_eq!(test_str,  uuid2fcid(&test_uuid)); +    assert_eq!(test_str, uuid2fcid(&test_uuid));      assert_eq!(test_uuid, fcid2uuid(test_str).unwrap());      assert_eq!(test_uuid, fcid2uuid(&test_str.to_uppercase()).unwrap());      assert_eq!(test_uuid, fcid2uuid(&uuid2fcid(&test_uuid)).unwrap()); @@ -30,14 +30,14 @@ fn test_fcid_conversions() {  #[test]  fn test_fcid_struct() {      let test_uuid = Uuid::parse_str("86daea5b-1b6b-432a-bb67-ea97795f80fe").unwrap(); -    let test_str  = "q3nouwy3nnbsvo3h5klxsx4a7y"; -    let test_fcid = FatCatId::from_uuid(&test_uuid); +    let test_str = "q3nouwy3nnbsvo3h5klxsx4a7y"; +    let test_fcid = FatcatId::from_uuid(&test_uuid); -    assert_eq!(test_str,  test_fcid.to_string()); -    assert_eq!(test_str,  format!("{}", test_fcid)); +    assert_eq!(test_str, test_fcid.to_string()); +    assert_eq!(test_str, format!("{}", test_fcid));      assert_eq!(test_uuid, test_fcid.to_uuid());      // Inner UUID isn't public, so this doesn't work -    //let test_fcid2 = FatCatId(test_uuid); +    //let test_fcid2 = FatcatId(test_uuid);      //assert_eq!(test_fcid, test_fcid2);  }  | 
