Crate rusoto_mock
source · [−]Expand description
Mock request dispatcher and credentials for unit testing rusoto AWS service clients
All rusoto generated service clients come with a constuctor function named new_with
which
accepts three arguments
- A
rusoto_core::DispatchSignedRequest
implementation - A
rusoto_core::credential::ProvideAwsCredentials
implementation - A
rusoto_core::Region
This crate provides mock implementations to satisfy the first two.
Example
The following is an example for the rusoto_s3
crate but should
work for all service crates just the same. The code is commented
out for illustration but also to avoid a cyclic dependency in this crate.
extern crate rusoto_mock;
// extern crate rusoto_s3;
use rusoto_mock::{MockCredentialsProvider, MockRequestDispatcher, MockResponseReader};
fn main() {
// let s3 = rusoto_s3::S3Client::new_with(
// MockRequestDispatcher::default().with_body(
// MockResponseReader::read_response("test-data", "s3-response.json")
// ),
// MockCredentialsProvider,
// Default::default()
// );
}
Note regarding XML-based AWS Services
Some AWS services such as SQS and STS return responses in XML format rather than JSON.
In these cases, parsing may fail with ParseError("Expected StartElement got None")
.
Valid XML examples can be found in the API documentation for an API call such as this one for STS AssumeRole.
These can be used to create a MockRequestDispatcher
like so:
MockRequestDispatcher::default().with_body(r#"
<AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
... etc
</AssumeRoleResponse>
"#)
Structs
Provides a set of credentials that always resolve successfully
Composes mock API responses
Reads response body content from disk
Returns sequential mock API responses consuming a collection of MockRequestDispatch
Traits
An interface for producing response body content