UNPKG

synctos

Version:

The Syncmaker. A tool to build comprehensive sync functions for Couchbase Sync Gateway.

100 lines (84 loc) 3.37 kB
const { expect } = require('chai'); const sampleSpecHelperMaker = require('./helpers/sample-spec-helper-maker'); const testFixtureMaker = require('../src/testing/test-fixture-maker'); describe('Sample business notification transport doc definition', () => { const testFixture = testFixtureMaker.initFromSyncFunction('build/sync-functions/test-sample-sync-function.js'); const errorFormatter = testFixture.validationErrorFormatter; const sampleSpecHelper = sampleSpecHelperMaker.init(testFixture); afterEach(() => { testFixture.resetTestEnvironment(); }); const expectedDocType = 'notificationTransport'; const expectedBasePrivilege = 'NOTIFICATIONS_CONFIG'; function verifyAuthorizationCustomAction(docId, action) { expect(testFixture.testEnvironment.requireAccess.callCount).to.equal(2); expect(testFixture.testEnvironment.requireAccess.calls[1].arg).to.equal(`${docId}-${action}`); } function verifyNoAuthorizationCustomAction() { expect(testFixture.testEnvironment.requireAccess.callCount).to.equal(1); } it('successfully creates a valid notification transport document', () => { const doc = { _id: 'biz.82.notificationTransport.ABC', type: 'email', recipient: 'foo.bar@example.com' }; sampleSpecHelper.verifyDocumentCreated(expectedBasePrivilege, 82, doc); verifyNoAuthorizationCustomAction(); }); it('cannot create a notification transport document when the properties are invalid', () => { const doc = { _id: 'biz.75.notificationTransport.ABC', recipient: '' }; sampleSpecHelper.verifyDocumentNotCreated( expectedBasePrivilege, 75, doc, expectedDocType, [ errorFormatter.requiredValueViolation('type'), errorFormatter.mustNotBeEmptyViolation('recipient') ]); verifyNoAuthorizationCustomAction(); }); it('successfully replaces a valid notification transport document', () => { const doc = { _id: 'biz.38.notificationTransport.ABC', type: 'email', recipient: 'different.foo.bar@example.com' }; const oldDoc = { _id: 'biz.38.notificationTransport.ABC', type: 'email', recipient: 'foo.bar@example.com' }; sampleSpecHelper.verifyDocumentReplaced(expectedBasePrivilege, 38, doc, oldDoc); verifyAuthorizationCustomAction(doc._id, 'replace'); }); it('cannot replace a notification transport document when the properties are invalid', () => { const doc = { _id: 'biz.73.notificationTransport.ABC', type: 23, }; const oldDoc = { _id: 'biz.73.notificationTransport.ABC', type: 'email', recipient: 'foo.bar@example.com' }; sampleSpecHelper.verifyDocumentNotReplaced( expectedBasePrivilege, 73, doc, oldDoc, expectedDocType, [ errorFormatter.typeConstraintViolation('type', 'string'), errorFormatter.requiredValueViolation('recipient') ]); verifyAuthorizationCustomAction(doc._id, 'replace'); }); it('successfully deletes a notification transport document', () => { const oldDoc = { _id: 'biz.14.notificationTransport.ABC', type: 'email', recipient: 'different.foo.bar@example.com' }; sampleSpecHelper.verifyDocumentDeleted(expectedBasePrivilege, 14, oldDoc); verifyAuthorizationCustomAction(oldDoc._id, 'delete'); }); });