From 6293bf72b25e32b987bb238bd69a52f0e9b38d19 Mon Sep 17 00:00:00 2001 From: Philip Molares Date: Sun, 21 Aug 2022 13:25:25 +0200 Subject: [PATCH] test(private-api): add test for get note metadata call Signed-off-by: Philip Molares --- test/private-api/notes.e2e-spec.ts | 65 ++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/test/private-api/notes.e2e-spec.ts b/test/private-api/notes.e2e-spec.ts index b591ac3c0..12891efe7 100644 --- a/test/private-api/notes.e2e-spec.ts +++ b/test/private-api/notes.e2e-spec.ts @@ -196,6 +196,71 @@ describe('Notes', () => { }); }); + describe('GET /notes/{note}/metadata', () => { + it('returns complete metadata object', async () => { + const noteAlias = 'metadata_test_note'; + await testSetup.notesService.createNote(content, user, noteAlias); + const metadata = await agent + .get(`/api/private/notes/${noteAlias}/metadata`) + .expect('Content-Type', /json/) + .expect(200); + expect(typeof metadata.body.id).toEqual('string'); + expect(metadata.body.aliases[0].name).toEqual(noteAlias); + expect(metadata.body.primaryAddress).toEqual(noteAlias); + expect(metadata.body.title).toEqual(''); + expect(metadata.body.description).toEqual(''); + expect(typeof metadata.body.createdAt).toEqual('string'); + expect(metadata.body.editedBy).toEqual([]); + expect(metadata.body.permissions.owner).toEqual('hardcoded'); + expect(metadata.body.permissions.sharedToUsers).toEqual([]); + expect(metadata.body.permissions.sharedToUsers).toEqual([]); + expect(metadata.body.tags).toEqual([]); + expect(typeof metadata.body.updatedAt).toEqual('string'); + expect(typeof metadata.body.updateUsername).toEqual('string'); + expect(typeof metadata.body.viewCount).toEqual('number'); + expect(metadata.body.editedBy).toEqual([]); + }); + + it('fails with a forbidden alias', async () => { + await agent + .get(`/api/private/notes/${forbiddenNoteId}/metadata`) + .expect('Content-Type', /json/) + .expect(400); + }); + + it('fails with non-existing alias', async () => { + // check if a missing note correctly returns 404 + await agent + .get('/api/private/notes/i_dont_exist/metadata') + .expect('Content-Type', /json/) + .expect(404); + }); + + it('has the correct update/create dates', async () => { + const noteAlias = 'metadata_test_note_date'; + // create a note + const note = await testSetup.notesService.createNote( + content, + user, + noteAlias, + ); + // save the creation time + const createDate = note.createdAt; + const revisions = await note.revisions; + const updatedDate = revisions[revisions.length - 1].createdAt; + // wait one second + await new Promise((r) => setTimeout(r, 1000)); + // update the note + await testSetup.notesService.updateNote(note, 'More test content'); + const metadata = await agent + .get(`/api/private/notes/${noteAlias}/metadata`) + .expect('Content-Type', /json/) + .expect(200); + expect(metadata.body.createdAt).toEqual(createDate.toISOString()); + expect(metadata.body.updatedAt).not.toEqual(updatedDate.toISOString()); + }); + }); + describe('GET /notes/{note}/revisions', () => { it('works with existing alias', async () => { await testSetup.notesService.createNote(content, user, 'test4');