Skip to content

Commit 8e23b99

Browse files
committed
add test for new S3 KeyTooLongError
1 parent 7fe033d commit 8e23b99

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

src/storage/mod.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -964,6 +964,19 @@ mod backend_tests {
964964
Ok(())
965965
}
966966

967+
fn test_too_long_filename(storage: &Storage) -> Result<()> {
968+
// minio returns ErrKeyTooLongError when the key is over 1024 bytes long.
969+
// When testing, minio just gave me `XMinioInvalidObjectName`, so I'll check that too.
970+
let long_filename = "ATCG".repeat(512);
971+
972+
assert!(storage
973+
.get(&long_filename, 42)
974+
.unwrap_err()
975+
.is::<PathNotFoundError>());
976+
977+
Ok(())
978+
}
979+
967980
fn test_get_too_big(storage: &Storage) -> Result<()> {
968981
const MAX_SIZE: usize = 1024;
969982

@@ -1307,6 +1320,7 @@ mod backend_tests {
13071320
test_get_object,
13081321
test_get_range,
13091322
test_get_too_big,
1323+
test_too_long_filename,
13101324
test_delete_prefix,
13111325
test_delete_prefix_without_matches,
13121326
test_delete_percent,

src/storage/s3.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ fn err_is_not_found<E>(err: &SdkError<E>) -> bool
2525
where
2626
E: ProvideErrorMetadata,
2727
{
28-
match err {
29-
SdkError::ServiceError(err) => {
30-
err.raw().status().as_u16() == http::StatusCode::NOT_FOUND.as_u16()
31-
}
32-
e if e.code() == Some("KeyTooLongError") => true,
33-
_ => false,
28+
if err.code() == Some("KeyTooLongError") || err.code() == Some("XMinioInvalidObjectName") {
29+
true
30+
} else if let SdkError::ServiceError(err) = err {
31+
err.raw().status().as_u16() == http::StatusCode::NOT_FOUND.as_u16()
32+
} else {
33+
false
3434
}
3535
}
3636

0 commit comments

Comments
 (0)