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::DispatchSignedRequestimplementation - A
rusoto_core::credential::ProvideAwsCredentialsimplementation - 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§
- Mock
Credentials Provider - Provides a set of credentials that always resolve successfully
- Mock
Request Dispatcher - Composes mock API responses
- Mock
Response Reader - Reads response body content from disk
- Multiple
Mock Request Dispatcher - Returns sequential mock API responses consuming a collection of MockRequestDispatch
Traits§
- Read
Mock Response - An interface for producing response body content