diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/files/archive_passwd.zip | bin | 200 -> 1059 bytes | |||
| -rw-r--r-- | tests/zip.rs | 40 |
2 files changed, 32 insertions, 8 deletions
diff --git a/tests/files/archive_passwd.zip b/tests/files/archive_passwd.zip index 700a343..291bd12 100644 --- a/tests/files/archive_passwd.zip +++ b/tests/files/archive_passwd.zip | |||
| Binary files differ | |||
diff --git a/tests/zip.rs b/tests/zip.rs index 4f0c985..d02e96e 100644 --- a/tests/zip.rs +++ b/tests/zip.rs | |||
| @@ -4,15 +4,38 @@ use std::io::{Read, Seek, SeekFrom}; | |||
| 4 | #[test] | 4 | #[test] |
| 5 | fn test_zip_passwd() { | 5 | fn test_zip_passwd() { |
| 6 | let mut archive = Archive::<Zip>::read_from_file("tests/files/archive_passwd.zip").unwrap(); | 6 | let mut archive = Archive::<Zip>::read_from_file("tests/files/archive_passwd.zip").unwrap(); |
| 7 | let mut f = archive | 7 | |
| 8 | .get_file_reader_by_index_with_password(0, "passwd") | 8 | assert_eq!(archive.comment(), "archive comment"); |
| 9 | .unwrap(); | 9 | assert_eq!( |
| 10 | let mut data = String::new(); | 10 | archive |
| 11 | f.read_to_string(&mut data).unwrap(); | 11 | .files() |
| 12 | assert_eq!(data, "test file data"); | 12 | .iter() |
| 13 | .map(|f| &f.name) | ||
| 14 | .collect::<Vec<&String>>(), | ||
| 15 | vec!["store", "deflate", "bzip"] | ||
| 16 | ); | ||
| 17 | |||
| 18 | assert!(archive.get_file_reader_by_name("store").is_err()); | ||
| 19 | assert!(archive | ||
| 20 | .get_file_reader_by_name_with_password("store", b"wrong_passwd") | ||
| 21 | .is_err()); | ||
| 22 | |||
| 23 | for (name, check_data) in [ | ||
| 24 | ("store", "1e643774f40510e37c6f3c451d9d"), | ||
| 25 | ("deflate", "a70aff4b6b2754ad47852503236a"), | ||
| 26 | ("bzip", "f7085f4f8ecc512a8c2c3cbe8227"), | ||
| 27 | ] { | ||
| 28 | let mut f = archive | ||
| 29 | .get_file_reader_by_name_with_password(name, b"passwd") | ||
| 30 | .unwrap(); | ||
| 31 | let mut data = String::new(); | ||
| 32 | f.read_to_string(&mut data).unwrap(); | ||
| 33 | assert_eq!(&data[..24], "test encrypted file data"); | ||
| 34 | assert_eq!(&data[172..], check_data); | ||
| 35 | } | ||
| 13 | } | 36 | } |
| 14 | 37 | ||
| 15 | // #[test] | 38 | #[test] |
| 16 | fn test_zip() { | 39 | fn test_zip() { |
| 17 | let mut archive = Archive::<Zip>::read_from_file("tests/files/archive.zip").unwrap(); | 40 | let mut archive = Archive::<Zip>::read_from_file("tests/files/archive.zip").unwrap(); |
| 18 | 41 | ||
| @@ -54,7 +77,7 @@ fn test_zip() { | |||
| 54 | 77 | ||
| 55 | f.seek(SeekFrom::Start(7)).unwrap(); | 78 | f.seek(SeekFrom::Start(7)).unwrap(); |
| 56 | assert_eq!(f.seek(SeekFrom::Current(0)).unwrap(), 7); | 79 | assert_eq!(f.seek(SeekFrom::Current(0)).unwrap(), 7); |
| 57 | f.seek(SeekFrom::End(-100)).unwrap_err(); | 80 | assert!(f.seek(SeekFrom::End(-100)).is_err()); |
| 58 | assert_eq!(f.seek(SeekFrom::Current(0)).unwrap(), 7); | 81 | assert_eq!(f.seek(SeekFrom::Current(0)).unwrap(), 7); |
| 59 | 82 | ||
| 60 | assert_eq!(f.seek(SeekFrom::Start(100)).unwrap(), 14); | 83 | assert_eq!(f.seek(SeekFrom::Start(100)).unwrap(), 14); |
| @@ -64,5 +87,6 @@ fn test_zip() { | |||
| 64 | let mut data = String::new(); | 87 | let mut data = String::new(); |
| 65 | f.read_to_string(&mut data).unwrap(); | 88 | f.read_to_string(&mut data).unwrap(); |
| 66 | assert_eq!(data, "test file data"); | 89 | assert_eq!(data, "test file data"); |
| 90 | assert!(!f.is_seekable() || f.info().name == "store") | ||
| 67 | } | 91 | } |
| 68 | } | 92 | } |
