1.0.3 • Published 10 months ago

@nexus-navigators/aws-data-faker v1.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

aws-data-faker

AWS Data Stubs for Unit Testing

npm version npm downloads Continuous Integration codecov

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.

1.0.2

10 months ago

1.0.1

10 months ago

1.0.3

10 months ago

1.0.0

10 months ago