@nexus-navigators/aws-data-faker
v1.1.0
Published
Unit test data generator for AWS SDK objects
Downloads
103
Readme
aws-data-faker
AWS Data Stubs for Unit Testing
Overview
This project provides a set of functions to stub AWS responses, making it easier to write unit tests for applications that interact with AWS services. By using these stubs, you can fake AWS response objects without needing to fill in every field. Fields are filled in based on Typescript requirements, where some values are defaulted to what the real value would be.
Types are matched, for the most part, from @types/aws-lambda
.
Features
- Service type stubs: Includes stubs for popular AWS services like S3, DynamoDB, Lambda, and more.
- TypeScript Support: Fully typed to ensure type safety and better developer experience.
- Lightweight: No external dependencies other than
@aws-sdk/util-arn-parser
and@types/aws-lambda
.
Installation
You can install this package via npm:
npm install --save-dev @nexus-navigators/aws-data-faker
Or with yarn:
yarn add --dev @nexus-navigators/aws-data-faker
Usage
Here is an example of how to use the mocks in a unit test:
import { proxyEvent } from '@nexus-navigators/aws-data-faker/apiGateway';
const event = proxyEvent.createAPIGatewayProxyEvent({ body: 'Some event body' });
console.log(event)
{
body: 'Some event body',
headers: {},
multiValueHeaders: {},
httpMethod: '',
isBase64Encoded: false,
path: '',
pathParameters: null,
queryStringParameters: null,
multiValueQueryStringParameters: null,
stageVariables: null,
requestContext: {
accountId: '359400424592',
apiId: '1.0',
authorizer: null,
connectedAt: undefined,
connectionId: undefined,
domainName: undefined,
domainPrefix: undefined,
eventType: undefined,
extendedRequestId: undefined,
protocol: 'http',
httpMethod: 'GET',
identity: {
accessKey: null,
accountId: null,
apiKey: null,
apiKeyId: null,
caller: null,
clientCert: null,
cognitoAuthenticationProvider: null,
cognitoAuthenticationType: null,
cognitoIdentityId: null,
cognitoIdentityPoolId: null,
principalOrgId: null,
sourceIp: '127.0.0.1',
user: null,
userAgent: null,
userArn: null
},
messageDirection: undefined,
messageId: undefined,
path: '',
stage: '$default',
requestId: 'c22c67e6-b8e3-475c-bc1d-7935ef3deb0d',
requestTime: undefined,
requestTimeEpoch: 1724353818806,
resourceId: '',
resourcePath: '',
routeKey: undefined
},
resource: ''
}
Supported AWS Types
More services will be added over time. Contributions are welcome!
The following AWS Types are currently supported:
Account
- ARN
- build ARN String from an ARN object
API Gateway
- APIGatewayProxyEvent
- ApiGatewayProxyEventV2
- APIGatewayProxyEventV2RequestContext
- APIGatewayProxyEventV2RequestContextHttp
CloudWatch
Provides some additional zip/unzip utility functions
- CloudWatchLogsLogEvent
- CloudWatchLogsDecodedData
DynamoDB
Provides a marshall/unmarshall utility method using types
- DynamoDBRecord
- StreamRecord
Kinesis
- KinesisStreamEvent
- KinesisStreamRecord
- KinesisStreamRecordPayload
Lambda
- ClientContext
- ClientContextClient
- ClientContextEnv
- Context
S3
- S3EventRecord
- RecordBucket
- RecordObject
- Record
SNS
- SNSEventRecord
- SNSMessage
SQS
- SQSRecordAttributes
- SQSMessageAttributes
- SQSRecord
Contributing
We welcome contributions! Please see our contributing guide for details on how to get started.
License
This project is licensed under the MIT License - see the LICENSE file for details.