improved tests
Some checks failed
CI/CD Pipeline / lint (push) Successful in 3m45s
CI/CD Pipeline / integration-tests (push) Failing after 55s
CI/CD Pipeline / unit-tests (push) Failing after 1m1s
CI/CD Pipeline / e2e-tests (push) Has been skipped
CI/CD Pipeline / build (push) Has been skipped
Some checks failed
CI/CD Pipeline / lint (push) Successful in 3m45s
CI/CD Pipeline / integration-tests (push) Failing after 55s
CI/CD Pipeline / unit-tests (push) Failing after 1m1s
CI/CD Pipeline / e2e-tests (push) Has been skipped
CI/CD Pipeline / build (push) Has been skipped
This commit is contained in:
@@ -615,3 +615,30 @@ pub async fn get_signed_object(
|
||||
|
||||
Ok((headers, body))
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_validate_role_allows_valid_roles() {
|
||||
assert!(validate_role("anon").is_ok());
|
||||
assert!(validate_role("authenticated").is_ok());
|
||||
assert!(validate_role("service_role").is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_validate_role_rejects_sql_injection() {
|
||||
let result = validate_role("anon'; DROP TABLE storage.objects; --");
|
||||
assert!(result.is_err());
|
||||
let (status, _) = result.unwrap_err();
|
||||
assert_eq!(status, StatusCode::FORBIDDEN);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_validate_role_rejects_unknown() {
|
||||
assert!(validate_role("superadmin").is_err());
|
||||
assert!(validate_role("").is_err());
|
||||
assert!(validate_role("postgres").is_err());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -272,3 +272,49 @@ pub async fn tus_head_upload(
|
||||
|
||||
Ok((StatusCode::OK, headers))
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_validate_upload_id_valid_uuid() {
|
||||
let id = Uuid::new_v4().to_string();
|
||||
assert!(validate_upload_id(&id).is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_validate_upload_id_rejects_path_traversal() {
|
||||
let result = validate_upload_id("../../etc/passwd");
|
||||
assert!(result.is_err());
|
||||
let (status, _) = result.unwrap_err();
|
||||
assert_eq!(status, StatusCode::BAD_REQUEST);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_validate_upload_id_rejects_arbitrary_string() {
|
||||
assert!(validate_upload_id("not-a-uuid").is_err());
|
||||
assert!(validate_upload_id("").is_err());
|
||||
assert!(validate_upload_id("../../../root/.ssh/id_rsa").is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_get_upload_path_rejects_traversal() {
|
||||
let result = get_upload_path("../../etc/passwd");
|
||||
assert!(result.is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_get_upload_path_valid_uuid() {
|
||||
let id = Uuid::new_v4().to_string();
|
||||
let path = get_upload_path(&id).unwrap();
|
||||
assert!(path.to_string_lossy().contains(&id));
|
||||
assert!(!path.to_string_lossy().contains(".."));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_get_info_path_rejects_traversal() {
|
||||
let result = get_info_path("../../etc/passwd");
|
||||
assert!(result.is_err());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user