@gilbarbara/aws-events-mock
TypeScript icon, indicating that this package has built-in type declarations

0.1.1 • Public • Published

aws-events-mock

npm version CI Quality Gate Status

A small library that includes detailed mocks of AWS Lambda event sources.
Useful for unit testing your Lambda functions.

Supported Event Sources are:

  • Alexa Skill
  • Alexa Smart Home
  • API Gateway
  • CloudWatch
  • CloudWatch Log
  • Cognito Pool
  • DynamoDB
  • IoT
  • S3
  • Scheduled
  • SNS
  • SQS
  • WebSocket

The library uses default event source templates and merges them with any overwrite you provide.
Check out the JSON template files to learn more about the data structure of each event source.

Usage

npm i @gilbarbara/aws-events-mock

SNS

import createEvent from "@gilbarbara/aws-events-mock"

const mocked = createEvent(
  "aws:sns",
  {
    Records: [{
      Sns: {
        Message: "trigger-email"
      }
    }]
  });

API Gateway

import createEvent from "@gilbarbara/aws-events-mock"

const event = createEvent(
  "aws:apiGateway",
  {
    body: {
      first_name: "Sam",
      last_name: "Smith"
    }
  });

S3

import createEvent from "@gilbarbara/aws-events-mock"

const event = createEvent(
  "aws:s3",
  {
    Records: [{
      eventName: "ObjectCreated:Put",
      s3: {
        bucket: {
          name: "my-bucket-name"
        },
        object: {
          key: "object-key"
        }
      }
    }]
  });

Scheduled

import createEvent from "@gilbarbara/aws-events-mock"

const event = createEvent(
  "aws:scheduled",
  {
    region: "us-west-2"
  });

Kinesis

import createEvent from "@gilbarbara/aws-events-mock"

const event = createEvent(
  "aws:kinesis",
  {
    data: new Buffer("this is test data").toString("base64")
  });

Dynamo

import createEvent from "@gilbarbara/aws-events-mock"

const event = createEvent(
  "aws:dynamo",
  {
    Records: [
      {
      eventID: "1",
      eventVersion: "1.0",
      dynamodb: {
        Keys: {
          Id: {
            N: "101"
          }
        },
        NewImage: {
          Message: {
            S: "New item!"
          },
          Id: {
            N: "101"
          }
        },
        StreamViewType: "NEW_AND_OLD_IMAGES",
        SequenceNumber: "111",
        SizeBytes: 26
      },
      awsRegion: "us-west-2",
      eventName: "INSERT",
      eventSourceARN: "arn:aws:dynamodb:us-east-1:123456789012:table/images",
      eventSource: "aws:dynamodb"
      }
    ]
  });

WebSocket event

  const event = createEvent("aws:websocket", {
    body: {
      first_name: "Sam",
      last_name: "Smith",
    },
    requestContext: {
      connectedAt: 123,
      connectionId: "abc123",
    },
  });

CloudWatch event

  const event = createEvent("aws:cloudWatch", {
    "detail-type": "Something has been deleted.",
    "region": "us-east-1"
  });

CloudWatchLog event

  const event = createEvent("aws:cloudWatchLog", {
    awslogs: {
      data: "Some gzipped, then base64 encoded data",
    }
  });

Alexa Skill event

  const event = createEvent("aws:alexaSkill", {
    request: {
      type: "CanFulfillIntentRequest",
    },
    context: {
      System: {
        device: {
          deviceId: "myDevice",
        },
      },
    },
  });

Alexa SmartHome event

  const event = createEvent("aws:alexaSmartHome", {
    payload: {
      switchControlAction: "TURN_OFF",
    },
  });

IoT event

  const event = createEvent("aws:iot", {
    this: {
      can: {
        be: "anything I want",
      },
    }
  });

Cognito Pool Event

  const event = createEvent("aws:cognitoUserPool", {
    userName: "Aaron Stuyvenberg",
  });

Credits

This is a fork of @serverless/event-mocks. Thanks! ❤️

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i @gilbarbara/aws-events-mock

Weekly Downloads

2

Version

0.1.1

License

MIT

Unpacked Size

85.1 kB

Total Files

21

Last publish

Collaborators

  • gilbarbara