Skip to content

Commit 893813a

Browse files
committed
controllers::krate::publish: Add test for verify_tarball
1 parent 13d6ccc commit 893813a

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
@@ -266,13 +266,13 @@ fn find_file_by_path<R: Read>(
266266
}
267267

268268
#[cfg(test)]
269-
mod tests {
269+
pub mod tests {
270270
use std::io::Write;
271271
use tar;
272272

273273
use super::render_pkg_readme;
274274

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

src/controllers/krate/publish.rs

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

409409
#[cfg(test)]
410410
mod tests {
411-
use super::missing_metadata_error_message;
411+
use super::{missing_metadata_error_message, verify_tarball};
412+
use crate::admin::render_readmes::tests::add_file;
413+
use flate2::read::GzEncoder;
414+
use std::io::Read;
412415

413416
#[test]
414417
fn missing_metadata_error_message_test() {
415418
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");
416419
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");
417420
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");
418421
}
422+
423+
#[test]
424+
fn verify_tarball_test() {
425+
let mut pkg = tar::Builder::new(vec![]);
426+
add_file(&mut pkg, "foo-0.0.1/.cargo_vcs_info.json", br#"{}"#);
427+
let mut serialized_archive = vec![];
428+
GzEncoder::new(pkg.into_inner().unwrap().as_slice(), Default::default())
429+
.read_to_end(&mut serialized_archive)
430+
.unwrap();
431+
verify_tarball("foo-0.0.1", &serialized_archive, 512 * 1024 * 1024).unwrap();
432+
verify_tarball("bar-0.0.1", &serialized_archive, 512 * 1024 * 1024).unwrap_err();
433+
}
419434
}

0 commit comments

Comments
 (0)