scim-patch-with-remove
Version:
SCIM Patch operation (rfc7644).
69 lines (61 loc) • 2.21 kB
text/typescript
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();
});
});