/serverless-testing

Library for testing serverless applications

Primary LanguageTypeScriptMIT LicenseMIT

@dustfoundation/serverless-testing

CI NPM Version Minimum Node.js Version

Library for testing serverless applications.

Installation

npm install --save @dustfoundation/serverless-testing

Features

Mock API Gateway Proxy Handler

import { mockAPIGatewayProxyHandler } from '@dustfoundation/serverless-testing';
import { expect } from 'chai';

describe('simple test', () => {
  it('GIVEN valid data THEN 201', async () => {
    // mockAPIGatewayProxyHandler.execute<T> - T is optional generic that describes response body type
    const { statusCode, body } = await mockAPIGatewayProxyHandler(handler)
      .execute<{ users: string[] }>({
        event: {
          pathParameters: { field: 'some' },
          queryStringParameters: { field: 'some' },
          body: JSON.stringify({ field: 'some' }),
          headers: { field: 'some' },
          requestContext: {
            authorizer: {
              id: 'YourCustomAuthorizerId',
              groups: ['YourCustomAuthorizerGroup1', 'YourCustomAuthorizerGroup2'].join(';'),
            },
          },
        },
        responseToJson: true,
      });

    expect(statusCode).eql(201);
    expect(body.users).lengthOf(5);
  });
});

Mock DynamoDB Stream Handler

import { mockDDBStreamHandler } from '@dustfoundation/serverless-testing';
import { expect } from 'chai';

describe('simple test', () => {
  it('GIVEN valid data THEN success', async () => {
    await mockDDBStreamHandler(handler).execute({
      records: [], // DynamoDB Stream Records
    });

    // You can test handler with .commandCalls(), etc...
  });
});

Mock SNS Handler

import { mockSNSHandler } from '@dustfoundation/serverless-testing';
import { expect } from 'chai';

describe('simple test', () => {
  it('GIVEN valid data THEN success', async () => {
    await mockSNSHandler(handler).execute({
      records: [], // SNS Records
    });

    // You can test handler with .commandCalls(), etc...
  });
});

Mock SQS Handler

import { mockSQSHandler } from '@dustfoundation/serverless-testing';
import { expect } from 'chai';

describe('simple test', () => {
  it('GIVEN valid data THEN success', async () => {
    await mockSQSHandler(handler).execute({
      records: [], // SQS Records
    });

    // You can test handler with .commandCalls(), etc...
  });
});