npm package: @gustomedialab/mock-aws-events
Description: Event Mocks is a simple library designed to generate simple AWS events for testing and automation purposes.
Author: Serverless, Inc.
Latest version: 1.0.4

# mock-aws-events

## Context
This library is a fork of the (currently unmaintained) [@serverless/event-mocks](https://github.com/serverless/event-mocks) package. It was created to publish bug fixes and PRs that were blocking development. If [@serverless/event-mocks](https://github.com/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:
- [x] API Gateway
- [x] SNS
- [x] SQS
- [x] DynamoDB
- [x] S3
- [x] Scheduled
- [x] Websocket
- [x] Alexa Skill
- [x] Alexa Smart Home
- [x] CloudWatch
- [x] CloudWatch Log
- [x] Cognito Pool
- [x] IoT

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

## Installation

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

## Usage

### SNS

```js
import createEvent from "mock-aws-events"

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

### API Gateway

```js
import createEvent from "mock-aws-events"

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

### S3

```js
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

```js
import createEvent from "mock-aws-events"

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

### Kinesis

```js
import createEvent from "mock-aws-events"

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

### Dynamo

```js
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

```js
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

```js
import createEvent from "mock-aws-events"

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

### CloudWatchLog event

```js
import createEvent from "mock-aws-events"

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

### Alexa Skill event

```js
import createEvent from "mock-aws-events"

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

### Alexa SmartHome event
```js
import createEvent from "mock-aws-events"

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

### IoT event
```js
import createEvent from "mock-aws-events"

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

### Cognito Pool Event
```js
import createEvent from "mock-aws-events"

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