Move large test modules into separate files
This complies better with the Android Rust style guide, and makes it
easier to navigate the code.
Test: keystore2_test libwatchdog_rs.test librkpd_client.test
Change-Id: Iceb49e309af66ec16d31da66b328936b0312061a
diff --git a/keystore2/src/utils.rs b/keystore2/src/utils.rs
index 54f382d..22c0522 100644
--- a/keystore2/src/utils.rs
+++ b/keystore2/src/utils.rs
@@ -49,6 +49,9 @@
use keystore2_crypto::{aes_gcm_decrypt, aes_gcm_encrypt, ZVec};
use std::iter::IntoIterator;
+#[cfg(test)]
+mod tests;
+
/// Per RFC 5280 4.1.2.5, an undefined expiration (not-after) field should be set to GeneralizedTime
/// 999912312359559, which is 253402300799000 ms from Jan 1, 1970.
pub const UNDEFINED_NOT_AFTER: i64 = 253402300799000i64;
@@ -628,130 +631,3 @@
aes_gcm_encrypt(plaintext, self.key()).context(ks_err!("Encryption failed."))
}
}
-
-#[cfg(test)]
-mod tests {
- use super::*;
- use anyhow::Result;
-
- #[test]
- fn check_device_attestation_permissions_test() -> Result<()> {
- check_device_attestation_permissions().or_else(|error| {
- match error.root_cause().downcast_ref::<Error>() {
- // Expected: the context for this test might not be allowed to attest device IDs.
- Some(Error::Km(ErrorCode::CANNOT_ATTEST_IDS)) => Ok(()),
- // Other errors are unexpected
- _ => Err(error),
- }
- })
- }
-
- fn create_key_descriptors_from_aliases(key_aliases: &[&str]) -> Vec<KeyDescriptor> {
- key_aliases
- .iter()
- .map(|key_alias| KeyDescriptor {
- domain: Domain::APP,
- nspace: 0,
- alias: Some(key_alias.to_string()),
- blob: None,
- })
- .collect::<Vec<KeyDescriptor>>()
- }
-
- fn aliases_from_key_descriptors(key_descriptors: &[KeyDescriptor]) -> Vec<String> {
- key_descriptors
- .iter()
- .map(
- |kd| {
- if let Some(alias) = &kd.alias {
- String::from(alias)
- } else {
- String::from("")
- }
- },
- )
- .collect::<Vec<String>>()
- }
-
- #[test]
- fn test_safe_amount_to_return() -> Result<()> {
- let key_aliases = vec!["key1", "key2", "key3"];
- let key_descriptors = create_key_descriptors_from_aliases(&key_aliases);
-
- assert_eq!(estimate_safe_amount_to_return(Domain::APP, 1017, &key_descriptors, 20), 1);
- assert_eq!(estimate_safe_amount_to_return(Domain::APP, 1017, &key_descriptors, 50), 2);
- assert_eq!(estimate_safe_amount_to_return(Domain::APP, 1017, &key_descriptors, 100), 3);
- Ok(())
- }
-
- #[test]
- fn test_merge_and_sort_lists_without_filtering() -> Result<()> {
- let legacy_key_aliases = vec!["key_c", "key_a", "key_b"];
- let legacy_key_descriptors = create_key_descriptors_from_aliases(&legacy_key_aliases);
- let db_key_aliases = vec!["key_a", "key_d"];
- let db_key_descriptors = create_key_descriptors_from_aliases(&db_key_aliases);
- let result =
- merge_and_filter_key_entry_lists(&legacy_key_descriptors, &db_key_descriptors, None);
- assert_eq!(aliases_from_key_descriptors(&result), vec!["key_a", "key_b", "key_c", "key_d"]);
- Ok(())
- }
-
- #[test]
- fn test_merge_and_sort_lists_with_filtering() -> Result<()> {
- let legacy_key_aliases = vec!["key_f", "key_a", "key_e", "key_b"];
- let legacy_key_descriptors = create_key_descriptors_from_aliases(&legacy_key_aliases);
- let db_key_aliases = vec!["key_c", "key_g"];
- let db_key_descriptors = create_key_descriptors_from_aliases(&db_key_aliases);
- let result = merge_and_filter_key_entry_lists(
- &legacy_key_descriptors,
- &db_key_descriptors,
- Some("key_b"),
- );
- assert_eq!(aliases_from_key_descriptors(&result), vec!["key_c", "key_e", "key_f", "key_g"]);
- Ok(())
- }
-
- #[test]
- fn test_merge_and_sort_lists_with_filtering_and_dups() -> Result<()> {
- let legacy_key_aliases = vec!["key_f", "key_a", "key_e", "key_b"];
- let legacy_key_descriptors = create_key_descriptors_from_aliases(&legacy_key_aliases);
- let db_key_aliases = vec!["key_d", "key_e", "key_g"];
- let db_key_descriptors = create_key_descriptors_from_aliases(&db_key_aliases);
- let result = merge_and_filter_key_entry_lists(
- &legacy_key_descriptors,
- &db_key_descriptors,
- Some("key_c"),
- );
- assert_eq!(aliases_from_key_descriptors(&result), vec!["key_d", "key_e", "key_f", "key_g"]);
- Ok(())
- }
-
- #[test]
- fn test_list_key_parameters_with_filter_on_security_sensitive_info() -> Result<()> {
- let params = vec![
- KmKeyParameter { tag: Tag::APPLICATION_ID, value: KeyParameterValue::Integer(0) },
- KmKeyParameter { tag: Tag::APPLICATION_DATA, value: KeyParameterValue::Integer(0) },
- KmKeyParameter {
- tag: Tag::CERTIFICATE_NOT_AFTER,
- value: KeyParameterValue::DateTime(UNDEFINED_NOT_AFTER),
- },
- KmKeyParameter {
- tag: Tag::CERTIFICATE_NOT_BEFORE,
- value: KeyParameterValue::DateTime(0),
- },
- ];
- let wanted = vec![
- KmKeyParameter {
- tag: Tag::CERTIFICATE_NOT_AFTER,
- value: KeyParameterValue::DateTime(UNDEFINED_NOT_AFTER),
- },
- KmKeyParameter {
- tag: Tag::CERTIFICATE_NOT_BEFORE,
- value: KeyParameterValue::DateTime(0),
- },
- ];
-
- assert_eq!(log_security_safe_params(¶ms), wanted);
- Ok(())
- }
-}