mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-22 04:16:38 +00:00
test(e2e): box SSE-KMS negative errors
Co-Authored-By: heihutu <heihutu@gmail.com>
This commit is contained in:
@@ -39,6 +39,7 @@ use std::time::Duration;
|
|||||||
use tracing::info;
|
use tracing::info;
|
||||||
|
|
||||||
type TestResult = Result<(), Box<dyn std::error::Error + Send + Sync>>;
|
type TestResult = Result<(), Box<dyn std::error::Error + Send + Sync>>;
|
||||||
|
type S3OperationResult<T> = Result<T, Box<aws_sdk_s3::Error>>;
|
||||||
|
|
||||||
const ALLOWED_KEY: &str = "kms-matrix-allowed-key";
|
const ALLOWED_KEY: &str = "kms-matrix-allowed-key";
|
||||||
const OTHER_KEY: &str = "kms-matrix-other-key";
|
const OTHER_KEY: &str = "kms-matrix-other-key";
|
||||||
@@ -130,7 +131,7 @@ fn policy_document(statements: Vec<serde_json::Value>) -> String {
|
|||||||
serde_json::json!({ "Version": "2012-10-17", "Statement": statements }).to_string()
|
serde_json::json!({ "Version": "2012-10-17", "Statement": statements }).to_string()
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn put_sse_kms(client: &Client, key: &str, kms_key_id: &str) -> Result<(), aws_sdk_s3::Error> {
|
async fn put_sse_kms(client: &Client, key: &str, kms_key_id: &str) -> S3OperationResult<()> {
|
||||||
client
|
client
|
||||||
.put_object()
|
.put_object()
|
||||||
.bucket(BUCKET)
|
.bucket(BUCKET)
|
||||||
@@ -141,14 +142,14 @@ async fn put_sse_kms(client: &Client, key: &str, kms_key_id: &str) -> Result<(),
|
|||||||
.send()
|
.send()
|
||||||
.await
|
.await
|
||||||
.map(|_| ())
|
.map(|_| ())
|
||||||
.map_err(aws_sdk_s3::Error::from)
|
.map_err(|err| Box::new(aws_sdk_s3::Error::from(err)))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Assert the operation failed with `AccessDenied` rather than any other error.
|
/// Assert the operation failed with `AccessDenied` rather than any other error.
|
||||||
///
|
///
|
||||||
/// A bare `is_err` would also accept `KMSKeyDisabled` or an internal error, which
|
/// A bare `is_err` would also accept `KMSKeyDisabled` or an internal error, which
|
||||||
/// would hide both a leak of key state and an outage masquerading as a denial.
|
/// would hide both a leak of key state and an outage masquerading as a denial.
|
||||||
fn assert_access_denied<T: std::fmt::Debug>(result: Result<T, aws_sdk_s3::Error>, what: &str) {
|
fn assert_access_denied<T: std::fmt::Debug>(result: S3OperationResult<T>, what: &str) {
|
||||||
let error = result.expect_err(&format!("{what} must be denied"));
|
let error = result.expect_err(&format!("{what} must be denied"));
|
||||||
assert_eq!(error.code(), Some("AccessDenied"), "{what} must fail with AccessDenied: {error:?}");
|
assert_eq!(error.code(), Some("AccessDenied"), "{what} must fail with AccessDenied: {error:?}");
|
||||||
}
|
}
|
||||||
@@ -296,7 +297,7 @@ async fn sse_kms_per_key_authorization_negative_matrix() -> TestResult {
|
|||||||
.send()
|
.send()
|
||||||
.await
|
.await
|
||||||
.map(|_| ())
|
.map(|_| ())
|
||||||
.map_err(aws_sdk_s3::Error::from),
|
.map_err(|err| Box::new(aws_sdk_s3::Error::from(err))),
|
||||||
"SSE-KMS read by an identity holding no kms grant",
|
"SSE-KMS read by an identity holding no kms grant",
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -310,7 +311,7 @@ async fn sse_kms_per_key_authorization_negative_matrix() -> TestResult {
|
|||||||
.send()
|
.send()
|
||||||
.await
|
.await
|
||||||
.map(|_| ())
|
.map(|_| ())
|
||||||
.map_err(aws_sdk_s3::Error::from),
|
.map_err(|err| Box::new(aws_sdk_s3::Error::from(err))),
|
||||||
"SSE-KMS read by an identity holding kms:GenerateDataKey but not kms:Decrypt",
|
"SSE-KMS read by an identity holding kms:GenerateDataKey but not kms:Decrypt",
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user