Skip to content

Commit 77979d3

Browse files
committed
controllers::krate::publish: Add test for verify_tarball
1 parent 4b24c53 commit 77979d3

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

src/admin/render_readmes.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -265,13 +265,13 @@ fn render_pkg_readme<R: Read>(mut pkg: Archive<R>, pkg_name: &str) -> Option<Str
265265
}
266266

267267
#[cfg(test)]
268-
mod tests {
268+
pub mod tests {
269269
use std::io::Write;
270270
use tar;
271271

272272
use super::render_pkg_readme;
273273

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

src/controllers/krate/publish.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,12 +407,27 @@ fn verify_tarball(pkg_name: &str, tarball: &[u8], max_unpack: u64) -> AppResult<
407407

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

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

0 commit comments

Comments
 (0)