#[cfg(any(test, feature = "test-support"))]
use crate::mock_client::{ExpectationBuilder, MockClient};
#[cfg(any(test, feature = "test-support"))]
pub trait StorageMockHelpers {
fn expect_get_bucket(&mut self, bucket: &str) -> ExpectationBuilder<'_>;
fn expect_list_buckets(
&mut self,
project: &str,
prefix: &str,
page_token: &str,
) -> ExpectationBuilder<'_>;
fn expect_create_bucket(&mut self, project: &str) -> ExpectationBuilder<'_>;
fn expect_patch_bucket(&mut self, bucket: &str) -> ExpectationBuilder<'_>;
fn expect_delete_bucket(&mut self, bucket: &str) -> ExpectationBuilder<'_>;
fn expect_get_bucket_iam_policy(&mut self, bucket: &str) -> ExpectationBuilder<'_>;
fn expect_set_bucket_iam_policy(&mut self, bucket: &str) -> ExpectationBuilder<'_>;
fn expect_get_object(
&mut self,
bucket: &str,
object: &str,
generation: &str,
) -> ExpectationBuilder<'_>;
fn expect_list_objects(
&mut self,
bucket: &str,
prefix: &str,
delimiter: &str,
page_token: &str,
versions: &str,
) -> ExpectationBuilder<'_>;
fn expect_create_object(&mut self, bucket: &str, name: &str) -> ExpectationBuilder<'_>;
fn expect_delete_object(
&mut self,
bucket: &str,
object: &str,
generation: &str,
) -> ExpectationBuilder<'_>;
fn expect_compose_object(
&mut self,
destination_bucket: &str,
destination_object: &str,
) -> ExpectationBuilder<'_>;
fn expect_copy_object(
&mut self,
source_bucket: &str,
source_object: &str,
destination_bucket: &str,
destination_object: &str,
) -> ExpectationBuilder<'_>;
fn expect_rewrite_object(
&mut self,
source_bucket: &str,
source_object: &str,
destination_bucket: &str,
destination_object: &str,
rewrite_token: &str,
) -> ExpectationBuilder<'_>;
fn expect_lock_bucket_retention_policy(
&mut self,
bucket: &str,
if_metageneration_match: &str,
) -> ExpectationBuilder<'_>;
}
#[cfg(any(test, feature = "test-support"))]
impl StorageMockHelpers for MockClient {
fn expect_get_bucket(&mut self, bucket: &str) -> crate::mock_client::ExpectationBuilder<'_> {
let path = format!("/storage/v1/b/{bucket}");
self.expect_get(&path)
}
fn expect_list_buckets(
&mut self,
project: &str,
prefix: &str,
page_token: &str,
) -> crate::mock_client::ExpectationBuilder<'_> {
let mut path = "/storage/v1/b".to_string();
let mut __qp: Vec<String> = Vec::new();
if !project.is_empty() {
__qp.push(format!("project={}", project));
}
if !prefix.is_empty() {
__qp.push(format!("prefix={}", prefix));
}
if !page_token.is_empty() {
__qp.push(format!("pageToken={}", page_token));
}
if !__qp.is_empty() {
path = format!("{}?{}", path, __qp.join("&"));
}
self.expect_get(&path)
}
fn expect_create_bucket(
&mut self,
project: &str,
) -> crate::mock_client::ExpectationBuilder<'_> {
let mut path = "/storage/v1/b".to_string();
let mut __qp: Vec<String> = Vec::new();
if !project.is_empty() {
__qp.push(format!("project={}", project));
}
if !__qp.is_empty() {
path = format!("{}?{}", path, __qp.join("&"));
}
self.expect_post(&path)
}
fn expect_patch_bucket(&mut self, bucket: &str) -> crate::mock_client::ExpectationBuilder<'_> {
let path = format!("/storage/v1/b/{bucket}");
self.expect_patch(&path)
}
fn expect_delete_bucket(&mut self, bucket: &str) -> crate::mock_client::ExpectationBuilder<'_> {
let path = format!("/storage/v1/b/{bucket}");
self.expect_delete(&path)
}
fn expect_get_bucket_iam_policy(
&mut self,
bucket: &str,
) -> crate::mock_client::ExpectationBuilder<'_> {
let path = format!("/storage/v1/b/{bucket}/iam");
self.expect_get(&path)
}
fn expect_set_bucket_iam_policy(
&mut self,
bucket: &str,
) -> crate::mock_client::ExpectationBuilder<'_> {
let path = format!("/storage/v1/b/{bucket}/iam");
self.expect_put(&path)
}
fn expect_get_object(
&mut self,
bucket: &str,
object: &str,
generation: &str,
) -> crate::mock_client::ExpectationBuilder<'_> {
let mut path = format!("/storage/v1/b/{bucket}/o/{object}");
let mut __qp: Vec<String> = Vec::new();
if !generation.is_empty() {
__qp.push(format!("generation={}", generation));
}
if !__qp.is_empty() {
path = format!("{}?{}", path, __qp.join("&"));
}
self.expect_get(&path)
}
fn expect_list_objects(
&mut self,
bucket: &str,
prefix: &str,
delimiter: &str,
page_token: &str,
versions: &str,
) -> crate::mock_client::ExpectationBuilder<'_> {
let mut path = format!("/storage/v1/b/{bucket}/o");
let mut __qp: Vec<String> = Vec::new();
if !prefix.is_empty() {
__qp.push(format!("prefix={}", prefix));
}
if !delimiter.is_empty() {
__qp.push(format!("delimiter={}", delimiter));
}
if !page_token.is_empty() {
__qp.push(format!("pageToken={}", page_token));
}
if !versions.is_empty() {
__qp.push(format!("versions={}", versions));
}
if !__qp.is_empty() {
path = format!("{}?{}", path, __qp.join("&"));
}
self.expect_get(&path)
}
fn expect_create_object(
&mut self,
bucket: &str,
name: &str,
) -> crate::mock_client::ExpectationBuilder<'_> {
let mut path = format!("/upload/storage/v1/b/{bucket}/o");
let mut __qp: Vec<String> = Vec::new();
if !name.is_empty() {
__qp.push(format!("name={}", name));
}
if !__qp.is_empty() {
path = format!("{}?{}", path, __qp.join("&"));
}
self.expect_post(&path)
}
fn expect_delete_object(
&mut self,
bucket: &str,
object: &str,
generation: &str,
) -> crate::mock_client::ExpectationBuilder<'_> {
let mut path = format!("/storage/v1/b/{bucket}/o/{object}");
let mut __qp: Vec<String> = Vec::new();
if !generation.is_empty() {
__qp.push(format!("generation={}", generation));
}
if !__qp.is_empty() {
path = format!("{}?{}", path, __qp.join("&"));
}
self.expect_delete(&path)
}
fn expect_compose_object(
&mut self,
destination_bucket: &str,
destination_object: &str,
) -> crate::mock_client::ExpectationBuilder<'_> {
let path = format!("/storage/v1/b/{destination_bucket}/o/{destination_object}/compose");
self.expect_post(&path)
}
fn expect_copy_object(
&mut self,
source_bucket: &str,
source_object: &str,
destination_bucket: &str,
destination_object: &str,
) -> crate::mock_client::ExpectationBuilder<'_> {
let path = format!(
"/storage/v1/b/{source_bucket}/o/{source_object}/copyTo/b/{destination_bucket}/o/{destination_object}"
);
self.expect_post(&path)
}
fn expect_rewrite_object(
&mut self,
source_bucket: &str,
source_object: &str,
destination_bucket: &str,
destination_object: &str,
rewrite_token: &str,
) -> crate::mock_client::ExpectationBuilder<'_> {
let mut path = format!(
"/storage/v1/b/{source_bucket}/o/{source_object}/rewriteTo/b/{destination_bucket}/o/{destination_object}"
);
let mut __qp: Vec<String> = Vec::new();
if !rewrite_token.is_empty() {
__qp.push(format!("rewriteToken={}", rewrite_token));
}
if !__qp.is_empty() {
path = format!("{}?{}", path, __qp.join("&"));
}
self.expect_post(&path)
}
fn expect_lock_bucket_retention_policy(
&mut self,
bucket: &str,
if_metageneration_match: &str,
) -> crate::mock_client::ExpectationBuilder<'_> {
let mut path = format!("/storage/v1/b/{bucket}/lockRetentionPolicy");
let mut __qp: Vec<String> = Vec::new();
if !if_metageneration_match.is_empty() {
__qp.push(format!("ifMetagenerationMatch={}", if_metageneration_match));
}
if !__qp.is_empty() {
path = format!("{}?{}", path, __qp.join("&"));
}
self.expect_post(&path)
}
}