From 5abab26488ae32c7844a66d5ba316c42605e4808 Mon Sep 17 00:00:00 2001 From: sug Date: Thu, 30 Jan 2025 15:31:54 +0100 Subject: [PATCH] change Github rust workflow to run on project root --- .github/workflows/tuta-sdk-test.yml | 5 +- packages/node-mimimi/Cargo.toml | 5 +- packages/node-mimimi/src/importer.rs | 3 +- .../node-mimimi/src/importer/file_reader.rs | 2 + .../src/importer/importable_mail.rs | 4 +- .../mime_string_to_importable_mail_test.rs | 20 ++++---- packages/node-mimimi/src/importer/messages.rs | 4 ++ packages/node-mimimi/src/importer_api.rs | 2 +- tuta-sdk/rust/sdk/Cargo.toml | 2 + tuta-sdk/rust/sdk/src/blobs/blob_facade.rs | 46 ++++++++----------- tuta-sdk/rust/sdk/src/crypto/crypto_facade.rs | 14 ++---- .../rust/sdk/src/entities/entity_facade.rs | 5 +- tuta-sdk/rust/uniffi-bindgen/Cargo.toml | 3 ++ 13 files changed, 57 insertions(+), 58 deletions(-) diff --git a/.github/workflows/tuta-sdk-test.yml b/.github/workflows/tuta-sdk-test.yml index 8fb6dc6f7cd1..439895002003 100644 --- a/.github/workflows/tuta-sdk-test.yml +++ b/.github/workflows/tuta-sdk-test.yml @@ -36,11 +36,8 @@ jobs: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 #v4.1.1 - uses: ./.github/shared/setup-rust - name: sdk format - working-directory: tuta-sdk/rust run: cargo fmt --check - name: sdk warning check with clippy - working-directory: tuta-sdk/rust - run: cargo clippy --package tuta-sdk --no-deps -- -Dwarnings # -Dwarnings changes warnings to errors so that the check fails + run: cargo clippy --no-deps -- -Dwarnings # -Dwarnings changes warnings to errors so that the check fails - name: sdk tests - working-directory: tuta-sdk/rust run: cargo test diff --git a/packages/node-mimimi/Cargo.toml b/packages/node-mimimi/Cargo.toml index 2e52cee5820f..f547ab4a4314 100644 --- a/packages/node-mimimi/Cargo.toml +++ b/packages/node-mimimi/Cargo.toml @@ -33,4 +33,7 @@ tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } serde_json = { workspace = true } serde = { workspace = true } tuta-sdk = { path = "../../tuta-sdk/rust/sdk", features = ["net", "testing"] } -mail-builder = { version = "0.4.0" } \ No newline at end of file +mail-builder = { version = "0.4.0" } + +[lints] +workspace = true \ No newline at end of file diff --git a/packages/node-mimimi/src/importer.rs b/packages/node-mimimi/src/importer.rs index de9a2fd6e520..73a089045559 100644 --- a/packages/node-mimimi/src/importer.rs +++ b/packages/node-mimimi/src/importer.rs @@ -278,7 +278,7 @@ impl ImportEssential { Ok(unit_import_results) } - async fn make_serialized_chunk( + fn make_serialized_chunk( &self, importable_chunk: Vec, ) -> Result { @@ -636,7 +636,6 @@ impl Importer { .inspect_err(|_e| failed_count += import_count_in_this_chunk)?; let importable_post_data = import_essentials .make_serialized_chunk(unit_import_data) - .await .inspect_err(|_e| failed_count += import_count_in_this_chunk)?; import_essentials diff --git a/packages/node-mimimi/src/importer/file_reader.rs b/packages/node-mimimi/src/importer/file_reader.rs index c8acfc50cf76..6c2884fa96b8 100644 --- a/packages/node-mimimi/src/importer/file_reader.rs +++ b/packages/node-mimimi/src/importer/file_reader.rs @@ -32,6 +32,7 @@ impl FileImport { } impl FileImport { + #[must_use] pub fn new(eml_sources: Vec) -> Self { let message_parser = MessageParser::default(); Self { @@ -172,6 +173,7 @@ impl FileImport { fs::remove_file(import_dir.join(STATE_ID_FILE_NAME)) } + #[must_use] pub fn make_import_directory_path(config_directory: &str, mailbox_id: &str) -> PathBuf { [ config_directory.to_string(), diff --git a/packages/node-mimimi/src/importer/importable_mail.rs b/packages/node-mimimi/src/importer/importable_mail.rs index 80b45d5d45b7..35d9d8a2dfa7 100644 --- a/packages/node-mimimi/src/importer/importable_mail.rs +++ b/packages/node-mimimi/src/importer/importable_mail.rs @@ -81,6 +81,7 @@ pub struct KeyedImportableMailAttachment { } impl ImportableMailAttachment { + #[must_use] pub fn make_keyed_importable_mail_attachment( self, essentials: &ImportEssential, @@ -96,6 +97,7 @@ impl ImportableMailAttachment { } impl ImportableMailAttachmentMetaData { + #[must_use] pub fn make_import_attachment_data( self, essentials: &ImportEssential, @@ -315,7 +317,7 @@ impl ImportableMail { .unwrap_or_else(|| Self::default_content_type().make_string().into_owned()) .to_string(); - let content = content.to_vec(); + let content = content.clone(); let attachment = ImportableMailAttachment { meta_data: ImportableMailAttachmentMetaData { filename, diff --git a/packages/node-mimimi/src/importer/importable_mail/mime_string_to_importable_mail_test.rs b/packages/node-mimimi/src/importer/importable_mail/mime_string_to_importable_mail_test.rs index 6e9b5ad3a877..3e91aec2afd0 100644 --- a/packages/node-mimimi/src/importer/importable_mail/mime_string_to_importable_mail_test.rs +++ b/packages/node-mimimi/src/importer/importable_mail/mime_string_to_importable_mail_test.rs @@ -461,7 +461,7 @@ Hello äöüß assert_eq!(m.attachments.len(), 1); let attachment = &m.attachments[0]; let attached = parse_mail( - String::from_utf8(attachment.content.to_vec()) + String::from_utf8(attachment.content.clone()) .unwrap() .as_str(), ); @@ -516,21 +516,21 @@ c2Vjb25kIGF0dGFjaG1lbnQ= assert_eq!("a1.txt", a1.meta_data.filename); assert_eq!( String::from_utf8(base64_decode(b"Zmlyc3QgYXR0YWNobWVudA==").unwrap()).unwrap(), - String::from_utf8(a1.content.to_vec()).unwrap() + String::from_utf8(a1.content.clone()).unwrap() ); assert_eq!("application/octet-stream", a1.meta_data.content_type); assert_eq!("a2.pdf", a2.meta_data.filename); assert_eq!( String::from_utf8(base64_decode(b"c2Vjb25kIGF0dGFjaG1lbnQ=").unwrap()).unwrap(), - String::from_utf8(a2.content.to_vec()).unwrap() + String::from_utf8(a2.content.clone()).unwrap() ); assert_eq!("application/pdf", a2.meta_data.content_type); assert_eq!("withoutContentType.pdf", a3.meta_data.filename); assert_eq!( String::from_utf8(base64_decode(b"c2Vjb25kIGF0dGFjaG1lbnQ=").unwrap()).unwrap(), - String::from_utf8(a3.content.to_vec()).unwrap() + String::from_utf8(a3.content.clone()).unwrap() ); assert_eq!( r#"text/plain;charset="us-ascii""#, @@ -567,7 +567,7 @@ Zmlyc3QgYXR0YWNobWVudA== assert_eq!("a1.png", a1.meta_data.filename); assert_eq!( String::from_utf8(base64_decode(b"Zmlyc3QgYXR0YWNobWVudA==").unwrap()).unwrap(), - String::from_utf8(a1.content.to_vec()).unwrap() + String::from_utf8(a1.content.clone()).unwrap() ); assert_eq!("application/octet-stream", a1.meta_data.content_type); assert_eq!(Some("123@tutanota.de".to_string()), a1.meta_data.content_id); @@ -617,7 +617,7 @@ Zmlyc3QgYXR0YWNobWVudA== ); assert_eq!( String::from_utf8(base64_decode(b"Zmlyc3QgYXR0YWNobWVudA==").unwrap()).unwrap(), - String::from_utf8(indirect_attachment.content.to_vec()).unwrap() + String::from_utf8(indirect_attachment.content.clone()).unwrap() ); } @@ -685,7 +685,7 @@ Content-Disposition: attachment; filename=a1.html; let a1 = &m.attachments[0]; assert_eq!(a1.meta_data.filename, "a1.html"); assert_eq!( - String::from_utf8(a1.content.to_vec()).unwrap(), + String::from_utf8(a1.content.clone()).unwrap(), "Hello äöüß
" ); } @@ -839,7 +839,7 @@ Abc, die Katze lief im Schnee ! äöü?ß ! "#; let a1 = &m.attachments[0]; assert_eq!(a1.meta_data.filename, "a1.txt"); assert_eq!( - String::from_utf8(a1.content.to_vec()).unwrap(), + String::from_utf8(a1.content.clone()).unwrap(), "Abc, die Katze lief im Schnee ! äöü?ß ! " ); } @@ -887,7 +887,7 @@ Zmlyc3QgYXR0YWNobWVudA=="#; ); assert_eq!( String::from_utf8(base64_decode(b"Zmlyc3QgYXR0YWNobWVudA==").unwrap()).unwrap(), - String::from_utf8(indirect_attachment.content.to_vec()).unwrap() + String::from_utf8(indirect_attachment.content.clone()).unwrap() ); } @@ -912,7 +912,7 @@ Zmlyc3QgYXR0YWNobWVudA=="#; assert_eq!("äö߀.txt", indirect_attachment.meta_data.filename); assert_eq!( String::from_utf8(base64_decode(b"Zmlyc3QgYXR0YWNobWVudA==").unwrap()).unwrap(), - String::from_utf8(indirect_attachment.content.to_vec()).unwrap() + String::from_utf8(indirect_attachment.content.clone()).unwrap() ); } diff --git a/packages/node-mimimi/src/importer/messages.rs b/packages/node-mimimi/src/importer/messages.rs index 177b2dccf00f..ddf6422441dc 100644 --- a/packages/node-mimimi/src/importer/messages.rs +++ b/packages/node-mimimi/src/importer/messages.rs @@ -172,6 +172,7 @@ impl ImportErrorKind { } impl MailImportErrorMessage { + #[must_use] pub fn sdk(action: &'static str, error: ApiCallError) -> Self { log::error!("ImportError::SdkError: {action} ({error})"); @@ -184,6 +185,7 @@ impl MailImportErrorMessage { Self { kind, path: None } } + #[must_use] pub fn with_path(kind: ImportErrorKind, path: PathBuf) -> Self { Self { kind, @@ -199,6 +201,7 @@ impl From for MailImportErrorMessage { } impl MailImportMessage { + #[must_use] pub fn ok(ok_message: ImportOkKind) -> Self { Self { ok_message: Some(ok_message), @@ -206,6 +209,7 @@ impl MailImportMessage { } } + #[must_use] pub fn err(err_message: MailImportErrorMessage) -> Self { Self { ok_message: None, diff --git a/packages/node-mimimi/src/importer_api.rs b/packages/node-mimimi/src/importer_api.rs index 9b85a0882e6b..68f255f5f706 100644 --- a/packages/node-mimimi/src/importer_api.rs +++ b/packages/node-mimimi/src/importer_api.rs @@ -298,7 +298,7 @@ impl From for Credentials { login: tuta_credentials.login, user_id: GeneratedId(tuta_credentials.user_id), access_token: tuta_credentials.access_token, - encrypted_passphrase_key: tuta_credentials.encrypted_passphrase_key.clone().to_vec(), + encrypted_passphrase_key: tuta_credentials.encrypted_passphrase_key.clone().clone(), credential_type, } } diff --git a/tuta-sdk/rust/sdk/Cargo.toml b/tuta-sdk/rust/sdk/Cargo.toml index 5a2269d3ab30..a6a30a661b0b 100644 --- a/tuta-sdk/rust/sdk/Cargo.toml +++ b/tuta-sdk/rust/sdk/Cargo.toml @@ -80,3 +80,5 @@ mockall = { version = "0.13.0" } mockall_double = { version = "0.3.1" } rand = { workspace = true } +[lints] +workspace = true \ No newline at end of file diff --git a/tuta-sdk/rust/sdk/src/blobs/blob_facade.rs b/tuta-sdk/rust/sdk/src/blobs/blob_facade.rs index bde132da1ec3..de5ca26fa9aa 100644 --- a/tuta-sdk/rust/sdk/src/blobs/blob_facade.rs +++ b/tuta-sdk/rust/sdk/src/blobs/blob_facade.rs @@ -571,7 +571,7 @@ mod tests { } fn make_blob_service_response( - expected_reference_tokens: &Vec, + expected_reference_tokens: Vec, type_model_provider: &Arc, ) -> Vec { let blob_service_response = BlobPostOut { @@ -664,7 +664,7 @@ mod tests { let type_model_provider = Arc::new(init_type_model_provider()); let response_binary = - make_blob_service_response(&expected_reference_tokens, &type_model_provider); + make_blob_service_response(expected_reference_tokens, &type_model_provider); let mut rest_client = MockRestClient::default(); rest_client @@ -703,19 +703,19 @@ mod tests { .unwrap(); assert_eq!( vec![first_attachment_token], - reference_tokens.get(0).unwrap().to_vec() + reference_tokens.first().unwrap().clone() ); assert_eq!( vec![second_attachment_token], - reference_tokens.get(1).unwrap().to_vec() + reference_tokens.get(1).unwrap().clone() ); assert_eq!( vec![third_attachment_token], - reference_tokens.get(2).unwrap().to_vec() + reference_tokens.get(2).unwrap().clone() ); assert_eq!( vec![fourth_attachment_token], - reference_tokens.get(3).unwrap().to_vec() + reference_tokens.get(3).unwrap().clone() ); } @@ -732,7 +732,7 @@ mod tests { let first_attachment: Vec = vec![0; 12 * 1024 * 1024]; let second_attachment: Vec = vec![0; 2 * 1024 * 1024]; let third_attachment: Vec = vec![0; 2 * 1024 * 1024]; - let fourth_attachment: Vec = vec![0; 1 * 1024 * 1024]; + let fourth_attachment: Vec = vec![0; 1024 * 1024]; let randomizer_facade1 = RandomizerFacade::from_core(DeterministicRng(1)); let randomizer_facade2 = RandomizerFacade::from_core(DeterministicRng(2)); @@ -793,9 +793,9 @@ mod tests { let type_model_provider = Arc::new(init_type_model_provider()); let binary1: Vec = - make_blob_service_response(&expected_reference_tokens1, &type_model_provider); + make_blob_service_response(expected_reference_tokens1, &type_model_provider); let binary2: Vec = - make_blob_service_response(&expected_reference_tokens2, &type_model_provider); + make_blob_service_response(expected_reference_tokens2, &type_model_provider); let mut rest_client = MockRestClient::default(); // first request @@ -809,11 +809,7 @@ mod tests { let RestClientOptions { body, .. } = options; let body = body.clone().unwrap(); let new_blob_wrappers = deserialize_new_blobs(body).unwrap(); - if new_blob_wrappers.len() == 1 { - true - } else { - false - } + new_blob_wrappers.len() == 1 }) .return_const(Ok(RestResponse { status: 200, @@ -832,11 +828,7 @@ mod tests { let RestClientOptions { body, .. } = options; let body = body.clone().unwrap(); let new_blob_wrappers = deserialize_new_blobs(body).unwrap(); - if new_blob_wrappers.len() == 4 { - true - } else { - false - } + new_blob_wrappers.len() == 4 }) .return_const(Ok(RestResponse { status: 200, @@ -860,19 +852,19 @@ mod tests { .unwrap(); assert_eq!( vec![first_attachment_first_token, first_attachment_second_token], - reference_tokens.get(0).unwrap().to_vec() + reference_tokens.first().unwrap().clone() ); assert_eq!( vec![second_attachment_token,], - reference_tokens.get(1).unwrap().to_vec() + reference_tokens.get(1).unwrap().clone() ); assert_eq!( vec![third_attachment_token,], - reference_tokens.get(2).unwrap().to_vec() + reference_tokens.get(2).unwrap().clone() ); assert_eq!( vec![fourth_attachment_token,], - reference_tokens.get(3).unwrap().to_vec() + reference_tokens.get(3).unwrap().clone() ); } @@ -940,13 +932,13 @@ mod tests { let type_model_provider = Arc::new(init_type_model_provider()); let binary1: Vec = - make_blob_service_response(&expected_reference_tokens1, &type_model_provider); + make_blob_service_response(expected_reference_tokens1, &type_model_provider); let binary2: Vec = - make_blob_service_response(&expected_reference_tokens2, &type_model_provider); + make_blob_service_response(expected_reference_tokens2, &type_model_provider); let binary3: Vec = - make_blob_service_response(&expected_reference_tokens3, &type_model_provider); + make_blob_service_response(expected_reference_tokens3, &type_model_provider); let binary4: Vec = - make_blob_service_response(&expected_reference_tokens4, &type_model_provider); + make_blob_service_response(expected_reference_tokens4, &type_model_provider); let mut rest_client = MockRestClient::default(); diff --git a/tuta-sdk/rust/sdk/src/crypto/crypto_facade.rs b/tuta-sdk/rust/sdk/src/crypto/crypto_facade.rs index 0ffa719d5017..d8f096a82b15 100644 --- a/tuta-sdk/rust/sdk/src/crypto/crypto_facade.rs +++ b/tuta-sdk/rust/sdk/src/crypto/crypto_facade.rs @@ -330,7 +330,7 @@ mod test { let sender_keypair = EccKeyPair::generate(&randomizer_facade); let protocol_version = CryptoProtocolVersion::TutaCrypt; - let mut raw_mail = make_raw_mail( + let raw_mail = make_raw_mail( &constants, constants.pub_enc_bucket_key.clone(), protocol_version.clone() as i64, @@ -362,7 +362,7 @@ mod test { ); let key = crypto_facade - .resolve_session_key(&mut raw_mail, &mail_type_model) + .resolve_session_key(&raw_mail, &mail_type_model) .await .expect("should not have errored") .expect("where is the key"); @@ -379,7 +379,7 @@ mod test { let constants = BucketKeyConstants::new(&randomizer_facade); let crypto_protocol_version = CryptoProtocolVersion::Rsa; - let mut raw_mail = make_raw_mail( + let raw_mail = make_raw_mail( &constants, constants.pub_enc_bucket_key.clone(), crypto_protocol_version.clone() as i64, @@ -410,7 +410,7 @@ mod test { let mail_type_model = get_mail_type_model(); let key = crypto_facade - .resolve_session_key(&mut raw_mail, &mail_type_model) + .resolve_session_key(&raw_mail, &mail_type_model) .await .expect("should not have errored") .expect("where is the key"); @@ -522,11 +522,7 @@ mod test { }) .once(); - let asymmetric_crypto_facade = if let Some(asymmetric_crypto) = asymmetric_crypto_facade { - asymmetric_crypto - } else { - MockAsymmetricCryptoFacade::default() - }; + let asymmetric_crypto_facade = asymmetric_crypto_facade.unwrap_or_default(); CryptoFacade { key_loader_facade: Arc::new(key_loader), diff --git a/tuta-sdk/rust/sdk/src/entities/entity_facade.rs b/tuta-sdk/rust/sdk/src/entities/entity_facade.rs index 629cd0c6fbd2..07130d7ce178 100644 --- a/tuta-sdk/rust/sdk/src/entities/entity_facade.rs +++ b/tuta-sdk/rust/sdk/src/entities/entity_facade.rs @@ -1197,7 +1197,6 @@ mod tests { .assert_dict_mut_ref() .insert(String::from(ID_FIELD), expected_aggregate_id.clone()); } - let encrypted_mail = encrypted_mail; let mut decrypted_mail = entity_facade .decrypt_and_map( @@ -1320,7 +1319,7 @@ mod tests { let encrypted_subject = encrypted_mail.get("subject").unwrap(); let subject_and_iv = sk - .decrypt_data_and_iv(&encrypted_subject.assert_bytes()) + .decrypt_data_and_iv(encrypted_subject.assert_bytes()) .unwrap(); assert_eq!( @@ -1337,7 +1336,7 @@ mod tests { .get("name") .unwrap() .assert_bytes() - .to_vec(); + .clone(); let recipient_and_iv = sk.decrypt_data_and_iv(&encrypted_recipient_name).unwrap(); assert_eq!(original_iv.get_inner().to_vec(), recipient_and_iv.iv) } diff --git a/tuta-sdk/rust/uniffi-bindgen/Cargo.toml b/tuta-sdk/rust/uniffi-bindgen/Cargo.toml index ba994b56fe6e..b81fe10c6523 100644 --- a/tuta-sdk/rust/uniffi-bindgen/Cargo.toml +++ b/tuta-sdk/rust/uniffi-bindgen/Cargo.toml @@ -8,3 +8,6 @@ homepage.workspace = true [dependencies] uniffi = { workspace = true, features = ["cli"] } + +[lints] +workspace = true \ No newline at end of file