UNPKG

scim-patch-with-remove

Version:
69 lines (61 loc) 2.21 kB
import {NoPathInScimPatchOp, patchBodyValidation} from '../src/scimPatch'; import {expect} from 'chai'; import {InvalidScimPatchRequest} from '../src/errors/scimErrors'; describe('PATCH Validation', () => { it('Missing Schemas', done => { const patch: any = { Operations: [{ op: 'replace', value: false, path: 'active' }] }; expect(() => patchBodyValidation(patch)).to.throw(InvalidScimPatchRequest); return done(); }); it('Missing Operations', done => { const patch: any = { schemas: ['urn:ietf:params:scim:api:messages:2.0:PatchOp'] }; expect(() => patchBodyValidation(patch)).to.throw(InvalidScimPatchRequest); return done(); }); it('Invalid operation', done => { const patch: any = { schemas: ['urn:ietf:params:scim:api:messages:2.0:PatchOp'], Operations: [{ op: 'toto', value: false, path: 'active' }] }; expect(() => patchBodyValidation(patch)).to.throw(InvalidScimPatchRequest); return done(); }); it('Operation remove without path', done => { const patch: any = { schemas: ['urn:ietf:params:scim:api:messages:2.0:PatchOp'], Operations: [{ op: 'remove' }] }; expect(() => patchBodyValidation(patch)).to.throw(NoPathInScimPatchOp); return done(); }); it('Operation add without value', done => { const patch: any = { schemas: ['urn:ietf:params:scim:api:messages:2.0:PatchOp'], Operations: [{ op: 'add', path: 'active' }] }; expect(() => patchBodyValidation(patch)).to.throw(InvalidScimPatchRequest); return done(); }); it('Path is not a string', done => { const patch: any = { schemas: ['urn:ietf:params:scim:api:messages:2.0:PatchOp'], Operations: [{ op: 'add', path: true, value: 'toto' }] }; expect(() => patchBodyValidation(patch)).to.throw(InvalidScimPatchRequest); return done(); }); });