chiark / gitweb /
bundles: Check that download link works
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 3 May 2021 22:02:09 +0000 (23:02 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 4 May 2021 11:28:49 +0000 (12:28 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
apitest/apitest.rs
wdriver/wdt-bundles.rs

index a71c24c0e37010a4d424ee78d60f55db9e535dfa..e16d879a7a6c6f3b6413beb0b842a8b57e801d11 100644 (file)
@@ -19,6 +19,7 @@ pub use std::cell::{RefCell, RefMut};
 pub use num_traits::NumCast;
 pub use serde_json::json;
 pub use structopt::StructOpt;
+pub use reqwest;
 
 pub type JsV = serde_json::Value;
 pub type MC = MgmtCommand;
index 48503561247b94e0f8d312d018ab82a1a12d1f46..9c4a0a366ae68b1ccec0de166eb08128d71e19f1 100644 (file)
@@ -23,6 +23,10 @@ fn tests(UsualSetup { su, alice, ..}: UsualSetup) {
 
   test!(c, "bundle", {
     let test_bundle = c.su.ds.example_bundle();
+    let hash_exp = bundles::DigestWrite::of(
+      &mut File::open(&test_bundle).unwrap()
+    )?;
+
     c.otter(&["upload-bundle"],&[&test_bundle])?;
     let mut w = c.su.w(&c.alice)?;
 
@@ -32,6 +36,17 @@ fn tests(UsualSetup { su, alice, ..}: UsualSetup) {
       let bundle_id = bundle_link.find_element(By::ClassName("b_id"))?;
       let html = bundle_id.inner_html()?;
       assert_eq!(&html, "00000.zip");
+
+      let download = dbgc!(bundle_link.get_attribute("href")?).unwrap();
+      let client = reqwest::blocking::Client::new();
+      let download = Url::parse(&w.current_url()?)?.join(&download)?;
+      let mut resp = client.get(download).send()?;
+      let st = resp.status();
+      assert!(st.is_success(), "{:?}", &st);
+      let mut digester = bundles::DigestWrite::sink();
+      resp.copy_to(&mut digester)?;
+      let got = digester.finish().0;
+      assert_eq!(got, hash_exp);
     });
 
     check(&mut w)?;