[wip] unit tests for file module

- testing for `Uploading`
This commit is contained in:
Jörn-Michael Miehe 2025-07-15 15:00:11 +00:00
parent aa76c7efda
commit a5ecf19f70

View file

@ -145,7 +145,7 @@ mod tests {
sharry::{Client, json::NewShareRequest}, sharry::{Client, json::NewShareRequest},
test_util::{ test_util::{
MockClient, create_file, MockClient, create_file,
data::{DATA_LENGTHS_BAD, cases, cases_with}, data::{DATA_LENGTHS_BAD, cases, cases_with, data},
}, },
}; };
@ -248,13 +248,13 @@ mod tests {
#[test] #[test]
fn check_rewind_works() { fn check_rewind_works() {
let cases = cases() let data = cases()
// ignore "empty" testcase // ignore "empty" testcase
.filter(|&(_, size)| size > 0) .filter(|&(_, size)| size > 0)
// remove "size" // remove "size"
.map(|(content, _)| content); .map(|(content, _)| content);
for content in cases { for content in data {
let (mut upl, _share_id, _file) = create_uploading(content); let (mut upl, _share_id, _file) = create_uploading(content);
// read 1 byte and rewind // read 1 byte and rewind
@ -269,4 +269,72 @@ mod tests {
assert!(upl.rewind().is_none()); assert!(upl.rewind().is_none());
} }
} }
#[test]
fn upload_works() {
let client = MockClient::default();
let uri = sharry::Uri::from(true);
let alias_id = sharry::AliasID::from(true);
let share_id = client
.share_create(&uri, &alias_id, NewShareRequest::new("share", 0))
.unwrap();
let mut buf = vec![0; 1024 * 1024];
for content in data() {
let file = create_file(content);
let mut upl = Checked::new(file.path())
.unwrap()
.start_upload(&client, &uri, &alias_id, &share_id)
.unwrap();
while let Ok(chunk) = upl.read(&mut buf) {
assert!(
client
.file_patch(&uri, &alias_id, &share_id, &chunk)
.is_ok()
);
}
assert_eq!(upl.offset, upl.size);
}
}
#[test]
fn check_upload_bad_align() {
let data = cases()
// ignore "empty" testcase
.filter(|&(_, size)| size >= 2)
// remove "size"
.map(|(content, _)| content);
let client = MockClient::default();
let uri = sharry::Uri::from(true);
let alias_id = sharry::AliasID::from(true);
let share_id = client
.share_create(&uri, &alias_id, NewShareRequest::new("share", 0))
.unwrap();
// single-byte buffer to force bad chunk alignment
let mut buf = [0];
for content in data {
let file = create_file(content);
let mut upl = Checked::new(file.path())
.unwrap()
.start_upload(&client, &uri, &alias_id, &share_id)
.unwrap();
// first chunk works
client
.file_patch(&uri, &alias_id, &share_id, &upl.read(&mut buf).unwrap())
.unwrap();
// second chunk misaligned
let res = client.file_patch(&uri, &alias_id, &share_id, &upl.read(&mut buf).unwrap());
assert!(res.is_err());
assert!(res.unwrap_err().response_contains("not aligned to a MiB"));
}
}
} }