UNPKG

@skazka/aws

Version:
95 lines (77 loc) 2.59 kB
const { DynamoDB } = require('aws-sdk'); const { expect } = require('../../../test.config'); const { isDev, getLocalhost, getRegion } = require('../env'); const { init, clear } = require('./fake'); const { dynamoDB, dynamoDBClient } = require('./client'); describe('DynamoDB client test', () => { const TableName = 'users-dev'; before(async () => { await init(); }); after(async () => { await clear(); }); it('It should test client', async () => { expect(dynamoDB).to.be.an.instanceof(DynamoDB); expect(dynamoDBClient).to.be.an.instanceof(DynamoDB.DocumentClient); }); it('It should test connection parameters', async () => { expect(isDev()).to.be.true(); expect(getRegion()).to.be.equal('us-east-1'); expect(getLocalhost()).to.be.equal('localhost'); }); it('It should test dynamoDB', async () => { const tableInfo = await dynamoDB.describeTable({ TableName }).promise(); expect(tableInfo).to.containSubset({ Table: { TableName: 'users-dev', AttributeDefinitions: [ { AttributeName: 'email', AttributeType: 'S', }, ], KeySchema: [ { AttributeName: 'email', KeyType: 'HASH', }, ], TableStatus: 'ACTIVE', TableSizeBytes: 0, ItemCount: 0, TableArn: 'arn:aws:dynamodb:us-east-1:000000000000:table/users-dev', BillingModeSummary: { BillingMode: 'PAY_PER_REQUEST', }, StreamSpecification: { StreamEnabled: true, StreamViewType: 'NEW_AND_OLD_IMAGES', }, }, }); }); it('It should test dynamoDBClient', async () => { const create = (user) => dynamoDBClient.put({ TableName, Item: user }).promise(); const get = (email) => ( dynamoDBClient.get({ TableName, Key: { email } }).promise() ).then((result) => result.Item); const getAll = () => ( dynamoDBClient.scan({ TableName }).promise() ).then((result) => result.Items); const remove = (email) => dynamoDBClient.delete({ TableName, Key: { email } }).promise(); const user = { email: 'test@test.test', name: 'test', }; await create(user); const savedUser = await get('test@test.test'); expect(savedUser).to.be.eql(user); const savedUsers = await getAll(); expect(savedUsers.length).to.be.equal(1); expect(savedUsers[0]).to.be.eql(user); await remove('test@test.test'); const users = await getAll(); expect(users.length).to.be.equal(0); }); });