// Copyright 2024 RustFS Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. mod reliant; mod storage_api; // Common utilities for all E2E tests #[cfg(test)] pub mod common; // In-process fault-injection primitives (disk offline/replacement, shard corruption) #[cfg(test)] pub mod chaos; // Programmable S3 target for replication failure-path tests (backlog#1147 repl-8). #[cfg(test)] pub mod fake_s3_target; // Socket-level network fault-injection proxy for black-box cluster tests // (backlog#1325 network fault-injection block): latency / blackhole / one-way // partition on the wire between nodes. Serves #1312/#1319 (lock-plane one-way // partition, accept-then-blackhole peer) and #1327 (cross-process replay/tamper // seam); cluster-harness wiring is a follow-up (rustfs#4937). #[cfg(test)] pub mod fault_proxy; // Reliability tests built on the fault-injection harness #[cfg(test)] mod reliability_disk_fault_test; // dist-13 (backlog#1150/#1155): e2e regression net proving a large-object // degraded EC read never returns a silently truncated body (rustfs#4594/#4560/#4585). #[cfg(test)] mod degraded_read_eof_regression_test; // backlog#1183: GET codec-streaming fast path must be byte/header identical to // the legacy duplex path before its rollout gates can be flipped on by default. #[cfg(test)] mod get_codec_streaming_compat_test; #[cfg(test)] mod version_id_regression_test; // Data usage regression tests #[cfg(test)] mod data_usage_test; // KMS-specific test modules #[cfg(test)] mod kms; // Regression test for issue #1797 #[cfg(test)] mod list_objects_duplicates_test; // Quota tests #[cfg(test)] mod quota_test; // Harness regression tests: console port isolation + fail-fast startup #[cfg(test)] mod server_startup_failfast_test; #[cfg(test)] mod bucket_policy_check_test; // Security boundary tests: DoS limits, SSRF prevention, concurrent-write integrity #[cfg(test)] mod security_boundary_test; // Opt-in per-client S3 API rate limiting (backlog#1191) #[cfg(test)] mod api_rate_limit_test; // Opt-in global connection cap on the main listener (backlog#1191 follow-up) #[cfg(test)] mod connection_cap_test; // Admin authorization gate: non-admin denial + root-credential lifecycle (backlog#1151 sec-4) #[cfg(test)] mod admin_auth_test; /// IAM / bucket / STS session policy with `s3:ExistingObjectTag` conditions (E2E). #[cfg(test)] mod existing_object_tag_policy_test; // Regression tests for Issue #2036: anonymous access with PublicAccessBlock #[cfg(test)] mod anonymous_access_test; // Special characters in path test modules #[cfg(test)] mod special_chars_test; // Leading/duplicate slash key normalization tests (Issue #2427) #[cfg(test)] mod leading_slash_key_test; // Content-Encoding header preservation test #[cfg(test)] mod content_encoding_test; #[cfg(test)] mod archive_download_integrity_test; // ListObjectsV2 pagination test (Issue #1596) #[cfg(test)] mod list_objects_v2_pagination_test; // Regression test for Issue #3107: mc mirror small-bucket listing must not time out. #[cfg(test)] mod mc_mirror_small_bucket_test; // Policy variables tests #[cfg(test)] mod policy; #[cfg(test)] mod compression_test; // Regression test for Issue #1878: DeleteMarkers not visible immediately after delete_objects #[cfg(test)] mod delete_objects_versioning_test; // Regression test for signed DELETE Object?versionId requests without Content-Length. #[cfg(test)] mod delete_object_no_content_length_test; // Delete-marker visibility baseline for data-movement migration proof. #[cfg(test)] mod delete_marker_migration_semantics_test; // Regression test for Issue #2252: ListObjectVersions misses newest version after put -> delete -> put #[cfg(test)] mod list_object_versions_regression_test; // versions&metadata=true extension regression test #[cfg(test)] mod list_object_versions_metadata_extension_test; // list-type=2&metadata=true extension regression test #[cfg(test)] mod list_objects_v2_metadata_extension_test; #[cfg(test)] mod protocols; // Object Lock tests #[cfg(test)] mod object_lock; #[cfg(test)] mod cluster_concurrency_test; // Multi-drive (drivesPerNode) and 2-pool cluster harness smoke tests #[cfg(test)] mod cluster_multidrive_pool_test; // PutObject / MultipartUpload with checksum (Content-MD5, x-amz-checksum-*) #[cfg(test)] mod checksum_upload_test; // Group deletion tests #[cfg(test)] mod group_delete_test; #[cfg(test)] mod head_object_range_test; #[cfg(test)] mod head_object_consistency_test; #[cfg(test)] mod heal_erasure_disk_rebuild_test; #[cfg(test)] mod copy_object_metadata_test; #[cfg(test)] mod copy_object_version_restore_test; #[cfg(test)] mod copy_object_checksum_test; // S3 dummy-compat bucket API tests #[cfg(test)] mod bucket_logging_test; // Multipart control API auth regression tests #[cfg(test)] mod multipart_auth_test; // Negative presigned-URL (query-string SigV4) regression suite (backlog#1151 // sec-2): expired, tampered signature, wrong secret, tampered target. #[cfg(test)] mod presigned_negative_test; // Negative header-SigV4 regression suite (backlog#1151 sec-1): tampered // signature, wrong secret, skewed date, malformed Authorization. #[cfg(test)] mod negative_sigv4_test; #[cfg(test)] mod stale_multipart_cleanup_cluster_test; // Object lambda end-to-end regression tests #[cfg(test)] mod object_lambda_test; // S3 event-notification webhook delivery end-to-end (backlog#1154 peri-1): // configure webhook target -> PutBucketNotificationConfiguration -> object // operation -> event delivered, plus filter negatives and store-queue redelivery. #[cfg(test)] mod notification_webhook_test; // TLS certificate hot-reload live-listener e2e (backlog#1154 peri-5): swap // certificates without a restart, existing sessions survive, bad material is // fail-safe (old certificate keeps serving, failure is logged). #[cfg(test)] mod tls_hot_reload_test; // Console listener over-the-wire smoke (backlog#1154 peri-4): public console // endpoints answer without credentials or leaks, the SPA prefix never falls // through to the S3 API, and the protected surface stays authenticated. #[cfg(test)] mod console_smoke_test; // Admin IAM management CRUD e2e (backlog#1154 peri-2): user / canned-policy / // service-account lifecycle over signed HTTP with data-plane effect assertions, // plus non-admin 403 probes per endpoint (sec-4 pattern). #[cfg(test)] mod admin_iam_crud_test; #[cfg(test)] mod admin_pools_test; // Replication extension end-to-end regression tests #[cfg(test)] mod replication_extension_test; #[cfg(test)] mod snowball_auto_extract_test; #[cfg(test)] mod namespace_lock_quorum_test; #[cfg(test)] mod admin_timeout_regression_test; #[cfg(test)] mod overwrite_cleanup_regression_test; // Regression test for backlog#601: `GET //` ListBuckets browser compatibility. #[cfg(test)] mod list_buckets_double_slash_test; // Regression test for backlog#629(b): region-aware CreateBucket SigV4. #[cfg(test)] mod create_bucket_region_test; // Regression coverage for backlog#618 item 8: copy-source invalid-date header. #[cfg(test)] mod copy_source_invalid_date_test; pub mod tls_gen;