Skip to content

A small library that includes details mocks of AWS Lambda event sources. Useful for use when unit testing your Lambda functions. Fork of unmaintained repo.

Metronome-Industries/node-mock-aws-events

 
 

Repository files navigation

mock-aws-events

Context

This library is a fork of the (currently unmaintained) @serverless/event-mocks package. It was created to publish bug fixes and PRs that were blocking development. If @serverless/event-mocks is actively developed again, this package can be deprecated.

A small library that includes details mocks of AWS Lambda event sources. Useful for use when unit testing your Lambda functions. Supported Event Sources are:

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

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

Installation

npm install mock-aws-events --save-dev

Usage

SNS

import createEvent from "mock-aws-events"

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

API Gateway

import createEvent from "mock-aws-events"

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

S3

import createEvent from "mock-aws-events"

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

Scheduled

import createEvent from "mock-aws-events"

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

Kinesis

import createEvent from "mock-aws-events"

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

Dynamo

import createEvent from "mock-aws-events"

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

import createEvent from "mock-aws-events"

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

CloudWatch event

import createEvent from "mock-aws-events"

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

CloudWatchLog event

import createEvent from "mock-aws-events"

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

Alexa Skill event

import createEvent from "mock-aws-events"

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

Alexa SmartHome event

import createEvent from "mock-aws-events"

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

IoT event

import createEvent from "mock-aws-events"

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

Cognito Pool Event

import createEvent from "mock-aws-events"

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

About

A small library that includes details mocks of AWS Lambda event sources. Useful for use when unit testing your Lambda functions. Fork of unmaintained repo.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 100.0%