diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4555f8e..298d613 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -75,7 +75,7 @@ jobs: uses: actions-rs/cargo@v1 with: command: clippy - args: --verbose -- -D warnings + args: --tests --verbose -- -D warnings rustfmt: name: Formatting diff --git a/src/file.rs b/src/file.rs index 398573a..0d45b19 100644 --- a/src/file.rs +++ b/src/file.rs @@ -55,21 +55,21 @@ impl Directory { #[cfg(test)] mod tests { use super::*; + use std::ffi::OsString; #[test] fn test_file_checksum() -> Result<(), ActixError> { assert_eq!( - "rustypaste_logo.png", + Some(OsString::from("rustypaste_logo.png").as_ref()), Directory::try_from( PathBuf::from(env!("CARGO_MANIFEST_DIR")) .join("img") .as_path() )? .get_file("2073f6f567dcba3b468c568d29cf8ed2e9d3f0f7305b9ab1b5a22861f5922e61") - .unwrap() + .expect("cannot get file with checksum") .path .file_name() - .unwrap() ); Ok(()) } diff --git a/src/header.rs b/src/header.rs index d0f1eaa..6277dbd 100644 --- a/src/header.rs +++ b/src/header.rs @@ -97,7 +97,7 @@ mod tests { HeaderName::from_static(EXPIRE), HeaderValue::from_static("5ms"), ); - let expiry_time = parse_expiry_date(&headers)?.unwrap(); + let expiry_time = parse_expiry_date(&headers)?.unwrap_or_default(); assert!(expiry_time > util::get_system_time()?.as_millis()); thread::sleep(Duration::from_millis(10)); assert!(expiry_time < util::get_system_time()?.as_millis()); diff --git a/src/mime.rs b/src/mime.rs index 04eccc0..3dd488b 100644 --- a/src/mime.rs +++ b/src/mime.rs @@ -47,7 +47,7 @@ mod tests { use super::*; #[test] - fn test_match_mime_type() { + fn test_match_mime_type() -> Result<(), FromStrError> { assert_eq!( mime::TEXT_PLAIN, get_mime_type( @@ -56,8 +56,7 @@ mod tests { regex: Regex::new("^.*\\.test$").ok(), }], String::from("mime.test") - ) - .unwrap() + )? ); assert_eq!( mime::IMAGE_PNG, @@ -67,16 +66,16 @@ mod tests { regex: Regex::new("^.*\\.PNG$").ok(), }], String::from("image.PNG") - ) - .unwrap() + )? ); assert_eq!( mime::APPLICATION_PDF, - get_mime_type(&[], String::from("book.pdf")).unwrap() + get_mime_type(&[], String::from("book.pdf"))? ); assert_eq!( mime::APPLICATION_OCTET_STREAM, - get_mime_type(&[], String::from("x.unknown")).unwrap() + get_mime_type(&[], String::from("x.unknown"))? ); + Ok(()) } } diff --git a/src/paste.rs b/src/paste.rs index 206ab84..3c07267 100644 --- a/src/paste.rs +++ b/src/paste.rs @@ -263,8 +263,7 @@ mod tests { Some("txt"), PathBuf::from(&file_name) .extension() - .map(|v| v.to_str()) - .flatten() + .and_then(|v| v.to_str()) ); fs::remove_file(file_name)?; @@ -286,8 +285,7 @@ mod tests { Some("bin"), PathBuf::from(&file_name) .extension() - .map(|v| v.to_str()) - .flatten() + .and_then(|v| v.to_str()) ); fs::remove_file(file_name)?; @@ -300,7 +298,7 @@ mod tests { data: vec![116, 101, 115, 116], type_: PasteType::Oneshot, }; - let expiry_date = util::get_system_time().unwrap().as_millis() + 100; + let expiry_date = util::get_system_time()?.as_millis() + 100; let file_name = paste.store_file("test.file", Some(expiry_date), &config)?; let file_path = PasteType::Oneshot .get_path(&config.server.upload_path) @@ -328,7 +326,7 @@ mod tests { }; assert!(paste.store_url(None, &config).is_err()); - config.server.max_content_length = Byte::from_str("30k").unwrap(); + config.server.max_content_length = Byte::from_str("30k").expect("cannot parse byte"); let url = String::from("https://upload.wikimedia.org/wikipedia/en/a/a9/Example.jpg"); let mut paste = Paste { data: url.as_bytes().to_vec(), diff --git a/src/random.rs b/src/random.rs index 1ee5242..1a73ea6 100644 --- a/src/random.rs +++ b/src/random.rs @@ -66,8 +66,10 @@ mod tests { type_: RandomURLType::PetName, ..RandomURLConfig::default() }; - let random_url = random_config.generate().unwrap(); - assert_eq!(3, random_url.split("~").collect::>().len()); + let random_url = random_config + .generate() + .expect("cannot generate random URL"); + assert_eq!(3, random_url.split('~').count()); let random_config = RandomURLConfig { enabled: true, @@ -75,7 +77,9 @@ mod tests { type_: RandomURLType::Alphanumeric, ..RandomURLConfig::default() }; - let random_url = random_config.generate().unwrap(); + let random_url = random_config + .generate() + .expect("cannot generate random URL"); assert_eq!(21, random_url.len()); let random_config = RandomURLConfig { diff --git a/src/server.rs b/src/server.rs index 71119f5..4cc8a21 100644 --- a/src/server.rs +++ b/src/server.rs @@ -220,11 +220,11 @@ mod tests { #[actix_web::test] async fn test_index() { - let mut app = test::init_service(App::new().service(index)).await; + let app = test::init_service(App::new().service(index)).await; let request = TestRequest::default() .insert_header(("content-type", "text/plain")) .to_request(); - let resp = test::call_service(&mut app, request).await; + let resp = test::call_service(&app, request).await; assert!(resp.status().is_redirection()); assert_eq!(http::StatusCode::FOUND, resp.status()); } @@ -249,17 +249,17 @@ mod tests { .set_payload(multipart_data) } - async fn assert_body(response: ServiceResponse, expected: &str) { + async fn assert_body(response: ServiceResponse, expected: &str) -> Result<(), Error> { assert_eq!(http::StatusCode::OK, response.status()); let body = response.into_body(); - match body.size() { - BodySize::Sized(size) => { - assert_eq!(size, expected.as_bytes().len() as u64); - let body_bytes = actix_web::body::to_bytes(body).await.unwrap(); - let body_text = str::from_utf8(&body_bytes).unwrap(); - assert_eq!(expected, body_text); - } - _ => {} + if let BodySize::Sized(size) = body.size() { + assert_eq!(size, expected.as_bytes().len() as u64); + let body_bytes = actix_web::body::to_bytes(body).await?; + let body_text = str::from_utf8(&body_bytes)?; + assert_eq!(expected, body_text); + Ok(()) + } else { + Err(error::ErrorInternalServerError("unexpected body type")) } } @@ -269,7 +269,7 @@ mod tests { config.server.upload_path = env::current_dir()?; config.server.max_content_length = Byte::from_bytes(100); - let mut app = test::init_service( + let app = test::init_service( App::new() .app_data(Data::new(RwLock::new(config))) .app_data(Data::new(Client::default())) @@ -281,25 +281,25 @@ mod tests { let file_name = "upload_test.txt"; let timestamp = util::get_system_time()?.as_secs().to_string(); let response = test::call_service( - &mut app, + &app, get_multipart_request(×tamp, file_name).to_request(), ) .await; - assert_body(response, &format!("http://localhost:8080/{}\n", file_name)).await; + assert_body(response, &format!("http://localhost:8080/{}\n", file_name)).await?; let serve_request = TestRequest::get() .uri(&format!("/{}", file_name)) .to_request(); - let response = test::call_service(&mut app, serve_request).await; + let response = test::call_service(&app, serve_request).await; assert_eq!(http::StatusCode::OK, response.status()); - assert_body(response, ×tamp).await; + assert_body(response, ×tamp).await?; fs::remove_file(file_name)?; let serve_request = TestRequest::get() .uri(&format!("/{}", file_name)) .to_request(); - let response = test::call_service(&mut app, serve_request).await; + let response = test::call_service(&app, serve_request).await; assert_eq!(http::StatusCode::NOT_FOUND, response.status()); Ok(())