Skip to content

Commit 41510ca

Browse files
committed
Reuse draft token and enketoId after encrypting project
1 parent 59b5458 commit 41510ca

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

lib/model/query/forms.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -423,8 +423,8 @@ const setManagedKey = (form, key, suffix) => ({ Forms }) => {
423423
work = work.then(() =>
424424
Forms.getByProjectAndXmlFormId(form.projectId, form.xmlFormId, true, Form.DraftVersion)
425425
.then((option) => option.get()) // in transaction; guaranteed
426-
.then((draftForm) => draftForm.withManagedKey(key, suffix))
427-
.then((partial) => ((partial === false) ? null : Forms.createVersion(partial, form, false))));
426+
.then((draftForm) => draftForm.withManagedKey(key, suffix)
427+
.then((partial) => ((partial === false) ? null : Forms.createVersion(partial, draftForm, false)))));
428428

429429
return work;
430430
};

test/integration/api/projects.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -642,6 +642,22 @@ describe('api: /projects', () => {
642642
})
643643
])))));
644644

645+
it('should reuse the draft token and enketoId of an existing draft', testService(async (service) => {
646+
const asAlice = await service.login('alice');
647+
await asAlice.post('/v1/projects/1/forms/simple/draft').expect(200);
648+
const { body: draft1 } = await asAlice.get('/v1/projects/1/forms/simple/draft')
649+
.expect(200);
650+
should.exist(draft1.draftToken);
651+
should.exist(draft1.enketoId);
652+
await asAlice.post('/v1/projects/1/key')
653+
.send({ passphrase: 'supersecret' })
654+
.expect(200);
655+
const { body: draft2 } = await asAlice.get('/v1/projects/1/forms/simple/draft')
656+
.expect(200);
657+
should(draft2.draftToken).equal(draft1.draftToken);
658+
should(draft2.enketoId).equal(draft1.enketoId);
659+
}));
660+
645661
it('should modify only the draft if there is no published version', testService((service) =>
646662
service.login('alice', (asAlice) =>
647663
asAlice.post('/v1/projects/1/forms')

0 commit comments

Comments
 (0)