[wip] unit tests for file module
- testing for `Uploading`
This commit is contained in:
parent
aa76c7efda
commit
a5ecf19f70
1 changed files with 71 additions and 3 deletions
|
|
@ -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"));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue