| 
									
										
										
										
											2023-10-30 23:51:53 +01:00
										 |  |  | const {describeEtapi, postEtapi, getEtapi, getEtapiContent, patchEtapi, putEtapi, putEtapiContent} = require("../support/etapi"); | 
					
						
							|  |  |  | const crypto = require('crypto'); | 
					
						
							|  |  |  | const {deleteEtapi, getEtapiResponse} = require("../support/etapi.js"); | 
					
						
							| 
									
										
										
										
											2023-10-29 23:24:11 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | describeEtapi("notes", () => { | 
					
						
							|  |  |  |     it("create", async () => { | 
					
						
							|  |  |  |         const {note, branch} = await postEtapi('create-note', { | 
					
						
							|  |  |  |             parentNoteId: 'root', | 
					
						
							|  |  |  |             type: 'text', | 
					
						
							|  |  |  |             title: 'Hello World!', | 
					
						
							|  |  |  |             content: 'Content', | 
					
						
							|  |  |  |             prefix: 'Custom prefix' | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         expect(note.title).toEqual("Hello World!"); | 
					
						
							|  |  |  |         expect(branch.parentNoteId).toEqual("root"); | 
					
						
							|  |  |  |         expect(branch.prefix).toEqual("Custom prefix"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const rNote = await getEtapi(`notes/${note.noteId}`); | 
					
						
							|  |  |  |         expect(rNote.title).toEqual("Hello World!"); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-30 23:51:53 +01:00
										 |  |  |         const rContent = await (await getEtapiContent(`notes/${note.noteId}/content`)).text(); | 
					
						
							| 
									
										
										
										
											2023-10-29 23:24:11 +01:00
										 |  |  |         expect(rContent).toEqual("Content"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const rBranch = await getEtapi(`branches/${branch.branchId}`); | 
					
						
							|  |  |  |         expect(rBranch.parentNoteId).toEqual("root"); | 
					
						
							|  |  |  |         expect(rBranch.prefix).toEqual("Custom prefix"); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2023-10-30 23:51:53 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     it("patch", async () => { | 
					
						
							|  |  |  |         const {note} = await postEtapi('create-note', { | 
					
						
							|  |  |  |             parentNoteId: 'root', | 
					
						
							|  |  |  |             type: 'text', | 
					
						
							|  |  |  |             title: 'Hello World!', | 
					
						
							|  |  |  |             content: 'Content' | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         await patchEtapi(`notes/${note.noteId}`, { | 
					
						
							|  |  |  |             title: 'new title', | 
					
						
							|  |  |  |             type: 'code', | 
					
						
							|  |  |  |             mime: 'text/apl', | 
					
						
							|  |  |  |             dateCreated: '2000-01-01 12:34:56.999+0200', | 
					
						
							|  |  |  |             utcDateCreated: '2000-01-01 10:34:56.999Z', | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const rNote = await getEtapi(`notes/${note.noteId}`); | 
					
						
							|  |  |  |         expect(rNote.title).toEqual("new title"); | 
					
						
							|  |  |  |         expect(rNote.type).toEqual("code"); | 
					
						
							|  |  |  |         expect(rNote.mime).toEqual("text/apl"); | 
					
						
							|  |  |  |         expect(rNote.dateCreated).toEqual("2000-01-01 12:34:56.999+0200"); | 
					
						
							|  |  |  |         expect(rNote.utcDateCreated).toEqual("2000-01-01 10:34:56.999Z"); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it("update content", async () => { | 
					
						
							|  |  |  |         const {note} = await postEtapi('create-note', { | 
					
						
							|  |  |  |             parentNoteId: 'root', | 
					
						
							|  |  |  |             type: 'text', | 
					
						
							|  |  |  |             title: 'Hello World!', | 
					
						
							|  |  |  |             content: 'Content' | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         await putEtapiContent(`notes/${note.noteId}/content`, "new content"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const rContent = await (await getEtapiContent(`notes/${note.noteId}/content`)).text(); | 
					
						
							|  |  |  |         expect(rContent).toEqual("new content"); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it("create / update binary content", async () => { | 
					
						
							|  |  |  |         const {note} = await postEtapi('create-note', { | 
					
						
							|  |  |  |             parentNoteId: 'root', | 
					
						
							|  |  |  |             type: 'file', | 
					
						
							|  |  |  |             title: 'Hello World!', | 
					
						
							|  |  |  |             content: 'ZZZ' | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const updatedContent = crypto.randomBytes(16); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         await putEtapiContent(`notes/${note.noteId}/content`, updatedContent); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const rContent = await (await getEtapiContent(`notes/${note.noteId}/content`)).arrayBuffer(); | 
					
						
							|  |  |  |         expect(Buffer.from(new Uint8Array(rContent))).toEqual(updatedContent); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it("delete note", async () => { | 
					
						
							|  |  |  |         const {note} = await postEtapi('create-note', { | 
					
						
							|  |  |  |             parentNoteId: 'root', | 
					
						
							|  |  |  |             type: 'text', | 
					
						
							|  |  |  |             title: 'Hello World!', | 
					
						
							|  |  |  |             content: 'Content' | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         await deleteEtapi(`notes/${note.noteId}`); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const resp = await getEtapiResponse(`notes/${note.noteId}`); | 
					
						
							|  |  |  |         expect(resp.status).toEqual(404); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const error = await resp.json(); | 
					
						
							|  |  |  |         expect(error.status).toEqual(404); | 
					
						
							|  |  |  |         expect(error.code).toEqual("NOTE_NOT_FOUND"); | 
					
						
							|  |  |  |         expect(error.message).toEqual(`Note '${note.noteId}' not found.`); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2023-10-29 23:24:11 +01:00
										 |  |  | }); |