Skip to content

Commit 11e896e

Browse files
committed
controllers::krate::publish: Add test for verify_tarball
1 parent dba9aab commit 11e896e

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

src/admin/render_readmes.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -262,13 +262,13 @@ fn find_file_by_path<R: Read>(
262262
}
263263

264264
#[cfg(test)]
265-
mod tests {
265+
pub mod tests {
266266
use std::io::Write;
267267
use tar;
268268

269269
use super::render_pkg_readme;
270270

271-
fn add_file<W: Write>(pkg: &mut tar::Builder<W>, path: &str, content: &[u8]) {
271+
pub fn add_file<W: Write>(pkg: &mut tar::Builder<W>, path: &str, content: &[u8]) {
272272
let mut header = tar::Header::new_gnu();
273273
header.set_size(content.len() as u64);
274274
header.set_cksum();

src/controllers/krate/publish.rs

+16-1
Original file line numberDiff line numberDiff line change
@@ -405,12 +405,27 @@ fn verify_tarball(pkg_name: &str, tarball: &[u8], max_unpack: u64) -> AppResult<
405405

406406
#[cfg(test)]
407407
mod tests {
408-
use super::missing_metadata_error_message;
408+
use super::{missing_metadata_error_message, verify_tarball};
409+
use crate::admin::render_readmes::tests::add_file;
410+
use flate2::read::GzEncoder;
411+
use std::io::Read;
409412

410413
#[test]
411414
fn missing_metadata_error_message_test() {
412415
assert_eq!(missing_metadata_error_message(&["a"]), "missing or empty metadata fields: a. Please see https://doc.rust-lang.org/cargo/reference/manifest.html for how to upload metadata");
413416
assert_eq!(missing_metadata_error_message(&["a", "b"]), "missing or empty metadata fields: a, b. Please see https://doc.rust-lang.org/cargo/reference/manifest.html for how to upload metadata");
414417
assert_eq!(missing_metadata_error_message(&["a", "b", "c"]), "missing or empty metadata fields: a, b, c. Please see https://doc.rust-lang.org/cargo/reference/manifest.html for how to upload metadata");
415418
}
419+
420+
#[test]
421+
fn verify_tarball_test() {
422+
let mut pkg = tar::Builder::new(vec![]);
423+
add_file(&mut pkg, "foo-0.0.1/.cargo_vcs_info.json", br#"{}"#);
424+
let mut serialized_archive = vec![];
425+
GzEncoder::new(pkg.into_inner().unwrap().as_slice(), Default::default())
426+
.read_to_end(&mut serialized_archive)
427+
.unwrap();
428+
verify_tarball("foo-0.0.1", &serialized_archive, 512 * 1024 * 1024).unwrap();
429+
verify_tarball("bar-0.0.1", &serialized_archive, 512 * 1024 * 1024).unwrap_err();
430+
}
416431
}

0 commit comments

Comments
 (0)