mirror of
https://github.com/jlengrand/engine.git
synced 2026-03-10 08:11:21 +00:00
242 lines
8.3 KiB
Rust
242 lines
8.3 KiB
Rust
use qovery_engine::cloud_provider::aws::regions::AwsRegion;
|
|
use qovery_engine::object_storage::s3::S3;
|
|
use qovery_engine::object_storage::ObjectStorage;
|
|
use std::str::FromStr;
|
|
use tempfile::NamedTempFile;
|
|
use test_utilities::utilities::{context, generate_id, FuncTestsSecrets};
|
|
|
|
#[cfg(feature = "test-aws-infra")]
|
|
#[test]
|
|
fn test_delete_bucket() {
|
|
// setup:
|
|
let context = context("fake_orga_id", "fake_cluster_id");
|
|
let secrets = FuncTestsSecrets::new();
|
|
let id = generate_id();
|
|
let name = format!("test-{}", id);
|
|
let aws_access_key = secrets.AWS_ACCESS_KEY_ID.expect("AWS_ACCESS_KEY_ID is not set");
|
|
let aws_secret_key = secrets.AWS_SECRET_ACCESS_KEY.expect("AWS_SECRET_ACCESS_KEY is not set");
|
|
let aws_region_raw = secrets.AWS_DEFAULT_REGION.expect("AWS_DEFAULT_REGION is not set");
|
|
let aws_region = AwsRegion::from_str(aws_region_raw.as_str())
|
|
.unwrap_or_else(|_| panic!("AWS region `{}` seems not to be valid", aws_region_raw));
|
|
|
|
let aws_os = S3::new(
|
|
context.clone(),
|
|
id,
|
|
name,
|
|
aws_access_key,
|
|
aws_secret_key,
|
|
aws_region.clone(),
|
|
false,
|
|
context.resource_expiration_in_seconds(),
|
|
);
|
|
|
|
let bucket_name = format!("qovery-test-bucket-{}", generate_id());
|
|
|
|
aws_os
|
|
.create_bucket(bucket_name.as_str())
|
|
.unwrap_or_else(|_| panic!("error while creating S3 bucket in `{}`", aws_region.to_aws_format()));
|
|
|
|
// compute:
|
|
let result = aws_os.delete_bucket(bucket_name.as_str());
|
|
|
|
// validate:
|
|
assert!(result.is_ok(), "Delete bucket failed in `{}`", aws_region.to_aws_format());
|
|
assert!(
|
|
!aws_os.bucket_exists(bucket_name.as_str()),
|
|
"Delete bucket failed in `{}`, bucket still exists",
|
|
aws_region.to_aws_format()
|
|
);
|
|
}
|
|
|
|
#[cfg(feature = "test-aws-infra")]
|
|
#[test]
|
|
fn test_create_bucket() {
|
|
// setup:
|
|
let context = context("fake_orga_id", "fake_cluster_id");
|
|
let secrets = FuncTestsSecrets::new();
|
|
let id = generate_id();
|
|
let name = format!("test-{}", id);
|
|
let aws_access_key = secrets.AWS_ACCESS_KEY_ID.expect("AWS_ACCESS_KEY_ID is not set");
|
|
let aws_secret_key = secrets.AWS_SECRET_ACCESS_KEY.expect("AWS_SECRET_ACCESS_KEY is not set");
|
|
let aws_region_raw = secrets.AWS_DEFAULT_REGION.expect("AWS_DEFAULT_REGION is not set");
|
|
let aws_region = AwsRegion::from_str(aws_region_raw.as_str())
|
|
.unwrap_or_else(|_| panic!("AWS region `{}` seems not to be valid", aws_region_raw));
|
|
|
|
let aws_os = S3::new(
|
|
context.clone(),
|
|
id,
|
|
name,
|
|
aws_access_key,
|
|
aws_secret_key,
|
|
aws_region.clone(),
|
|
false,
|
|
context.resource_expiration_in_seconds(),
|
|
);
|
|
|
|
let bucket_name = format!("qovery-test-bucket-{}", generate_id());
|
|
|
|
// compute:
|
|
let result = aws_os.create_bucket(bucket_name.as_str());
|
|
|
|
// validate:
|
|
assert!(result.is_ok(), "Create bucket failed in `{}`", aws_region.to_aws_format());
|
|
assert!(
|
|
aws_os.bucket_exists(bucket_name.as_str()),
|
|
"Create bucket failed in `{}`, bucket doesn't exist",
|
|
aws_region.to_aws_format()
|
|
);
|
|
|
|
// clean-up:
|
|
aws_os
|
|
.delete_bucket(bucket_name.as_str())
|
|
.unwrap_or_else(|_| panic!("error deleting S3 bucket `{}` in `{}`", bucket_name, aws_region.to_aws_format()));
|
|
}
|
|
|
|
#[cfg(feature = "test-aws-infra")]
|
|
#[test]
|
|
fn test_recreate_bucket() {
|
|
// setup:
|
|
let context = context("fake_orga_id", "fake_cluster_id");
|
|
let secrets = FuncTestsSecrets::new();
|
|
let id = generate_id();
|
|
let name = format!("test-{}", id);
|
|
let aws_access_key = secrets.AWS_ACCESS_KEY_ID.expect("AWS_ACCESS_KEY_ID is not set");
|
|
let aws_secret_key = secrets.AWS_SECRET_ACCESS_KEY.expect("AWS_SECRET_ACCESS_KEY is not set");
|
|
let aws_region_raw = secrets.AWS_DEFAULT_REGION.expect("AWS_DEFAULT_REGION is not set");
|
|
let aws_region = AwsRegion::from_str(aws_region_raw.as_str())
|
|
.unwrap_or_else(|_| panic!("AWS region `{}` seems not to be valid", aws_region_raw));
|
|
|
|
let aws_os = S3::new(
|
|
context.clone(),
|
|
id,
|
|
name,
|
|
aws_access_key,
|
|
aws_secret_key,
|
|
aws_region,
|
|
false,
|
|
context.resource_expiration_in_seconds(),
|
|
);
|
|
|
|
let bucket_name = format!("qovery-test-bucket-{}", generate_id());
|
|
|
|
// compute & validate:
|
|
let create_result = aws_os.create_bucket(bucket_name.as_str());
|
|
assert!(create_result.is_ok());
|
|
assert!(aws_os.bucket_exists(bucket_name.as_str()));
|
|
|
|
let delete_result = aws_os.delete_bucket(bucket_name.as_str());
|
|
assert!(delete_result.is_ok());
|
|
|
|
let recreate_result = aws_os.create_bucket(bucket_name.as_str());
|
|
assert!(recreate_result.is_ok());
|
|
assert!(aws_os.bucket_exists(bucket_name.as_str()));
|
|
|
|
// clean-up:
|
|
aws_os
|
|
.delete_bucket(bucket_name.as_str())
|
|
.unwrap_or_else(|_| panic!("error deleting S3 bucket {}", bucket_name));
|
|
}
|
|
|
|
#[cfg(feature = "test-aws-infra")]
|
|
#[test]
|
|
fn test_put_file() {
|
|
// setup:
|
|
let context = context("fake_orga_id", "fake_cluster_id");
|
|
let secrets = FuncTestsSecrets::new();
|
|
let id = generate_id();
|
|
let name = format!("test-{}", id);
|
|
let aws_access_key = secrets.AWS_ACCESS_KEY_ID.expect("AWS_ACCESS_KEY_ID is not set");
|
|
let aws_secret_key = secrets.AWS_SECRET_ACCESS_KEY.expect("AWS_SECRET_ACCESS_KEY is not set");
|
|
let aws_region_raw = secrets.AWS_DEFAULT_REGION.expect("AWS_DEFAULT_REGION is not set");
|
|
let aws_region = AwsRegion::from_str(aws_region_raw.as_str())
|
|
.unwrap_or_else(|_| panic!("AWS region `{}` seems not to be valid", aws_region_raw));
|
|
|
|
let aws_os = S3::new(
|
|
context.clone(),
|
|
id,
|
|
name,
|
|
aws_access_key,
|
|
aws_secret_key,
|
|
aws_region,
|
|
false,
|
|
context.resource_expiration_in_seconds(),
|
|
);
|
|
|
|
let bucket_name = format!("qovery-test-bucket-{}", generate_id());
|
|
let object_key = format!("test-object-{}", generate_id());
|
|
|
|
aws_os
|
|
.create_bucket(bucket_name.as_str())
|
|
.expect("error while creating object-storage bucket");
|
|
|
|
let temp_file = NamedTempFile::new().expect("error while creating tempfile");
|
|
|
|
// compute:
|
|
let result = aws_os.put(
|
|
bucket_name.as_str(),
|
|
object_key.as_str(),
|
|
temp_file.into_temp_path().to_str().unwrap(),
|
|
);
|
|
|
|
// validate:
|
|
assert!(result.is_ok());
|
|
assert!(aws_os.get(bucket_name.as_str(), object_key.as_str(), false).is_ok());
|
|
|
|
// clean-up:
|
|
aws_os
|
|
.delete_bucket(bucket_name.as_str())
|
|
.unwrap_or_else(|_| panic!("error deleting S3 bucket {}", bucket_name));
|
|
}
|
|
|
|
#[cfg(feature = "test-aws-infra")]
|
|
#[test]
|
|
fn test_get_file() {
|
|
// setup:
|
|
let context = context("fake_orga_id", "fake_cluster_id");
|
|
let secrets = FuncTestsSecrets::new();
|
|
let id = generate_id();
|
|
let name = format!("test-{}", id);
|
|
let aws_access_key = secrets.AWS_ACCESS_KEY_ID.expect("AWS_ACCESS_KEY_ID is not set");
|
|
let aws_secret_key = secrets.AWS_SECRET_ACCESS_KEY.expect("AWS_SECRET_ACCESS_KEY is not set");
|
|
let aws_region_raw = secrets.AWS_DEFAULT_REGION.expect("AWS_DEFAULT_REGION is not set");
|
|
let aws_region = AwsRegion::from_str(aws_region_raw.as_str())
|
|
.unwrap_or_else(|_| panic!("AWS region `{}` seems not to be valid", aws_region_raw));
|
|
|
|
let aws_os = S3::new(
|
|
context.clone(),
|
|
id,
|
|
name,
|
|
aws_access_key,
|
|
aws_secret_key,
|
|
aws_region,
|
|
false,
|
|
context.resource_expiration_in_seconds(),
|
|
);
|
|
|
|
let bucket_name = format!("qovery-test-bucket-{}", generate_id());
|
|
let object_key = format!("test-object-{}", generate_id());
|
|
|
|
aws_os
|
|
.create_bucket(bucket_name.as_str())
|
|
.expect("error while creating object-storage bucket");
|
|
|
|
let temp_file = NamedTempFile::new().expect("error while creating tempfile");
|
|
let tempfile_path = temp_file.into_temp_path();
|
|
let tempfile_path = tempfile_path.to_str().unwrap();
|
|
|
|
aws_os
|
|
.put(bucket_name.as_str(), object_key.as_str(), tempfile_path)
|
|
.unwrap_or_else(|_| panic!("error while putting file {} into bucket {}", tempfile_path, bucket_name));
|
|
|
|
// compute:
|
|
let result = aws_os.get(bucket_name.as_str(), object_key.as_str(), false);
|
|
|
|
// validate:
|
|
assert!(result.is_ok());
|
|
|
|
// clean-up:
|
|
aws_os
|
|
.delete_bucket(bucket_name.as_str())
|
|
.unwrap_or_else(|_| panic!("error deleting S3 bucket {}", bucket_name));
|
|
}
|