https://github.com/serverless/event-mocks
https://github.com/serverless/event-mocks
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/serverless/event-mocks
- Owner: serverless
- Created: 2019-04-15T19:03:52.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-12-01T18:37:35.000Z (over 1 year ago)
- Last Synced: 2025-04-18T07:51:34.140Z (about 2 months ago)
- Language: TypeScript
- Size: 15 MB
- Stars: 72
- Watchers: 20
- Forks: 16
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Event Mocks
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] IoTThe 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.
## Usage
### SNS
```js
import createEvent from "@serverless/event-mocks"const mocked = createEvent(
"aws:sns",
{
Records: [{
Sns: {
Message: "trigger-email"
}
}]
});
```### API Gateway
```js
import createEvent from "@serverless/event-mocks"const event = createEvent(
"aws:apiGateway",
{
body: {
first_name: "Sam",
last_name: "Smith"
}
});
```### S3
```js
import createEvent from "@serverless/event-mocks"const event = createEvent(
"aws:s3",
{
Records: [{
eventName: "ObjectCreated:Put",
s3: {
bucket: {
name: "my-bucket-name"
},
object: {
key: "object-key"
}
}
}]
});
```### Scheduled
```js
import createEvent from "@serverless/event-mocks"const event = createEvent(
"aws:scheduled",
{
region: "us-west-2"
});
```### Kinesis
```js
import createEvent from "@serverless/event-mocks"const event = createEvent(
"aws:kinesis",
{
data: new Buffer("this is test data").toString("base64")
});
```### Dynamo
```js
import createEvent from "@serverless/event-mocks"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
const event = createEvent("aws:websocket", {
body: {
first_name: "Sam",
last_name: "Smith",
},
requestContext: {
connectedAt: 123,
connectionId: "abc123",
},
});
```
### CloudWatch event```js
const event = createEvent("aws:cloudWatch", {
"detail-type": "Something has been deleted.",
"region": "us-east-1"
});
```### CloudWatchLog event
```js
const event = createEvent("aws:cloudWatchLog", {
awslogs: {
data: "Some gzipped, then base64 encoded data",
}
});
```### Alexa Skill event
```js
const event = createEvent("aws:alexaSkill", {
request: {
type: "CanFulfillIntentRequest",
},
context: {
System: {
device: {
deviceId: "myDevice",
},
},
},
}
```### Alexa SmartHome event
```js
const event = createEvent("aws:alexaSmartHome", {
payload: {
switchControlAction: "TURN_OFF",
},
}
```### IoT event
```js
const event = createEvent("aws:iot", {
this: {
can: {
be: "anything I want",
},
}
```### Cognito Pool Event
```js
const event = createEvent("aws:cognitoUserPool", {
userName: "Aaron Stuyvenberg",
}
```