155 lines
4.3 KiB
JavaScript
155 lines
4.3 KiB
JavaScript
// These tests are unit tests designed to only test transform.js.
|
|
|
|
var transform = require('../transform');
|
|
|
|
var dummyConfig = {
|
|
schema: {
|
|
data: {},
|
|
getExpectedType: function(className, key) {
|
|
if (key == 'userPointer') {
|
|
return '*_User';
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
};
|
|
|
|
|
|
describe('transformCreate', () => {
|
|
|
|
it('a basic number', (done) => {
|
|
var input = {five: 5};
|
|
var output = transform.transformCreate(dummyConfig, null, input);
|
|
jequal(input, output);
|
|
done();
|
|
});
|
|
|
|
it('built-in timestamps', (done) => {
|
|
var input = {
|
|
createdAt: "2015-10-06T21:24:50.332Z",
|
|
updatedAt: "2015-10-06T21:24:50.332Z"
|
|
};
|
|
var output = transform.transformCreate(dummyConfig, null, input);
|
|
expect(output._created_at instanceof Date).toBe(true);
|
|
expect(output._updated_at instanceof Date).toBe(true);
|
|
done();
|
|
});
|
|
|
|
it('array of pointers', (done) => {
|
|
var pointer = {
|
|
__type: 'Pointer',
|
|
objectId: 'myId',
|
|
className: 'Blah',
|
|
};
|
|
var out = transform.transformCreate(dummyConfig, null, {pointers: [pointer]});
|
|
jequal([pointer], out.pointers);
|
|
done();
|
|
});
|
|
|
|
it('a delete op', (done) => {
|
|
var input = {deleteMe: {__op: 'Delete'}};
|
|
var output = transform.transformCreate(dummyConfig, null, input);
|
|
jequal(output, {});
|
|
done();
|
|
});
|
|
|
|
it('basic ACL', (done) => {
|
|
var input = {ACL: {'0123': {'read': true, 'write': true}}};
|
|
var output = transform.transformCreate(dummyConfig, null, input);
|
|
// This just checks that it doesn't crash, but it should check format.
|
|
done();
|
|
});
|
|
});
|
|
|
|
describe('transformWhere', () => {
|
|
it('objectId', (done) => {
|
|
var out = transform.transformWhere(dummyConfig, null, {objectId: 'foo'});
|
|
expect(out._id).toEqual('foo');
|
|
done();
|
|
});
|
|
|
|
it('objectId in a list', (done) => {
|
|
var input = {
|
|
objectId: {'$in': ['one', 'two', 'three']},
|
|
};
|
|
var output = transform.transformWhere(dummyConfig, null, input);
|
|
jequal(input.objectId, output._id);
|
|
done();
|
|
});
|
|
});
|
|
|
|
describe('untransformObject', () => {
|
|
it('built-in timestamps', (done) => {
|
|
var input = {createdAt: new Date(), updatedAt: new Date()};
|
|
var output = transform.untransformObject(dummyConfig, null, input);
|
|
expect(typeof output.createdAt).toEqual('string');
|
|
expect(typeof output.updatedAt).toEqual('string');
|
|
done();
|
|
});
|
|
});
|
|
|
|
describe('transformKey', () => {
|
|
it('throws out _password', (done) => {
|
|
try {
|
|
transform.transformKey(dummyConfig, '_User', '_password');
|
|
fail('should have thrown');
|
|
} catch (e) {
|
|
done();
|
|
}
|
|
});
|
|
});
|
|
|
|
describe('transform schema key changes', () => {
|
|
|
|
it('changes new pointer key', (done) => {
|
|
var input = {
|
|
somePointer: {__type: 'Pointer', className: 'Micro', objectId: 'oft'}
|
|
};
|
|
var output = transform.transformCreate(dummyConfig, null, input);
|
|
expect(typeof output._p_somePointer).toEqual('string');
|
|
expect(output._p_somePointer).toEqual('Micro$oft');
|
|
done();
|
|
});
|
|
|
|
it('changes existing pointer keys', (done) => {
|
|
var input = {
|
|
userPointer: {__type: 'Pointer', className: '_User', objectId: 'qwerty'}
|
|
};
|
|
var output = transform.transformCreate(dummyConfig, null, input);
|
|
expect(typeof output._p_userPointer).toEqual('string');
|
|
expect(output._p_userPointer).toEqual('_User$qwerty');
|
|
done();
|
|
});
|
|
|
|
it('changes ACL storage to _rperm and _wperm', (done) => {
|
|
var input = {
|
|
ACL: {
|
|
"*": { "read": true },
|
|
"Kevin": { "write": true }
|
|
}
|
|
};
|
|
var output = transform.transformCreate(dummyConfig, null, input);
|
|
expect(typeof output._rperm).toEqual('object');
|
|
expect(typeof output._wperm).toEqual('object');
|
|
expect(output.ACL).toBeUndefined();
|
|
expect(output._rperm[0]).toEqual('*');
|
|
expect(output._wperm[0]).toEqual('Kevin');
|
|
done();
|
|
});
|
|
|
|
it('untransforms from _rperm and _wperm to ACL', (done) => {
|
|
var input = {
|
|
_rperm: ["*"],
|
|
_wperm: ["Kevin"]
|
|
};
|
|
var output = transform.untransformObject(dummyConfig, null, input);
|
|
expect(typeof output.ACL).toEqual('object');
|
|
expect(output._rperm).toBeUndefined();
|
|
expect(output._wperm).toBeUndefined();
|
|
expect(output.ACL['*']['read']).toEqual(true);
|
|
expect(output.ACL['Kevin']['write']).toEqual(true);
|
|
done();
|
|
});
|
|
|
|
});
|