diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4ccc9e2..17088f2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,6 @@ jobs: if: matrix.msrv run: | cargo update -p idna_adapter --precise 1.1.0 # This has us use `unicode-normalization` which has a more conservative MSRV - cargo update -p proptest --precise "1.8.0" --verbose # proptest 1.9.0 requires rustc 1.82.0 - name: Build on Rust ${{ matrix.toolchain }} run: cargo build --verbose --color always - name: Check formatting diff --git a/Cargo.toml b/Cargo.toml index c2c2d48..99bbde0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,6 @@ reqwest = { version = "0.12", default-features = false, features = ["rustls-tls [dev-dependencies] mockito = "0.28.0" -proptest = "1.1.0" tokio = { version = "1.22.0", features = ["macros"]} [lints.rust.unexpected_cfgs] diff --git a/src/util/key_obfuscator.rs b/src/util/key_obfuscator.rs index 320d368..c096e3d 100644 --- a/src/util/key_obfuscator.rs +++ b/src/util/key_obfuscator.rs @@ -194,11 +194,22 @@ mod tests { assert_eq!(deobfuscated_key, "my_storage_key_v031_compat"); } - use proptest::prelude::*; + #[test] + fn obfuscate_deobfuscate_randomized() { + use rand::Rng; + + let charset = + b"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_!@#,;:% *$^&()[]{}.\t\n\r"; + let mut rng = rand::thread_rng(); + + for _ in 0..100 { + let mut obfuscation_master_key = [0u8; 32]; + rng.fill(&mut obfuscation_master_key); + + let key_len: usize = rng.gen_range(0..128); + let expected_key: String = + (0..key_len).map(|_| charset[rng.gen_range(0..charset.len())] as char).collect(); - proptest! { - #[test] - fn obfuscate_deobfuscate_proptest(expected_key in "[a-zA-Z0-9_!@#,;:%\\s\\*\\$\\^&\\(\\)\\[\\]\\{\\}\\.]*", obfuscation_master_key in any::<[u8; 32]>()) { let key_obfuscator = KeyObfuscator::new(obfuscation_master_key); let obfuscated_key = key_obfuscator.obfuscate(&expected_key); let actual_key = key_obfuscator.deobfuscate(obfuscated_key.as_str()).unwrap();