Add config for objectId size (#3950)
* Add objectId config property, default to 10 * Update Config constructor * Add test for backwards compatibility when changing objectId size
This commit is contained in:
committed by
Natan Rolnik
parent
bd6816c14c
commit
51d2dd92cb
@@ -63,6 +63,10 @@ describe('newObjectId', () => {
|
||||
expect(cryptoUtils.newObjectId().length).toBeGreaterThan(9);
|
||||
});
|
||||
|
||||
it('returns result with required number of characters', () => {
|
||||
expect(cryptoUtils.newObjectId(42).length).toBe(42);
|
||||
});
|
||||
|
||||
it('returns unique results', () => {
|
||||
expect(givesUniqueResults(() => cryptoUtils.newObjectId(), 100)).toBe(true);
|
||||
});
|
||||
|
||||
@@ -23,11 +23,55 @@ describe('rest create', () => {
|
||||
expect(results.length).toEqual(1);
|
||||
var obj = results[0];
|
||||
expect(typeof obj.objectId).toEqual('string');
|
||||
expect(obj.objectId.length).toEqual(10);
|
||||
expect(obj._id).toBeUndefined();
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('can use custom _id size', done => {
|
||||
config.objectIdSize = 20;
|
||||
rest.create(config, auth.nobody(config), 'Foo', {})
|
||||
.then(() => database.adapter.find('Foo', { fields: {} }, {}, {}))
|
||||
.then((results) => {
|
||||
expect(results.length).toEqual(1);
|
||||
var obj = results[0];
|
||||
expect(typeof obj.objectId).toEqual('string');
|
||||
expect(obj.objectId.length).toEqual(20);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('is backwards compatible when _id size changes', done => {
|
||||
rest.create(config, auth.nobody(config), 'Foo', {size: 10})
|
||||
.then(() => {
|
||||
config.objectIdSize = 20;
|
||||
return rest.find(config, auth.nobody(config), 'Foo', {size: 10});
|
||||
})
|
||||
.then((response) => {
|
||||
expect(response.results.length).toEqual(1);
|
||||
expect(response.results[0].objectId.length).toEqual(10);
|
||||
return rest.update(config, auth.nobody(config), 'Foo', {objectId: response.results[0].objectId}, {update: 20});
|
||||
})
|
||||
.then(() => {
|
||||
return rest.find(config, auth.nobody(config), 'Foo', {size: 10});
|
||||
}).then((response) => {
|
||||
expect(response.results.length).toEqual(1);
|
||||
expect(response.results[0].objectId.length).toEqual(10);
|
||||
expect(response.results[0].update).toEqual(20);
|
||||
return rest.create(config, auth.nobody(config), 'Foo', {size: 20});
|
||||
})
|
||||
.then(() => {
|
||||
config.objectIdSize = 10;
|
||||
return rest.find(config, auth.nobody(config), 'Foo', {size: 20});
|
||||
})
|
||||
.then((response) => {
|
||||
expect(response.results.length).toEqual(1);
|
||||
expect(response.results[0].objectId.length).toEqual(20);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('handles array, object, date', (done) => {
|
||||
const now = new Date();
|
||||
var obj = {
|
||||
|
||||
Reference in New Issue
Block a user